Fyrsta skrefið þitt í gagnafræði. Titanic

Stutt kynningarorð

Ég tel að við gætum gert fleiri hluti ef okkur yrðu veittar skref-fyrir-skref leiðbeiningar sem segja okkur hvað við eigum að gera og hvernig við eigum að gera það. Sjálf man ég eftir augnablikum í lífi mínu þegar ég gat ekki byrjað á einhverju vegna þess að það var einfaldlega erfitt að skilja hvar ætti að byrja. Kannski sástu einu sinni orðin „Data Science“ á netinu og ákvaðst að þú værir langt frá þessu og fólkið sem gerir þetta væri einhvers staðar þarna úti, í öðrum heimi. Nei, þeir eru hérna. Og kannski, þökk sé fólki frá þessu sviði, birtist grein á straumnum þínum. Það eru fullt af námskeiðum sem hjálpa þér að venjast þessu handverki en hér mun ég hjálpa þér að taka fyrsta skrefið.

Jæja, ertu tilbúinn? Leyfðu mér að segja þér strax að þú þarft að þekkja Python 3, þar sem það er það sem ég mun nota hér. Ég ráðlegg þér líka að setja það upp á Jupyter Notebook fyrirfram eða sjá hvernig á að nota google colab.

Skref eitt

Fyrsta skrefið þitt í gagnafræði. Titanic

Kaggle er mikilvægur aðstoðarmaður þinn í þessu máli. Í grundvallaratriðum geturðu verið án þess, en ég mun tala um þetta í annarri grein. Þetta er vettvangur sem hýsir Data Science keppnir. Í hverri slíkri keppni öðlast þú á fyrstu stigum óraunhæfa reynslu í að leysa vandamál af ýmsu tagi, þroskareynslu og reynslu af því að vinna í teymi, sem er mikilvægt á okkar tímum.

Við munum taka verkefni okkar þaðan. Það er kallað "Titanic". Skilyrðið er þetta: spáðu fyrir um hvort hver einstaklingur lifi af. Almennt séð er verkefni einstaklings sem tekur þátt í DS að safna gögnum, vinna úr þeim, þjálfa líkan, spá og svo framvegis. Í kaggle er okkur heimilt að sleppa gagnasöfnunarstigi - þau eru kynnt á pallinum. Við þurfum að hlaða þeim niður og við getum byrjað!

Þú getur gert þetta sem hér segir:

Data flipinn inniheldur skrár sem innihalda gögn

Fyrsta skrefið þitt í gagnafræði. Titanic

Fyrsta skrefið þitt í gagnafræði. Titanic

Við sóttum gögnin niður, undirbjuggum Jupyter fartölvurnar okkar og...

Skref tvö

Hvernig hleðum við þessum gögnum núna?

Fyrst skulum við flytja inn nauðsynleg bókasöfn:

import pandas as pd
import numpy as np

Pandas mun leyfa okkur að hlaða niður .csv skrám til frekari vinnslu.

Numpy er nauðsynlegt til að tákna gagnatöfluna okkar sem fylki með tölum.
Gjörðu svo vel. Við skulum taka skrána train.csv og hlaða henni upp til okkar:

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

Við munum vísa til train.csv gagnavalsins okkar í gegnum gagnasafnsbreytuna. Við skulum sjá hvað er þar:

dataset.head()

Fyrsta skrefið þitt í gagnafræði. Titanic

Head() aðgerðin gerir okkur kleift að skoða fyrstu línurnar í gagnaramma.

Survived dálkarnir eru einmitt niðurstöður okkar, sem eru þekktar í þessum gagnaramma. Fyrir verkefnisspurninguna þurfum við að spá fyrir um Survived dálkinn fyrir test.csv gögn. Þessi gögn geyma upplýsingar um aðra farþega Titanic, sem við, sem leysum vandamálið, vitum ekki um niðurstöðuna.

Svo skulum við skipta töflunni okkar í háð og óháð gögn. Hér er allt einfalt. Óháð gögn eru þau gögn sem eru háð óháðu gögnunum sem eru í niðurstöðunum. Óháð gögn eru þau gögn sem hafa áhrif á niðurstöðuna.

Til dæmis höfum við eftirfarandi gagnasett:

„Vova kenndi tölvunarfræði - nei.
Vova hlaut 2 í ​​tölvunarfræði.“

Einkunn í tölvunarfræði fer eftir svari við spurningunni: lærði Vova tölvunarfræði? Er það ljóst? Höldum áfram, við erum nú þegar nær markmiðinu!

Hefðbundin breyta fyrir óháð gögn er X. Fyrir háð gögn, y.

Við gerum eftirfarandi:

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

Hvað það er? Með fallinu iloc[:, 2: ] segjum við Python: Ég vil sjá í breytu X gögnin sem byrja í öðrum dálki (meðtalin og að því tilskildu að talning byrji frá núlli). Í annarri línu segjum við að við viljum sjá gögnin í fyrsta dálknum.

[ a:b, c:d ] er smíði þess sem við notum innan sviga. Ef þú tilgreinir engar breytur verða þær vistaðar sem sjálfgefnar. Það er, við getum tilgreint [:,: d] og þá fáum við alla dálkana í gagnarammanum, nema þá sem fara frá númeri d og áfram. Breyturnar a og b skilgreina strengi, en við þurfum þá alla, þannig að við látum þetta vera sjálfgefið.

Við skulum sjá hvað við fengum:

X.head()

Fyrsta skrefið þitt í gagnafræði. Titanic

y.head()

Fyrsta skrefið þitt í gagnafræði. Titanic

Til að einfalda þessa litlu lexíu munum við fjarlægja dálka sem krefjast sérstakrar varúðar eða hafa alls ekki áhrif á lifunargetu. Þau innihalda gögn af gerðinni str.

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

Frábær! Við skulum halda áfram í næsta skref.

Skref þrjú

Hér þurfum við að umrita gögnin okkar þannig að vélin skilji betur hvernig þessi gögn hafa áhrif á niðurstöðuna. En við munum ekki umrita allt, heldur aðeins str gögnin sem við skildum eftir. Dálkurinn „Kynlíf“. Hvernig viljum við kóða? Við skulum tákna gögn um kyn einstaklings sem vektor: 10 - karlkyns, 01 - kvenkyns.

Fyrst skulum við umbreyta töflunum okkar í NumPy fylki:

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

Og nú skulum við líta:

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))

Sklearn bókasafnið er svo flott bókasafn sem gerir okkur kleift að vinna heila vinnu í Data Science. Það inniheldur mikinn fjölda áhugaverðra vélanámslíkana og gerir okkur einnig kleift að undirbúa gögn.

OneHotEncoder gerir okkur kleift að kóða kyn einstaklings í þeirri framsetningu, eins og við lýstum. Búnir verða til 2 flokkar: karl, kona. Ef manneskjan er karlmaður, þá verður 1 skrifað í „karlkyns“ dálkinn og 0 í „kvenkyns“ dálknum, í sömu röð.

Á eftir OneHotEncoder() er [1] - þetta þýðir að við viljum umrita dálk númer 1 (talið frá núlli).

Frábær. Færum okkur enn lengra!

Að jafnaði gerist þetta að sum gögn eru skilin eftir auð (þ.e. NaN - ekki tala). Til dæmis eru upplýsingar um mann: nafn hans, kyn. En það eru engar upplýsingar um aldur hans. Í þessu tilviki munum við beita eftirfarandi aðferð: við finnum reiknað meðaltal yfir alla dálka og ef einhver gögn vantar í dálkinn þá fyllum við upp í tómið með reiknuðu meðaltali.

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

Nú skulum við taka með í reikninginn að aðstæður gerast þegar gögnin eru mjög stór. Sum gögn eru á bilinu [0:1] á meðan sum geta farið yfir hundruð og þúsundir. Til að útrýma slíkri dreifingu og gera tölvuna nákvæmari í útreikningum munum við skanna gögnin og skala þau. Láttu allar tölur ekki fara yfir þrjár. Til að gera þetta munum við nota StandardScaler aðgerðina.

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

Nú líta gögnin okkar svona út:

Fyrsta skrefið þitt í gagnafræði. Titanic

bekk. Við erum nú þegar nálægt markmiði okkar!

Skref fjögur

Við skulum þjálfa fyrstu módelið okkar! Á sklearn bókasafninu má finna gríðarlegan fjölda áhugaverðra hluta. Ég notaði Gradient Boosting Classifier líkanið á þetta vandamál. Við notum Flokkara vegna þess að verkefni okkar er flokkunarverkefni. Horfur ættu að vera úthlutað til 1 (lifði af) eða 0 (lifði ekki af).

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

Passunaraðgerðin segir Python: Láttu líkanið leita að ósjálfstæði milli X og y.

Innan við sekúndu og líkanið er tilbúið.

Fyrsta skrefið þitt í gagnafræði. Titanic

Hvernig á að beita því? Við sjáum til núna!

Skref fimm. Niðurstaða

Nú þurfum við að hlaða inn töflu með prófunargögnum okkar sem við þurfum að gera spá fyrir. Með þessari töflu munum við gera allar sömu aðgerðir og við gerðum fyrir 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:])

Við skulum beita líkaninu okkar núna!

gbc_predict = gbc.predict(X_test)

Allt. Við gerðum spá. Nú þarf að taka upp í csv og senda á heimasíðuna.

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

Tilbúið. Við fengum skrá sem inniheldur spár fyrir hvern farþega. Það eina sem er eftir er að setja þessar lausnir inn á heimasíðuna og fá úttekt á spánni. Slík frumstæð lausn gefur ekki aðeins 74% af réttum svörum á almenning, heldur einnig nokkurn kraft í Data Science. Þeir forvitnustu geta skrifað mér í einkaskilaboðum hvenær sem er og spurt spurninga. Takk til allra!

Heimild: www.habr.com

Bæta við athugasemd