Hapi yt i parë në Data Science. Titaniku

Një fjalë hyrëse e vogël

Mendoj se do të mund të bënim më shumë punë nëse do të na ofroheshin udhëzime hapi pas hapi që do të tregojnë se çfarë dhe si të bëjmë. Edhe unë e kujtoj në jetën time momente kur nuk mund të filloja një përpjekje për shkak se ishte e vështirë të kuptoja nga duhet të filloja. Ndoshta, dikur në të kaluarën, ke parë fjalët "Data Science" në internet dhe ke menduar se ishe shumë larg kësaj, ndërsa njerëzit që merreshin me këtë ishin diku tjetër, në një botë tjetër. Por jo, ata janë pikërisht këtu. Dhe, ndoshta, falë njerëzve nga ky sektor, një artikull të tillë e gjete në rrjedhën tënde. Ekzistojnë shumë kurse që do të të ndihmojnë të zotërosh këtë zanat, ndërsa unë do të ndihmoj të bësh hapin e parë.

Mirë, je i gatshëm? Të them menjëherë se duhet të dish Python 3, sepse atë do ta përdorim këtu. Gjithashtu, të rekomandoj të instalosh përpara Jupyter Notebook ose të shikosh se si të përdorësh google colab.

Hapi i parë

Hapi yt i parë në Data Science. Titaniku

Kaggle është ndihmës i rëndësishëm në këtë çështje. Në thelb, mund të rimarrësh, por për këtë do të flas në një artikull tjetër. Kjo është një platformë ku organizohen gara në Data Science. Në çdo garë të tillë, në fazat e para do të marrësh një sasi të paimagjinueshme përvoje për zgjidhjen e problemeve të ndryshme, për zhvillimin e projekteve dhe për punën në ekip, që është e rëndësishme në kohët tona.

Ne do ta marrim detyrën tonë nga aty. Quhet "Titanic". Kushti është: të parashikohet nëse çdo person i veçantë mbijeton. Në përgjithësi, detyra e atij që merret me DS është mbledhja e të dhënave, përpunimi i tyre, trajnimi i modelit, parashikimi etj. Në Kaggle na lejojnë të anashkalojmë fazën e mbledhjes së të dhënave - ato janë të disponueshme në platformë. Na nevojitet t'i ngarkojmë dhe mund të fillojmë punën!

Këtë mund ta bëjmë në këtë mënyrë:

në seksionin Data gjenden skedarët që përmbajnë të dhënat

Hapi yt i parë në Data Science. Titaniku

Hapi yt i parë në Data Science. Titaniku

Ngarkuam të dhënat, përgatitëm shënimet tona Jupyter dhe...

Hapi i dytë

Si më tani të ngarkojmë këto të dhëna?

Së pari, importojmë bibliotekat e nevojshme:

import pandas as pd
import numpy as np

Pandas do të na lejojë të ngarkojmë skedarët .csv për përpunimin e mëtejshëm.

Numpy është i nevojshëm për të përfaqësuar tabelën tonë të të dhënave në formën e një matrice me numra.
Të vazhdojmë. Të marrim skedarin train.csv dhe ta ngarkojmë atë:

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

Ne do të referohemi në koleksionin tonë të të dhënave train.csv përmes përcaktimit dataset. Le të shohim se çfarë ka aty:

dataset.head()

Hapi yt i parë në Data Science. Titaniku

Funksioni head() na lejon të shohim rreshtat e parë të DataFrame-it.

Kolona Survived janë, pikërisht, rezultatet tona, të cilat në këtë DataFrame janë të njohura. Duke u bazuar në detyrë, na nevojitet të parashikojmë kolonën Survived për të dhënat test.csv. Në këto të dhëna janë informacionet për pasagjerët e tjerë të Titanikut, për të cilët ne, që po zgjidhim problemin, nuk e dimë rezultatin.

Kështu, do ta ndajmë tabelën tonë në të dhëna të varura dhe të pavarura. Këtu është e thjeshtë. Të dhënat e varura janë ato të dhëna që varen nga ato të pavarura, që gjenden te rezultatet. Të dhënat e pavarura janë ato të dhëna që ndikojnë në rezultat.

Për shembull, kemi një set të dhënash:

«Vova ka mĂ«suar informatika — jo.
Vova ka marrë 2 në informatika.»

Nota në informatika varet nga përgjigja e pyetjes: a ka mësuar Vova informatika? E kuptove? Le të vazhdojmë, po afrohemi te qëllimi!

Variabla tradicionale pĂ«r tĂ« dhĂ«nat e pavarura Ă«shtĂ« X. PĂ«r tĂ« dhĂ«nat e varura — y.

Po kryejmë si vijon:

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

ÇfarĂ« Ă«shtĂ« kjo? Me funksionin iloc[:, 2: ] i tregojmĂ« Python-it: dua tĂ« shoh tĂ« dhĂ«nat qĂ« fillojnĂ« nga kolona e dytĂ« (duke pĂ«rfshirĂ« dhe duke pasur parasysh qĂ« numĂ«rimi fillon nga zero). NĂ« rreshtin e dytĂ« po themi se duam tĂ« shohim nĂ« y tĂ« dhĂ«nat nga kolona e parĂ«.

[ a:b, c:d ] — Ă«shtĂ« struktura qĂ« pĂ«rdorim nĂ« kllapat. NĂ«se nuk pĂ«rcaktojmĂ« ndonjĂ« variabĂ«l, ato do tĂ« ruhen si tĂ« parazgjedhura. Pra, mund tĂ« pĂ«rcaktojmĂ« [:,: d] dhe atĂ«herĂ« do tĂ« marrim nĂ« DataFrame tĂ« gjitha kolonat, pĂ«rveç atyre qĂ« fillojnĂ« nga numri d e mĂ« tej. Variablat a dhe b pĂ«rcaktojnĂ« rreshtat, por na duhen gjithsej, kĂ«shtu qĂ« e lĂ«mĂ« kĂ«tĂ« si tĂ« parazgjedhur.

Le të shohim se çfarë kemi arritur:

X.head()

Hapi yt i parë në Data Science. Titaniku

y.head()

Hapi yt i parë në Data Science. Titaniku

Për ta thjeshtuar këtë mësim të vogël, do të heqim kolonat që kërkojnë një "kujdes të veçantë", ose që nuk ndikojnë në mbijetesë. Ato përmbajnë të dhëna të tipit str.

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

Super! Të kalojmë në hapin e ardhshëm.

Hapi i tretë

KĂ«tu ne do tĂ« kĂ«rkojmĂ« tĂ« kodojmĂ« tĂ« dhĂ«nat tona, qĂ« makina tĂ« kuptojĂ« mĂ« mirĂ« se si kĂ«to tĂ« dhĂ«na ndikojnĂ« nĂ« rezultat. Por do tĂ« kodojmĂ« vetĂ«m tĂ« dhĂ«nat e tipit str qĂ« kemi lĂ«nĂ«. Kolona "Sex". Si dĂ«shirojmĂ« ta kodojmĂ«? Le tĂ« imagjinojmĂ« tĂ« dhĂ«nat pĂ«r gjininĂ« e njeriut si njĂ« vektor: 10 — mashkull, 01 — femĂ«r.

Së pari, le t'i kthejmë tabelat tona në një matricë NumPy:

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

Tani le të shikojmë:

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

Biblioteka sklearn është një bibliotekë shumë e fuqishme që na lejon të kryejmë punën e plotë në Data Science. Ajo përmban një numër të madh modelesh interesante të mësimit makinerik dhe gjithashtu na lejon të merremi me përgatitjen e të dhënave.

OneHotEncoder do na lejojë të kodojmë gjininë e njeriut në atë përfaqësim që e përshkruam. Do të krijohen 2 klasa: mashkullore dhe femërore. Nëse personi është mashkull, në kolonën "mashkull" do të shkruhet 1, ndërsa në "femër", përkatësisht, 0.

Pas OneHotEncoder() vjen [1] — kjo do tĂ« thotĂ« qĂ« duam tĂ« kodojmĂ« kolonĂ«n numĂ«r 1 (numĂ«rimi fillon nga zero).

Super. Po ecim më tej!

MĂ« shpesh ndodh qĂ« disa tĂ« dhĂ«na mbesin pa plotĂ«suar (domethĂ«nĂ« NaN — not a number). PĂ«r shembull, ka informacion pĂ«r njĂ« person: emri i tij, gjinia. Por nuk ka tĂ« dhĂ«na pĂ«r moshĂ«n e tij. NĂ« kĂ«tĂ« rast do tĂ« aplikojmĂ« njĂ« metodĂ« tĂ« tillĂ«: do tĂ« gjejmĂ« mesataren aritmetike pĂ«r tĂ« gjitha kolonat dhe, nĂ«se ndonjĂ« tĂ« dhĂ«nĂ« Ă«shtĂ« e humbur nĂ« njĂ« kolondĂ«, do tĂ« plotĂ«sojmĂ« boshllĂ«kun me mesataren aritmetike.

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

Tani le të merremi me rastet kur të dhënat janë shumë të shpërndara. Disa të dhëna ndodhen në intervalin [0:1], ndërsa disa mund të kalojnë qindrat dhe mijërat. Për të përjashtuar një shpërndarje të tillë dhe që kompjuteri të jetë më i saktë në llogaritje, ne do t'i kalojmë të dhënat në një shkallë më të vogël. Le të bëjmë që të gjitha numrat të mos kalojnë tre. Për këtë do të përdorim funksionin StandartScaler.

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

Tani të dhënat tona duken kështu:

Hapi yt i parë në Data Science. Titaniku

Klasa. Ne jemi afër qëllimit tonë!

Hapi i katërt

Do t'i mësojmë modelin tonë të parë! Nga biblioteka sklearn mund të gjejmë një sasi të madhe gjërash interesante. Kam aplikuar modelin Gradient Boosting Classifier për këtë detyrë. Përdorim një klasifikues, pasi objekti ynë është një detyrë klasifikimi. Duhet të parashikojmë nëse përkufizimi është 1 (ka mbijetuar) ose 0 (nuk ka mbijetuar).

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

Funksioni fit i thotë Python-it: Le të kërkojë modeli lidhjet mes X dhe y.

Më pak se një sekondë dhe modeli është gati.

Hapi yt i parë në Data Science. Titaniku

Si ta aplikojmë atë? Tani do ta shohim!

Hapi i pestë. Përfundimi

Tani duhet të ngarkojmë tabelën me të dhënat tona testuese, për të cilat duhet të bëjmë parashikimin. Me këtë tabelë do të realizojmë të njëjtat veprime që bëmë me 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:])

Të aplikojmë tani modelin tonë!

gbc_predict = gbc.predict(X_test)

Gati. Ne kemi bërë parashikimin. Tani duhet ta regjistrojmë në csv dhe ta dërgojmë në sajt.

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

Gati. Kemi marrë një skedar që përmban parashikimet për çdo pasagjer. Njësoj duhet ta ngarkojmë këtë zgjidhje në sajt dhe të marrim vlerësimin e parashikimit. Ky zgjidhje primare ofron jo vetëm 74% përgjigje të sakta në publik, por gjithashtu dhe një ndihmë në Data Science. Të gjithë të kuriozët mund të më shkruajnë në mesazhe private dhe të bëjnë pyetje. Faleminderit të gjithëve!

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster