Zure lehen urratsa Data Science-n. Titanic

Sarrerako hitz labur bat

Uste dut gauza gehiago egin genitzakeela urratsez urrats argibideak emango balituzte, zer egin eta nola egin esango digutenak. Nik neuk gogoan ditut nire bizitzako momentuak, zerbait hasi ezin izan nuenean, zaila zelako nondik hasi ulertzea. Agian, behin Interneten "Data Science" hitzak ikusi eta honetatik urrun zeundela erabaki zenuen, eta hau egiten duten pertsonak hor nonbait, beste mundu batean zeudela. Ez, hementxe daude. Eta, beharbada, arlo honetako jendeari esker, artikulu bat agertu zen zure jarioan. Eskulan honetara ohitzen lagunduko dizuten ikastaro ugari daude, baina hemen lehen urratsa ematen lagunduko dizut.

Beno, prest al zaude? Esango dizut berehala Python 3 ezagutu beharko duzula, horixe baita hemen erabiliko dudana. Era berean, aldez aurretik Jupyter Notebook-en instalatzea edo google colab nola erabiltzen den ikustea gomendatzen dizut.

One Step

Zure lehen urratsa Data Science-n. Titanic

Kaggle zure laguntzaile garrantzitsua da gai honetan. Printzipioz, hori gabe egin dezakezu, baina honi buruz beste artikulu batean hitz egingo dut. Data Science lehiaketak antolatzen dituen plataforma bat da. Horrelako lehiaketa bakoitzean, hasierako etapetan, hainbat motatako arazoak konpontzeko esperientzia ez-errealista lortuko duzu, garapen esperientzia eta taldean lan egiteko esperientzia, gure garaian garrantzitsua dena.

Hortik hartuko dugu gure zeregina. "Titanic" izena du. Baldintza hau da: pertsona bakoitzak bizirik iraungo duen aurreikustea. Oro har, DSn parte hartzen duen pertsona baten zeregina datuak biltzea, prozesatzea, eredu bat prestatzea, aurreikuspenak egitea eta abar da. Kaggle-n, datuak biltzeko fasea saltatzeko baimena dugu - plataforman aurkezten dira. Deskargatu behar ditugu eta has gaitezke!

Honela egin dezakezu:

Datuak fitxak datuak dituzten fitxategiak ditu

Zure lehen urratsa Data Science-n. Titanic

Zure lehen urratsa Data Science-n. Titanic

Datuak deskargatu, gure Jupyter koadernoak prestatu eta...

Bigarren pausoa

Nola kargatzen ditugu orain datu hauek?

Lehenik eta behin, inporta ditzagun beharrezko liburutegiak:

import pandas as pd
import numpy as np

Pandas-ek .csv fitxategiak deskargatzeko aukera emango digu prozesatzeko.

Numpy behar da gure datu-taula zenbakiekin matrize gisa irudikatzeko.
Segi aurrera. Har dezagun train.csv fitxategia eta karga dezagun:

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

Gure train.csv datu-hautaketari erreferentzia egingo diogu datu-multzoaren aldagaiaren bidez. Ikus dezagun zer dagoen:

dataset.head()

Zure lehen urratsa Data Science-n. Titanic

head() funtzioak datu-marko baten lehen errenkadak aztertzeko aukera ematen digu.

Survived zutabeak dira, hain zuzen, gure emaitzak, datu-marko honetan ezagutzen direnak. Zereginaren galderarako, Test.csv datuetarako Survived zutabea aurreikusi behar dugu. Datu honek Titanic-eko beste bidaiariei buruzko informazioa gordetzen du, eta guk, arazoa konponduz, ez dakigu emaitza.

Beraz, zati dezagun gure taula datu menpeko eta independenteetan. Hemen dena sinplea da. Menpeko datuak emaitzetan dauden datu independenteen araberakoak dira. Datu independenteak emaitzan eragina duten datuak dira.

Adibidez, datu multzo hau dugu:

"Vovak informatika irakatsi zuen - ez.
Vova-k 2 bat jaso zuen informatikanΒ».

Informatikako nota galderaren erantzunaren araberakoa da: Vovak informatika ikasi al zuen? Argi al dago? Aurrera, dagoeneko gertuago gaude helburutik!

Datu independenteetarako aldagai tradizionala X da. Mendeko datuetarako, y.

Honako hau egiten dugu:

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

Zer da hau? Iloc[:, 2: ] funtzioarekin zera esaten diogu Python-i: X aldagaian ikusi nahi ditut bigarren zutabetik hasita datuak (barne eta zenbatzea zerotik hasten bada). Bigarren lerroan lehen zutabeko datuak ikusi nahi ditugula esaten dugu.

[ a:b, c:d ] parentesi artean erabiltzen dugunaren eraikuntza da. Ez baduzu aldagairik zehazten, lehenetsi gisa gordeko dira. Hau da, [:,: d] zehaztu dezakegu eta orduan datu-markoko zutabe guztiak lortuko ditugu, d zenbakitik aurrera doazenak izan ezik. a eta b aldagaiek kateak definitzen dituzte, baina denak behar ditugu, beraz, hau lehenetsi gisa uzten dugu.

Ea zer lortu dugun:

X.head()

Zure lehen urratsa Data Science-n. Titanic

y.head()

Zure lehen urratsa Data Science-n. Titanic

Ikasgai txiki hau sinplifikatzeko, arreta berezia behar duten edo biziraupenean batere eragiten ez duten zutabeak kenduko ditugu. str motako datuak dituzte.

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

Super! Joan gaitezen hurrengo urratsera.

Hiru urrats

Hemen gure datuak kodetu behar ditugu, makinak hobeto uler dezan datu horiek emaitzari nola eragiten dioten. Baina ez dugu dena kodetuko, utzi ditugun str datuak baizik. "Sexua" zutabea. Nola nahi dugu kodetu? Irudika ditzagun pertsona baten generoari buruzko datuak bektore gisa: 10 - gizonezkoa, 01 - emakumezkoa.

Lehenik eta behin, bihur ditzagun gure taulak NumPy matrize batean:

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

Eta orain ikus dezagun:

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 liburutegia Data Science-n lan osoa egiteko aukera ematen duen liburutegi bikaina da. Ikaskuntza automatikoko eredu interesgarri ugari ditu eta datuak prestatzeko aukera ere ematen digu.

OneHotEncoder-ek irudikapen horretan pertsona baten generoa kodetzeko aukera emango digu, deskribatu dugun moduan. 2 klase sortuko dira: gizonezkoak, emakumezkoak. Pertsona gizona bada, 1 idatziko da "gizonezko" zutabean, eta 0 "emakume" zutabean, hurrenez hurren.

OneHotEncoder() ondoren [1] dago - horrek esan nahi du 1. zenbakia kodetu nahi dugula zutabea (zerotik zenbatuta).

Super. Goazen are urrunago!

Oro har, datu batzuk hutsik geratzen direla gertatzen da (hau da, NaN - ez zenbaki bat). Adibidez, pertsona bati buruzko informazioa dago: bere izena, generoa. Baina ez dago bere adinari buruzko informaziorik. Kasu honetan, metodo hau aplikatuko dugu: batez besteko aritmetikoa zutabe guztietan aurkituko dugu eta, zutabean daturen bat falta bada, hutsunea batez besteko aritmetikoaz beteko dugu.

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

Orain kontuan izan dezagun datuak oso handiak direnean gertatzen direla egoerak. Datu batzuk [0:1] tartean daude, beste batzuk ehunka eta milaka baino gehiago joan daitezke. Sakabanatze hori ezabatzeko eta ordenagailua bere kalkuluetan zehatzagoa izan dadin, datuak eskaneatu eta eskalatuko ditugu. Ez dezatela zenbaki guztiak hiru baino gehiago izan. Horretarako, StandardScaler funtzioa erabiliko dugu.

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

Orain gure datuak honelakoak dira:

Zure lehen urratsa Data Science-n. Titanic

Klasea. Dagoeneko gure helburutik gertu gaude!

Laugarren urratsa

Entrena dezagun gure lehen modeloa! Sklearn liburutegitik gauza interesgarri ugari aurki ditzakegu. Gradient Boosting Classifier eredua aplikatu nuen arazo honi. Sailkatzailea A erabiltzen dugu, gure zeregina sailkapen zeregina delako. Pronostikoa 1 (bizirik iraun) edo 0 (ez du bizirik) esleitu behar da.

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

Fit funtzioak Python-i esaten dio: Utzi ereduari X eta y arteko menpekotasunak bilatzeko.

Segundo bat baino gutxiago eta eredua prest dago.

Zure lehen urratsa Data Science-n. Titanic

Nola aplikatu? Orain ikusiko dugu!

Bost urratsa. Ondorioa

Orain taula bat kargatu behar dugu gure probako datuekin eta horretarako aurreikuspena egin behar dugu. Taula honekin X-rekin egin ditugun ekintza berdinak egingo ditugu.

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

Aplikatu dezagun orain gure eredua!

gbc_predict = gbc.predict(X_test)

Denak. Aurreikuspen bat egin dugu. Orain csv-n grabatu eta webgunera bidali behar da.

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

Prest. Bidaiari bakoitzaren iragarpenak jasotzen zituen fitxategi bat jaso genuen. Irtenbide hauek webgunera igotzea eta aurreikuspenaren balorazioa egitea besterik ez da geratzen. Horrelako irtenbide primitibo batek erantzun zuzenen % 74 ez ezik, datuen zientzian ere bultzada bat ematen du. Bitxienek edozein unetan idatz dezakete mezu pribatuetan eta galderaren bat egin. Eskerrik asko guztioi!

Iturria: www.habr.com

Gehitu iruzkin berria