Hapi juaj i parë në Data Science. Titaniku

Një fjalë e vogël hyrëse

Mendoj se do të ishim në gjendje të bënim më shumë gjëra nëse do të kishim udhëzime hap pas hapi që do na tregojnë çfarë dhe si të bëjmë. Unë vetë e kujtoj në jetën time momente ku nuk mund të filloja diçka për shkak se ishte thjesht e vështirë të kuptoja nga të filloja. Ndoshta dikur keni parë në Internet fjalët "Data Science" dhe keni menduar se ju ishte larg, ndërsa ata që merrem me këtë janë diku tjetër, në një botë tjetër. Por ata janë këtu. Dhe ndoshta, falë njerëzve nga ky sektor, ju ka ardhur një artikull në feed-in tuaj. Ekzistojnë shumë kurse që do t'ju ndihmojnë të bëheni të njohur me këtë zanat, këtu mund t'ju ndihmoj të bëni hapin e parë.

A je gati? Të them të drejten, do të duhet të dish Python 3, pasi do ta përdor këtu. Gjithashtu, sugjeroj të instalosh para se të fillosh Jupyter Notebook ose të shohësh se si të përdorësh Google Colab.

Hapi i parë

Hapi juaj i parë në Data Science. Titaniku

Kaggle — ndihmësi yt i rëndësishëm në këtë proces. Në parim, mund të kalosh pa të, por për këtë do të flas në një artikull tjetër. Ajo është një platformë ku organizohen garat në Data Science. Në çdo garë të tillë, në etapet fillestare, do të marrësh një përvojë të jashtëzakonshme në zgjidhjen e problemeve të ndryshme, zhvillimin e zgjidhjeve dhe 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ë parashikojmë nëse çdo person i veçantë do të mbijetojë. Në përgjithësi, detyra e një njeriu që merret me DS është mbledhja e të dhënave, përpunimi i tyre, trajnimi i modelit, parashikimi dhe kështu me radhë. Në Kaggle na lejohet të kalojmë 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 janë të vendosura skedarët që përmbajnë të dhënat

Hapi juaj i parë në Data Science. Titaniku

Hapi juaj i parë në Data Science. Titaniku

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

Hapi i dytë

Si do t'i ngarkojmë tani këto të dhëna?

Së pari, importojmë bibliotekat e nevojshme:

import pandas as pd
import numpy as np

Pandas na lejon të ngarkojmë skedarët .csv për përpunim të mëvonshëm.

Numpy nevojitet për të paraqitur tabelën tonë të dhënash si një matricë me numra.
Të vazhdojmë. Merrni skedarin train.csv dhe ngarkohet te ne:

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

Ne do t'i referohemi mostrës tonë të të dhënave train.csv përmes variablit dataset. Le të shohim se çfarë ka aty:

dataset.head()

Hapi juaj i parë në Data Science. Titaniku

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

Kolona Survived janë rezultatet tona, të cilat në këtë dataframe janë të njohura. Në lidhje me detyrën, na duhet të parashikojmë kolonën Survived për të dhënat test.csv. Në këto të dhëna ruhet informata për pasagjerët e tjerë të Titanikut, për të cilët, ne që po zgjidhim detyrën, nuk kemi rezultate.

Pra, le të ndajmë tabelën tonë në të dhëna varësisht dhe pavarësisht. Këtu është e thjeshtë. Të dhënat varësisht janë ato të dhëna që varen nga të dhënat e pavarura — çfarë ndodhet në rezultate. Të dhënat e pavarura janë ato të dhëna që ndikojnë në rezultat.

Për shembull, ne kemi një grup të dhënash të tillë:

«Vova mësoi informatikë - jo.
Vova mori 2 në informatikë.»

Vlerësimi në informatikë varet nga përgjigja në pyetje: a e mësoi Vova informatikën? E kupton? Po vazhdojmë, jemi më afër qëllimit!

Variabla tradicionale për të dhëna të pavarura — X. Për të varura — y.

Ne bëjmë si më poshtë:

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

Çfarë është kjo? Me funksionin iloc[:, 2: ] ne i themi Python-it: dua të shoh në variablën X të dhënat që fillojnë nga kolona e dytë (duke përfshirë dhe me kusht që numërimi të fillojë nga zero). Në rreshtin e dytë, themi se duam të shohim në y të dhënat e kolonerës së parë.

[ a:b, c:d ] — kjo është struktura që ne përdorim në kllapat. Nëse nuk specifikojmë ndonjë variabël, ato do të ruajë vlerat e defautit. Kështu mund të specifikojmë [:,: d] dhe atëherë do të marrim në dataframe të gjitha kolonat, përveç atyre që fillojnë nga numri d dhe më pas. Variablat a dhe b përcaktojnë rreshtat, por kemi nevojë për të gjitha, kështu që e lëmë këtë në defaut.

Le të shohim se çfarë kemi arritur:

X.head()

Hapi juaj i parë në Data Science. Titaniku

y.head()

Hapi juaj i parë në Data Science. Titaniku

Për të thjeshtuar këtë mësim të vogël, ne do të hiqnim kolonat që kërkojnë „kujdes” të veçantë, ose që në tërësi nuk ndikojnë në mbijetesën. Ato përmbajnë të dhëna të tipit str.

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

Super! Shkojmë në hapin tjetër.

Hapi i tretë

Këtu do na duhet të kodifikojmë të dhënat tona, që makineria të kuptojë më mirë se si këto të dhëna ndikojnë në rezultat. Por do të kodifikojmë vetëm të dhënat e tipit str që kemi lënë. Kolona "Sex". Si duam ta kodifikojmë? Ta paraqesim informacionin për gjininë e personit si një vektor: 10 — mashkull, 01 — femër.

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

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

Dhe tani shohim:

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ë bëjmë punë të plota në Data Science. Ajo përmban një numër të madh modelesh interesante të mësimit të makinerive, si dhe na lejon të merremi me përgatitjen e të dhënave.

OneHotEncoder do të na lejojë të kodifikojmë gjininë e personit në formën që e kemi përshkruar. Do të krijohen 2 klasë: mashkull, femër. Nëse personi është mashkull, atëherë në kolonën "mashkull" do të regjistrohet 1, dhe në "femër", përkatësisht, 0.

Pas OneHotEncoder() që ndodhet [1] — kjo do të thotë se duam të kodifikojmë kolonën numër 1 (numërimi fillon nga zero).

Super. Po vazhdojmë më tutje!

Në përgjithësi, ndodhin raste kur disa të dhëna mbeten të paplotësuara (pra, NaN — not a number). Për shembull, kemi informacion për një person: emrin e tij, gjininë. Por, të dhënat për moshën e tij mungojnë. Në këtë rast, do ta zbatojmë një metodë: do të gjejmë mesataren aritmetike për të gjitha kolonat dhe, nëse ndonjë informacion në kolona mungon, do ta plotësojmë zbrazëtirën 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ë marrim parasysh se ndodhin situata kur të dhënat janë shumë të shpërndara. Disa të dhëna ndodhen në segmentin [0:1], ndërsa disa mund të arrijnë në qindra e mijëra. Për të eliminuar këtë shpërndarje dhe të bëjmë që kompjuteri të jetë më i saktë në llogaritje, ne do t'i shkallëzojmë të dhënat, do t’i mashtojmë. Le të sigurohemi që të gjitha numrat të mos kalojnë tre. Për këtë, do të përdorim funksionin StandardScaler.

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

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

Hapi juaj i parë në Data Science. Titaniku

Super. Jemi afër qëllimit tonë!

Hapi i katërt

Do të trajnojmë modelin tonë të parë! Nga biblioteka sklearn mund të gjejmë një sasi të madhe interesantësh. Kam aplikuar në këtë detyrë modelin Gradient Boosting Classifier. Përdorim një klasifikues, pasi detyra jonë është një detyrë klasifikimi. Ne duhet të parashikojmë nëse është 1 (ka mbijetuar) apo 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 marrëdhëniet në mes X dhe y.

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

Hapi juaj i parë në Data Science. Titaniku

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

Hapi i pestë. Përfundimi

Tani na nevojitet të ngarkojmë tabelën me të dhënat tona të testimit, për të cilat duhet të bëjmë një parashikim. Me këtë tabelë do të kryejmë të njëjtat hapa që bëmë për 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)

Tashi. Ne kemi përfunduar parashikimin. Tani duhet ta ruajmë në csv dhe ta dërgojmë në faqe.

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

Gati. Kemi marrë një skedar që përmban parashikimet për çdo pasagjer. Tani mbetet ta ngarkojmë këtë zgjidhje në faqe dhe të marrim vlerësimin e parashikimit. Kjo zgjidhje e thjeshtë ofron jo vetëm 74% përgjigje të sakta në publik, por gjithashtu një nxitje në Data Science. Ata më të kuriozët mund të më shkruajnë në mesazhe private dhe të bëjnë pyetje. Faleminderit për të gjithë!

Burimi: habr.com

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster