Premye etap ou nan Syans Done. Titanik

Yon ti mo entwodiksyon

Mwen kwè ke nou ta ka fè plis bagay si yo te ba nou enstriksyon etap pa etap ki ta di nou sa pou nou fè ak kijan pou fè li. Mwen menm mwen sonje moman nan lavi mwen lè mwen pa t 'kapab kòmanse yon bagay paske li te tou senpleman difisil yo konprann ki kote yo kòmanse. Petèt, yon fwa sou Entènèt la ou te wè mo "Syans Done" epi deside ke ou te lwen sa a, ak moun ki fè sa yo te yon kote deyò, nan yon lòt mond. Non, yo isit la. Epi, petèt, gras a moun ki soti nan domèn sa a, yon atik parèt sou manje ou a. Gen anpil kou ki pral ede w abitye ak navèt sa a, men isit la mwen pral ede w fè premye etap la.

Bon, èske w pare? Kite m 'di ou touswit ke w ap bezwen konnen Python 3, paske se sa mwen pral itilize isit la. Mwen konseye w tou enstale li sou Jupyter Notebook davans oswa wè ki jan yo sèvi ak google colab.

Etap youn

Premye etap ou nan Syans Done. Titanik

Kaggle se asistan enpòtan ou nan zafè sa a. Nan prensip, ou ka fè san li, men mwen pral pale sou sa a nan yon lòt atik. Sa a se yon platfòm ki òganize konpetisyon Syans Done. Nan chak konpetisyon sa yo, nan premye etap yo ou pral jwenn yon kantite ireyèl nan eksperyans nan rezoud pwoblèm nan divès kalite, eksperyans devlopman ak eksperyans k ap travay nan yon ekip, ki enpòtan nan tan nou an.

Nou pral pran travay nou soti nan la. Li rele "Titanic". Kondisyon an se sa a: predi si chak moun pral siviv. An jeneral, travay yon moun ki enplike nan DS se kolekte done, trete yo, fòme yon modèl, previzyon, elatriye. Nan kaggle, nou gen dwa sote etap koleksyon done - yo prezante sou platfòm la. Nou bezwen telechaje yo epi nou ka kòmanse!

Ou ka fè sa jan sa a:

tab Done a gen dosye ki gen done

Premye etap ou nan Syans Done. Titanik

Premye etap ou nan Syans Done. Titanik

Nou telechaje done yo, prepare kaye Jupyter nou yo ak...

Etap De

Ki jan nou fè kounye a chaje done sa yo?

Premyèman, ann enpòte bibliyotèk ki nesesè yo:

import pandas as pd
import numpy as np

Panda pral pèmèt nou telechaje dosye .csv pou plis pwosesis.

Numpy nesesè pou reprezante tablo done nou an kòm yon matris ak nimewo.
Ale pi devan. Ann pran fichye train.csv la epi telechaje li ban nou:

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

Nou pral refere a seleksyon done train.csv nou an atravè varyab dataset la. Ann wè sa ki genyen:

dataset.head()

Premye etap ou nan Syans Done. Titanik

Fonksyon head() pèmèt nou gade premye ranje yon dataframe.

Kolòn Survived yo se jisteman rezilta nou yo, ke yo rekonèt nan dataframe sa a. Pou kesyon travay la, nou bezwen predi kolòn Survived pou done test.csv. Done sa yo estoke enfòmasyon sou lòt pasaje Titanic la, pou ki nou, rezoud pwoblèm nan, pa konnen rezilta a.

Se konsa, se pou nou divize tab nou an nan done depandan ak endepandan. Tout bagay se senp isit la. Done depandan yo se done sa yo ki depann de done endepandan ki nan rezilta yo. Done endepandan yo se done ki enfliyanse rezilta a.

Pou egzanp, nou gen seri done sa yo:

"Vova te anseye syans enfòmatik - non.
Vova te resevwa yon 2 nan syans enfòmatik.

Klas la nan syans enfòmatik depann de repons lan nan kesyon an: èske Vova etidye syans enfòmatik? Èske li klè? Ann avanse, nou deja pi pre objektif la!

Varyab tradisyonèl pou done endepandan se X. Pou done depandan, y.

Nou fè bagay sa yo:

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

Ki sa li ye? Avèk fonksyon iloc[:, 2: ] nou di Python: Mwen vle wè nan varyab X done yo kòmanse nan dezyèm kolòn nan (enklizif epi si konte a kòmanse soti nan zewo). Nan dezyèm liy lan nou di ke nou vle wè done yo nan premye kolòn nan.

[ a:b, c:d ] se konstriksyon sa nou itilize nan parantèz. Si ou pa presize okenn varyab, yo pral sove kòm default. Sa vle di, nou ka presize [:,: d] ak Lè sa a, nou pral jwenn tout kolòn yo nan dataframe la, eksepte sa yo ki soti nan nimewo d ivè. Varyab yo a ak b defini fisèl, men nou bezwen yo tout, kidonk nou kite sa a kòm default.

Ann wè sa nou jwenn:

X.head()

Premye etap ou nan Syans Done. Titanik

y.head()

Premye etap ou nan Syans Done. Titanik

Pou nou senplifye ti leson sa a, nou pral retire kolòn ki mande swen espesyal oswa ki pa afekte sivivabilite ditou. Yo genyen done ki kalite str.

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

Super! Ann ale nan pwochen etap la.

Twa etap

Isit la nou bezwen kode done nou yo pou machin nan pi byen konprann ki jan done sa yo afekte rezilta a. Men, nou pa pral kode tout bagay, men se sèlman done yo str ke nou kite. Kolòn "Sèks". Ki jan nou vle kode? Ann reprezante done sou sèks yon moun kòm yon vektè: 10 - gason, 01 - fi.

Premyèman, ann konvèti tab nou yo nan yon matris NumPy:

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

Epi kounye a ann gade:

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

Bibliyotèk sklearn la se yon bibliyotèk fre ki pèmèt nou fè travay konplè nan Data Science. Li gen yon gwo kantite modèl aprantisaj machin enteresan epi tou li pèmèt nou fè preparasyon done.

OneHotEncoder pral pèmèt nou kode sèks yon moun nan reprezantasyon sa a, jan nou dekri. Y ap kreye 2 klas: gason, fi. Si moun nan se yon gason, Lè sa a, 1 pral ekri nan kolòn "gason an", ak 0 nan kolòn "fi" a, respektivman.

Apre OneHotEncoder() gen [1] - sa vle di ke nou vle kode nimewo kolòn 1 (konte soti nan zewo).

Super. Ann avanse pi lwen toujou!

Kòm yon règ, sa rive ke kèk done yo rete vid (ki se, NaN - pa yon nimewo). Pou egzanp, gen enfòmasyon sou yon moun: non li, sèks. Men, pa gen okenn enfòmasyon sou laj li. Nan ka sa a, nou pral aplike metòd sa a: n ap jwenn mwayèn aritmetik sou tout kolòn epi, si kèk done ki manke nan kolòn nan, Lè sa a, nou pral ranpli vid la ak mwayèn aritmetik la.

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

Koulye a, kite a pran an kont ke sitiyasyon rive lè done yo gwo anpil. Gen kèk done ki nan entèval [0:1], pandan ke kèk ka ale pi lwen pase dè santèn ak dè milye. Pou elimine dispèsyon sa yo ak fè òdinatè a pi egzak nan kalkil li yo, nou pral eskane done yo ak echèl li. Se pou tout nimewo yo pa depase twa. Pou fè sa, nou pral sèvi ak fonksyon StandardScaler.

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

Koulye a, done nou yo sanble tankou sa a:

Premye etap ou nan Syans Done. Titanik

Klas. Nou deja pre objektif nou!

Etap kat

Ann antrene premye modèl nou an! Soti nan bibliyotèk sklearn nou ka jwenn yon gwo kantite bagay ki enteresan. Mwen aplike modèl gradyan pou ranfòsman klasifikasyon nan pwoblèm sa a. Nou itilize yon klasifikasyon paske travay nou an se yon travay klasifikasyon. Yo ta dwe bay pronostik la nan 1 (siviv) oswa 0 (pa t 'siviv).

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

Fonksyon anfòm di Python: Kite modèl la chèche depandans ant X ak y.

Mwens pase yon segonn ak modèl la pare.

Premye etap ou nan Syans Done. Titanik

Ki jan yo aplike li? Nou pral wè kounye a!

Etap senk. Konklizyon

Koulye a, nou bezwen chaje yon tab ak done tès nou an pou ki nou bezwen fè yon pwevwa. Avèk tablo sa a nou pral fè tout menm aksyon nou te fè pou 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:])

Ann aplike modèl nou an kounye a!

gbc_predict = gbc.predict(X_test)

Tout. Nou te fè yon previzyon. Koulye a, li bezwen anrejistre nan csv epi voye l sou sit entènèt la.

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

Pare. Nou te resevwa yon dosye ki gen prediksyon pou chak pasaje. Tout sa ki rete se telechaje solisyon sa yo sou sit entènèt la epi jwenn yon evalyasyon sou pwevwa a. Tankou yon solisyon primitif bay non sèlman 74% nan repons kòrèk sou piblik la, men tou kèk UN nan Syans Done. Moun ki pi kirye yo ka ekri m nan mesaj prive a nenpòt ki lè epi poze yon kesyon. Mèsi a tout moun!

Sous: www.habr.com

Add nouvo kòmantè