Talaabadaada koowaad ee Sayniska Xogta. Titanic

Eray hordhac ah oo gaaban

Waxaan aaminsanahay in aan sameyn karno waxyaabo badan haddii nala siiyo tilmaamo tallaabo-tallaabo ah oo noo sheegi kara waxa aan sameyneyno iyo sida loo sameeyo. Aniga qudhaydu waxaan xasuustaa waqtiyo nolosheyda ka mid ah oo aanan bilaabi karin wax sababtoo ah way adagtahay in la fahmo meesha aan wax ka bilaabo. Waxaa laga yaabaa, in mar internetka aad ku aragtay kelmada "Cilmiga Xogta" oo aad go'aansatay inaad ka fog tahay tan, dadka waxan sameeyana waxay ahaayeen meel ka baxsan, adduun kale. Maya, halkan ayay joogaan Iyo, laga yaabee, mahadsanid dadka ka socda goobtan, maqaal ayaa ka soo muuqday quudkaaga. Waxaa jira koorsooyin badan oo kaa caawin doona inaad la qabsato farsamadan, laakiin halkan waxaan kaa caawin doonaa inaad qaadato tallaabada ugu horreysa.

Hagaag, diyaar ma tahay? Aan isla markiiba kuu sheego inaad u baahan doonto inaad ogaato Python 3, maadaama taasi tahay waxa aan halkan ku isticmaali doono. Waxaan sidoo kale kugula talinayaa inaad horay ugu sii shubto Jupyter Notebook ama arag sida loo isticmaalo google colab.

Tallaabada Koowaad

Talaabadaada koowaad ee Sayniska Xogta. Titanic

Kaggle waa kaaliyahaaga muhiimka ah ee arrintan. Mabda 'ahaan, waad sameyn kartaa la'aanteed, laakiin tan waxaan kaga hadli doonaa maqaal kale. Kani waa madal lagu qabto tartamada Sayniska Xogta. Tartan kasta oo noocan oo kale ah, marxaladaha hore waxaad heli doontaa khibrad aan macquul ahayn oo ku saabsan xallinta dhibaatooyinka noocyada kala duwan, khibrad horumarineed iyo waayo-aragnimo ka shaqeynta koox, taas oo muhiim u ah waqtigeena.

Hawshayada halkaas ayaanu ka qaadi doonaa. Waxaa loo yaqaan "Titanic". Xaaladdu waa tan: saadaali in qof kastaa uu noolaan doono iyo in kale. Guud ahaan, hawsha qofka ku lug leh DS-ku waa ururinta xogta, habaynta, tababbarka qaabka, saadaalinta, iyo wixii la mid ah. Kaggle, waxaa naloo oggolaaday inaan ka gudubno heerka xog ururinta - waxaa lagu soo bandhigay goobta. Waxaan u baahanahay inaan soo dejino iyaga oo aan bilaabi karnaa!

Waxaad sidan u samayn kartaa sidan:

tab Data waxaa ku jira faylal ay ku jiraan xog

Talaabadaada koowaad ee Sayniska Xogta. Titanic

Talaabadaada koowaad ee Sayniska Xogta. Titanic

Waanu soo dejinay xogta, waxaanu diyaarinay buugaagta xusuus qorka ee Jupyter iyo...

Tallaabada Labaad

Sideen hadda u shubnaa xogtan?

Marka hore, aan soo dejino maktabadaha lagama maarmaanka ah:

import pandas as pd
import numpy as np

Pandas waxay noo ogolaan doontaa inaan soo dejino faylasha .csv si loo sii habeeyo.

Numpy ayaa loo baahan yahay si uu u matalo shaxda xogtayada sida matrix leh tirooyinka.
Horey u soco Aan soo qaadano faylka train.csv oo noo soo gal:

dataset = pd.read_csv('train.csv')

Waxaan tixraaci doonaa xulashadayada xogta train.csv anagoo adeegsanayna doorsoomayaasha xogta. Aan aragno waxa jira:

dataset.head()

Talaabadaada koowaad ee Sayniska Xogta. Titanic

Shaqada madaxa() waxay noo ogolaanaysaa inaan eegno dhawrka saf ee ugu horeeya ee xogta.

Tiirarka Badbaadiyey waa sida saxda ah natiijooyinkayada, kuwaas oo lagu yaqaan xogtan. Su'aasha hawsha, waxaan u baahanahay inaan saadaalino tiirka badbaadada ee xogta test.csv. Xogtan ayaa kaydisa macluumaadka ku saabsan rakaabka kale ee Titanic, taas oo annagu, xallinta dhibaatada, ma garanayno natiijada.

Haddaba, aynu shaxdayada u qaybinno xog ku-tiirsan oo madax-bannaan. Wax walba waa sahlan yihiin halkan. Xogta ku-tiirsanaanta waa xogtaas ku xiran xogta madaxbannaan ee ku jirta natiijooyinka. Xogta madaxbannaan waa xogtaas saameynaysa natiijada.

Tusaale ahaan, waxaanu haynaa xogta soo socota:

"Vova waxay baray sayniska kombiyuutarka - maya.
Vova waxay heshay 2 cilmiga kumbuyuutarka."

Darajada sayniska kumbuyuutarku waxay kuxirantahay jawaabta su'aasha: Vova ma bartay cilmiga kumbuyuutarka? Ma caddahay? Aan hore u socono, waxaan mar horeba ku dhownahay yoolka!

Doorsoomka dhaqameed ee xogta madaxa banaan waa X. Xogta ku tiirsan, y.

Waxaan samaynaa kuwan soo socda:

X = dataset.iloc[ : , 2 : ]
y = dataset.iloc[ : , 1 : 2 ]

Waa maxay? Shaqada iloc[:, 2:] waxaan u sheegaynaa Python: Waxaan rabaa in aan ku arko variable X xogta ka bilaabmaysa tiirka labaad (lagu daro oo waase haddii tirintu eber ka bilaabato). Sadarka labaad waxaan ku nidhi waxaan rabnaa inaan aragno xogta tiirka koowaad.

[a:b,c:d] waa dhismaha waxa aynu ku isticmaalno qawladaha. Haddii aadan cayimin wax doorsoomayaal ah, waxa loo kaydin doonaa sidii hore. Taasi waa, waxaan qeexi karnaa [:,: d] ka dibna waxaan heli doonaa dhammaan tiirarka ku jira xogta, marka laga reebo kuwa ka sii socda lambarka d. Doorsoomayaasha a iyo b ayaa qeexaya xargaha, laakiin waxaan u baahanahay dhamaantood, markaa waxaan uga tagnaa tan sida default.

Aan aragno waxa aan helnay:

X.head()

Talaabadaada koowaad ee Sayniska Xogta. Titanic

y.head()

Talaabadaada koowaad ee Sayniska Xogta. Titanic

Si loo fududeeyo casharkan yar, waxaan ka saari doonaa tiirarka u baahan daryeel gaar ah ama aan saameyn ku yeelan badbaadada gabi ahaanba. Waxay ka kooban yihiin xogta nooca str.

count = ['Name', 'Ticket', 'Cabin', 'Embarked']
X.drop(count, inplace=True, axis=1)

Sare! Aan u gudubno tallaabada xigta.

Tallaabada Saddexaad

Halkan waxaan u baahanahay in aan codeeyno xogtayada si mashiinku si fiican u fahmo sida xogtani u saameynayso natiijada. Laakiin wax walba ma dejin doono, laakiin kaliya xogta str ee aan ka tagnay. Tiirka "Sex". Sideen rabnaa in aan u codeeyno? Aynu matalo xogta ku saabsan lab iyo dheddig ahaan qofka: 10 - lab, 01 - dhedig.

Marka hore, aynu shaxdayada u beddelno matrix NumPy:

X = np.array(X)
y = np.array(y)

Oo hadda aan eegno:

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])],
                       remainder='passthrough')
X = np.array(ct.fit_transform(X))

Maktabadda sklearn waa maktabad aad u fiican oo noo oggolaanaysa inaan qabanno shaqo dhammaystiran oo Sayniska Xogta ah. Waxay ka kooban tahay tiro badan oo ah moodooyinka barashada mashiinka xiisaha leh waxayna sidoo kale noo ogolaataa inaan samayno diyaarinta xogta.

OneHotEncoder ayaa noo ogolaan doonta in aan codeeyno jinsiga qofka ku jira matalaadaas, sidaan u sharaxnay. 2 fasal ayaa la abuuri doonaa: lab, dhaddig. Haddii qofku yahay nin, markaa 1 ayaa lagu qori doonaa tiirka "lab", iyo 0 ee tiirka "dhedig", siday u kala horreeyaan.

Kadib OneHotEncoder() waxaa jira [1] - tani waxay ka dhigan tahay inaan rabno inaan codeeyno lambarka tiirka 1 (tirinta eber).

Sare. Aynu sii dhaqaaqno!

Sida caadiga ah, tani waxay dhacdaa in xogta qaar laga tago madhan (taas oo ah, NaN - ma aha lambar). Tusaale ahaan, waxaa jira macluumaad ku saabsan qofka: magaciisa, jinsiga. Laakiin ma jiraan wax war ah oo ku saabsan da'diisa. Xaaladdan oo kale, waxaan ku dabaqi doonaa habkan soo socda: waxaan ka heli doonaa macnaha arithmetic ee dhammaan tiirarka iyo, haddii xogta qaar ka maqan tahay tiirka, ka dibna waxaan buuxin doonaa faaruqa macnaha xisaabta.

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(X)
X = imputer.transform(X)

Hadda aynu xisaabta ku darno in xaaladuhu ay dhacaan marka xogtu aad u weyn tahay. Xogta qaar waxay ku jirtaa inta u dhaxaysa [0:1], halka qaarkood laga yaabo inay dhaafaan boqollaal iyo kun. Si aan u baabi'inno kala firdhinta noocaas ah, kombuyutarkana aanu uga dhigno mid sax ah xisaabtiisa, waxaanu baadhaynaa xogta oo aanu cabbiri doonnaa. Dhammaan tirooyinka yaanay ka badnaan saddex. Si tan loo sameeyo, waxaan isticmaali doonaa shaqada StandardScaler.

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X[:, 2:] = sc.fit_transform(X[:, 2:])

Hadda xogtayadu waxay u egtahay sidan:

Talaabadaada koowaad ee Sayniska Xogta. Titanic

Fasalka Durba waan ku dhownahay yoolkeenna!

Tallaabada afraad

Aynu tababarno qaabkayaga ugu horreeya! Maktabadda sklearn waxaan ka heli karnaa waxyaabo aad u badan oo xiiso leh. Waxaan adeegsaday qaabka Kala soocida Kobcinta Gradient ee dhibaatadan. Waxaan isticmaalnaa A classifier sababtoo ah hawshayadu waa hawl kala saarid. Saadaasha waa in lagu meeleeyaa 1 (ka badbaaday) ama 0 (ma noolaan).

from sklearn.ensemble import GradientBoostingClassifier
gbc = GradientBoostingClassifier(learning_rate=0.5, max_depth=5, n_estimators=150)
gbc.fit(X, y)

Hawsha ku habboon ayaa u sheegaysa Python: U ogolow qaabka inuu raadiyo ku tiirsanaanta u dhexeeya X iyo y.

In ka yar ilbiriqsi iyo qaabku waa diyaar.

Talaabadaada koowaad ee Sayniska Xogta. Titanic

Sidee loo dalbadaa? Waan arki doonaa hadda!

Tallaabada shanaad. Gabagabo

Hadda waxaan u baahanahay inaan ku shubno miis ay ku jiraan xogtayada tijaabada ah taas oo aan u baahanahay inaan samayno saadaal. Jadwalkan waxaanu ku samayn doonaa isla falkii aanu u samaynay X.

X_test = pd.read_csv('test.csv', index_col=0)

count = ['Name', 'Ticket', 'Cabin', 'Embarked']
X_test.drop(count, inplace=True, axis=1)

X_test = np.array(X_test)

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])],
                       remainder='passthrough')
X_test = np.array(ct.fit_transform(X_test))

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(X_test)
X_test = imputer.transform(X_test)

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_test[:, 2:] = sc.fit_transform(X_test[:, 2:])

Aynu hadda dabaqno moodalkayaga!

gbc_predict = gbc.predict(X_test)

Dhammaan Waxaan samaynay saadaal. Hadda waxay u baahan tahay in lagu duubo csv oo loo diro mareegaha.

np.savetxt('my_gbc_predict.csv', gbc_predict, delimiter=",", header = 'Survived')

Diyaar. Waxaan helnay fayl ay ku jiraan saadaasha rakaab kasta. Waxa hadhay oo dhan waa in la geliyo xalalkan mareegaha oo aad hesho qiimaynta saadaasha. Xalka aasaasiga ah ee noocan oo kale ah ma siinayaa 74% jawaabaha saxda ah ee dadweynaha, laakiin sidoo kale xoogaa xoogaa ah oo ku saabsan Sayniska Xogta. Qofka ugu xiisaha badan wuxuu iigu soo qori karaa farriimaha gaarka ah wakhti kasta oo uu waydiin karo su'aal. Mahadsanid dhammaan!

Source: www.habr.com

Add a comment