Sinu esimene samm andmete teaduses. Titanik

LĂŒhike sissejuhatus

Usun, et me vĂ”iksime teha rohkem, kui meil oleks samm-sammult juhiseid, mis ĂŒtleks, mida ja kuidas teha. MĂ€letan oma elust hetki, kui ei saanud alustada mingit asja, kuna oli lihtsalt raske aru saada, kust alustada. VĂ”ib-olla varasemad sĂ”nad "Data Science" tĂ”id sind mĂ”tlema, et see on midagi, mis on sinust kaugel, ja inimesed, kes sellega tegelevad, on kusagil mujal maailmas. Kuid nad on just siin. Ja vĂ”ib-olla just tĂ€nu nendele inimestele jĂ”udis sinu uudistevoogu artikkel. On palju kursuseid, mis aitavad sul seda ametit omandada, ja siin aitan sul teha oma esimese sammu.

Kas oled valmis? Ütlen kohe, et sul tuleb teada Python 3, kuna seda kasutan siin. Soovitan samuti eelnevalt installida Jupyter Notebooki vĂ”i vaadata, kuidas kasutada Google Colabit.

Esimene samm

Sinu esimene samm andmete teaduses. Titanik

Kaggle — sinu oluline abiline selles vallas. Teoreetiliselt saab ka ilma hakkama, kuid sellest rÀÀgin ma teises artiklis. See on platvorm, kus toimuvad Data Science'i konkurssid. Igas sellises vĂ”istluses saad varakult tohutult kogemusi erinevate ĂŒlesannete lahendamisel, arendamisel ja meeskonnatöös, mis on tĂ€napĂ€eval vĂ€ga oluline.

Meie ĂŒlesanne pĂ€rineb sealt. Selle nimi on: "Titanic". Ülesanne seisneb selles, et prognoosida, kas iga eraldi inimene jÀÀb ellu. Üldjoontes seisneb andmeteadlase ĂŒlesanne andmete kogumises, töötlemises, mudeli Ă”petamises, prognoosimises jne. Kaggle'is saame aga andmete kogumise etapi vahele jĂ€tta — need on platvormil juba olemas. Me peame need lihtsalt alla laadima ja saame tööga alustada!

Seda saab teha jÀrgmise viisi kaudu:

Data vahekaardil on failid, milles on andmed.

Sinu esimene samm andmete teaduses. Titanik

Sinu esimene samm andmete teaduses. Titanik

Andmed on alla laaditud, meie Jupyter'i spikerdokumentide ette valmistanud ja


Teine samm

Kuidas me nĂŒĂŒd need andmed alla laadime?

Esiteks impordime vajalikud teegid:

import pandas as pd
import numpy as np

Pandas vÔimaldab meil laadida .csv faile edasiseks töötlemiseks.

Numpy on vajalik, et esitada meie andmetabel maatriksina numbritega.
Liigume edasi. Vaatame faili train.csv ja laadime selle ĂŒles:

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

Viitame meie andmekogumile train.csv muutujaga dataset. Vaadakem, mis seal on:

dataset.head()

Sinu esimene samm andmete teaduses. Titanik

Funktsioon head() vÔimaldab meil vaadata andmeraami esimesi ridu.

Veerg Survived sisaldab meie tulemusi, mis on selles andmeraamis teada. Antud ĂŒlesande puhul peame ennustama veeru Survived vÀÀrtused andmetele test.csv. Nendes andmetes on teave teiste Titanic'i reisijate kohta, kelle puhul me ei tea tulemusi.

Nii jagame meie 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Ôltumatud andmed on need, mis mÔjutavad tulemust.

NĂ€iteks, meil on selline andmekogum:

„Vova Ă”ppis informaatikat — ei.
Vova sai informaatikast 2.”

Hinne informaatikast sĂ”ltub vastusest kĂŒsimusele: Ă”ppis Vova informaatikat? Selge? Liigume edasi, oleme juba lĂ€hemal eesmĂ€rgile!

TavapÀrane muutujate seade 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, eeldusel, et arvemine algab nullist). Teises reas ĂŒtleb, et soovime nĂ€ha y-s esimese veeru andmeid.

[ a:b, c:d ] on konstruktsioon, mida me kasutame sulgudes. Kui mÔnda muutujat ei nÀidata, jÀÀvad need vaikimisi. See tÀhendab, et saame nÀidata [:,: d] ja siis saame andmeraamisse kÔik veerud, vÀlja arvatud need, mis algavad numbrist d ja edasi. Muutujad a ja b mÀÀravad read, kuid meil on neid kÔiki vaja, seega jÀtame selle vaikimisi.

Vaadakem, mis meil on:

X.head()

Sinu esimene samm andmete teaduses. Titanik

y.head()

Sinu esimene samm andmete teaduses. Titanik

Selle vĂ€ikese juhendi lihtsustamiseks eemaldame veerud, mis vajavad erilist 'hoolt', vĂ”i ei mĂ”juta ĂŒldse ellujÀÀmist. Neis sisaldub andmeid tĂŒĂŒpi str.

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

Super! Liigume 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 str tĂŒĂŒpi andmeid, mida me jĂ€tsime. Veerg "Sex". Kuidas me soovime kodeerida? Kujutame inimese soo andmed vektorina: 10 — mees, 01 — naine.

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

Biblioteek sklearn on tÔeliselt Àge raamatukogu, mis vÔimaldab meil teostada tÀielikku tööd andmete teaduses. See sisaldab hulgaliselt huvitavaid masinÔppe mudeleid ning vÔimaldab meil andmete ettevalmistamisega tegeleda.

OneHotEncoder vÔimaldab meil kodeerida inimese sugu just nii, nagu me seda kirjeldasime. Loodud saab kaks klassi: mees ja naine. Kui isik on mees, kirjutatakse veergu "mees" 1 ja "naine" veergu vastavalt 0.

OneHotEncoder() jĂ€rel on [1] — see tĂ€hendab, et soovime kodeerida veergu number 1 (arvestamine algab nullist).

Super. Liigume veel edasi!

Tavaliselt juhtub, et mĂ”ned andmed jÀÀvad tĂ€itmata (st NaN — number ei ole). NĂ€iteks on meil informatsioon inimese kohta: tema nimi, sugu. Kuid andmeid tema vanuse kohta ei ole. Sellisel juhul rakendame meetodit: leiame keskmise aritmeetika kĂ”igis veergudes ja kui mĂ”ned andmed on veerus puudu, tĂ€idame tĂŒhimikud keskmise aritmeetika abil.

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

Ja nĂŒĂŒd arvestame olukordadega, kus andmed on vĂ€ga tugevalt hajutatud. MĂ”ned andmed asuvad vahemikus [0:1], mĂ”ned vĂ”ivad ulatuda sadu ja isegi tuhandeid. Et vĂ€listada selline hajusus ja arvutid oleksid tĂ€psemad arvutustes, skaleerime andmed, mÔÔdame skaalat. Olgu kĂ”ik numbrid mitte suuremad kui kolm. 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:

Sinu esimene samm andmete teaduses. Titanik

SuurepÀrane. Oleme juba lÀhedal oma eesmÀrgile!

Neljas samm

Koolitame oma esimest mudelit! Sklearni raamatukogust leiame tohutult huvitavaid vĂ”imalusi. Kasutasin antud ĂŒlesande jaoks Gradient Boosting Classifier mudelit. Klassifikaatorit kasutatakse, kuna meie ĂŒlesanne on klassifitseerimise ĂŒlesanne. Peame prognoosi mÀÀrama 1 (ellujÀÀnud) vĂ”i 0 (ei ellu jÀÀnud).

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

Funktsioon fit ĂŒtleb Pythoni: las mudel otsib seoseid X ja y vahel.

MÔne sekundiga on mudel valmis.

Sinu esimene samm andmete teaduses. Titanik

Kuidas seda rakendada? NĂ€eme varsti!

Viies etapp. KokkuvÔte

NĂŒĂŒd peame laadima tabeli meie testandmetega, mille jaoks tuleb koostada prognoos. Selle tabeliga teeme tĂ€pselt samu toiminguid, mida tegime X-ga.

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

loend = ['Name', 'Ticket', 'Cabin', 'Embarked']
X_test.drop(loend, 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 juba meie mudelit!

gbc_predict = gbc.predict(X_test)

KĂ”ik. Oleme koostanud prognoosi. NĂŒĂŒd tuleb see salvestada csv formaati ja saata veebilehele.

np.savetxt('my_gbc_predict.csv', gbc_predict, delimiter=",", header = 'EllujÀÀnud')

Valmis. Saime faili, mis sisaldab iga reisija prognoose. NĂŒĂŒd on jÀÀnud need lahendused veebilehele ĂŒles laadida ja saada prognoosi hindamine. See primitiivne lahendus annab mitte ainult 74% Ă”igeid vastuseid avalikus, vaid ka teatud edasiviivate tĂ”uke Data Science'is. KĂ”ige uudishimulikumad vĂ”ivad igal ajal mulle kirjutada otse ja esitada kĂŒsimusi. AitĂ€h kĂ”igile!

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster