LĂŒhike sissejuhatus
Ma usun, et me vĂ”iksime teha palju rohkem, kui meil oleks samm-sammult juhiseid, mis ĂŒtleksid, mida ja kuidas teha. MĂ€letan, et minu elus on olnud hetki, kus mul oli raske alustada mĂ”nda projekti, kuna oli lihtsalt keeruline mĂ”ista, kust alustada. VĂ”ib-olla, kui sa kunagi ammu Internetis nĂ€gid sĂ”nu âAndme teadusâ ja arvasid, et see on kaugel sinust, kuna inimesed, kes sellega tegelevad, on kusagil seal teises maailmas. Kuid nii see ei ole, nad on siin lĂ€hedal. Ja vĂ”ib-olla, tĂ€nu sellele valdkonnale, sattusid sa mingisse artiklisse. On palju kursuseid, mis aitavad sul seda ametit omandada ning siin aitan ma sul teha oma esimese sammu.
Noh, oled valmis? Ootan, et sa pead teadma Python 3, kuna seda ma siin kasutan. Samuti soovitan eelnevalt paigaldada Jupyter Notebooki vÔi uurida, kuidas kasutada Google Colabi.
Esimene samm

Kaggle on sinu oluline abiline selles osas. Tegelikult saab hakkama ka ilma selleta, kuid sellest rÀÀgin ma teises artiklis. See on platvorm, kus toimuvad andme teaduse vĂ”istlused. Igas sellises vĂ”istluses saad sa varakult palju kogemusi erinevate probleemide lahendamisel, arendamisel ja meeskonnatöös, mis on tĂ€napĂ€eval ĂŒlioluline.
Meie ĂŒlesanne tuleb sealt. Selle nimi on: âTitanicâ. Ălesanne on selline: prognoosida, kas iga eraldi inimene jÀÀb ellu vĂ”i mitte. Ăldiselt on andme teaduse spetsialisti ĂŒlesanne andmete kogumine, töötlemine, mudeli treenimine, prognoosimine ja nii edasi. Kaggle'is vĂ”imaldatakse meile andmete kogumise etapp vahele jĂ€tta â need on platvormil juba olemas. Peame need ĂŒles laadima ja saame alustada tööd!
Seda saab teha jÀrgmiselt:
andmete vahekaardilt leiad failid, kus on andmed


Oleme andmed ĂŒles laadinud, valmistanud ette meie Jupyter töövihikud jaâŠ
Teine samm
Kuidas me nĂŒĂŒd neid andmeid ĂŒles laadime?
Esiteks toome sisse vajalikud raamatukogud:
import pandas as pd
import numpy as np
Pandas vÔimaldab meil laadida .csv faile edasiseks töötlemiseks.
Numpy on vajalik selleks, et esitada meie andmetabel numbritega maatriksina.
Liigume edasi. VÔtame faili train.csv ja laadime selle meile:
dataset = pd.read_csv('train.csv')
Me viitame meie andmestikule train.csv muutuja kaudu. Vaadakem, mis seal on:
dataset.head()

Funktsioon head() vÔimaldab meil vaadata andmeraami esimesi paar rida.
Veerg Survived on just need tulemused, mis on selles andmeraamis teada. Meie ĂŒlesande kohaselt peame ennustama veeru Survived vÀÀrtusi andmetes test.csv. Nendes andmetes on teavet teiste Titanicu reisijate kohta, kelle lĂ”pptulemused on meile, ĂŒlesannet lahendavale, teadmata.
Nii et jagame oma tabeli sĂ”ltuvateks ja sĂ”ltumatuteks andmeteks. Siin on kĂ”ik lihtne. SĂ”ltuvad andmed on need, mis sĂ”ltuvad sĂ”ltumatutest, see, mis on tulemustes. SĂŒsteemsed andmed on need, mis mĂ”jutavad tulemust.
NĂ€iteks on meil selline andmestik:
«Vova Ă”ppis informaatikat â ei.
Vova sai informaatikast 2.»
Hinnang informaatikas sĂ”ltub vastusest kĂŒsimusele: kas Vova Ă”ppis informaatikat? Kas on selge? Liigume edasi, oleme juba lĂ€hemal eesmĂ€rgile!
Traditsiooniline muutuja sĂ”ltumatute andmete jaoks on X. SĂ”ltuvate jaoks â y.
Teeme jÀrgmist:
X = dataset.iloc[ : , 2 : ]
y = dataset.iloc[ : , 1 : 2 ]
Mis see on? Funktsioon iloc[:, 2: ] ĂŒtleb Pythoni: tahan nĂ€ha muutuja X sees andmeid, mis algavad teisest veerust (kaasa arvatud ja eeldades, et loendus algab nullist). Teises reas ĂŒtleme, et tahame nĂ€ha y sees esimest veergu.
[ a:b, c:d ] â see on konstruktsioon, mida me kasutame sulgudes. Kui mĂ”nda muutujat ei tĂ€psustata, jÀÀvad nad vaikimisi. See tĂ€hendab, et saame mÀÀrata [:,: d] ja siis saame andmeraamis kĂ”ik veerud, vĂ€lja arvatud need, mis algavad numbrist d ja edasi. Muutujad a ja b mÀÀravad read, kuid neid vajame kĂ”ik, seega jĂ€tame vaikimisi.
Vaadakem, mis meil vÀlja tuli:
X.head() 
y.head() 
Selle vĂ€ikesed Ă”ppetunni lihtsustamiseks eemaldame veerud, mis vajavad erilist 'hoolt', vĂ”i mĂ”jutavad ĂŒldse mitte ellujÀÀmist. Neis on andmed tĂŒĂŒbilt str.
count = ['Name', 'Ticket', 'Cabin', 'Embarked']
X.drop(count, inplace=True, axis=1)
Super! Liikume jÀrgmise sammu juurde.
Kolmas samm
Siin peame kodeerima meie andmed, et masin saaks paremini aru, kuidas need andmed tulemust mĂ”jutavad. Kuid kodeerime ainult need andmed, mis on tĂŒĂŒpi str, mille me jĂ€tsime. Veerg «Sex». Kuidas me tahame selle kodeerida? Kujutame inimese soo andmeid vektorina: 10 â meessoost, 01 â naissoost.
Alustame, muutes meie tabelid NumPy maatriksiks:
X = np.array(X)
y = np.array(y)
Ja nĂŒĂŒd vaatame:
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 teek on selline Àge teek, mis vÔimaldab meil teha tÀielikult Data Science'i tööd. See sisaldab palju huvitavaid masinÔppe mudeleid ja vÔimaldab meil tegeleda andmete ettevalmistamisega.
OneHotEncoder vÔimaldab meil kodeerida inimese soo just sellisel viisil, nagu me oleme seda kirjeldanud. Loodud saavad kaks klassi: meessoost, naissoost. Kui inimene on mees, kirjutatakse veergu «meessoost» 1 ja veergu «naissoost» vastavalt 0.
PĂ€rast OneHotEncoder() on [1] â see tĂ€hendab, et tahame kodeerida veeru number 1 (arvestamine algab nullist).
Super. Edasi liikudes!
Tavaliselt juhtub, et mĂ”ned andmed jÀÀvad tĂ€itmata (st NaN â mitte number). NĂ€iteks on inimesest teave: tema nimi, sugu. Kuid tema vanuse kohta andmeid ei ole. Sellisel juhul rakendame sellist meetodit: leiame keskmise aritmeetika kĂ”igi veergude osas ja kui mĂ”nes veerus on andmed puudulikud, siis tĂ€idame tĂŒhik keskmise aritmeetikaga.
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(X)
X = imputer.transform(X)
Ja nĂŒĂŒd peame arvestama, et on olukordi, kus andmed on vĂ€ga palju laienenud. MĂ”ned andmed asuvad vahemikus [0:1], kuid mĂ”ned vĂ”ivad kĂŒĂŒndida sadade ja tuhandeteni. Selle hajumise vĂ€listamiseks ja arvuti tĂ€psemaks muutmiseks skaleerime andmed, standardiseerime need. Las kĂ”ik numbrid ei ĂŒleta kolme. Selleks kasutame funktsiooni StandardScaler.
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X[:, 2:] = sc.fit_transform(X[:, 2:])
NĂŒĂŒd nĂ€evad meie andmed vĂ€lja sellised:

Klass. Oleme juba oma eesmÀrgile lÀhedal!
Neljas samm
Koolitame meie esimest mudelit! Sklearn'i raamatukogust leiame tohutult palju huvitavat. Rakendasin selle ĂŒlesande jaoks Gradient Boosting Classifier mudelit. Kasutame klassifikaatorit, kuna meie ĂŒlesanne on klassifitseerimine. Tuleb prognoosida, kas inimene kuulub 1 (ellu jÀÀnud) vĂ”i 0 (ei suutnud ellu jÀÀda).
from sklearn.ensemble import GradientBoostingClassifier
gbc = GradientBoostingClassifier(learning_rate=0.5, max_depth=5, n_estimators=150)
gbc.fit(X, y)
Funktsioon fit ĂŒtleb Pythonile: Las mudel otsib sĂ”ltuvusi X ja y vahel.
Minder kui sekund ja mudel on valmis.

Kuidas seda rakendada? Praegu nÀeme!
Viies samm. KokkuvÔte
NĂŒĂŒd peame laadima lauale meie testandmed, mille jaoks tuleb koostada prognoos. Selle tabeliga teeme kĂ”ik samad toimingud, mida tegime Xiga.
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:])
Rakendame nĂŒĂŒd meie mudelit!
gbc_predict = gbc.predict(X_test)
KĂ”ik. Koostasime prognoosi. NĂŒĂŒd tuleb see salvestada csv formaati ja saata veebilehele.
np.savetxt('my_gbc_predict.csv', gbc_predict, delimiter=",", header = 'Survived')
Valmis. Saime faili, mis sisaldab ennustusi iga reisija kohta. JÀÀnud on vaid need lahendused veebilehele laadida ja prognoosi hindamine saada. See primitiivne lahendus annab mitte ainult 74% Ă”igeid vastuseid avalikus, vaid ka teatud tĂ”uke andmete teaduses. KĂ”ige uudishimulikumad vĂ”ivad mulle igal ajal kirjutada isiklikes sĂ”numites ja kĂŒsimusi esitada. KĂ”igile aitĂ€h!
Allikas: habr.com
