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ë

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


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

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() 
y.head() 
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:

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.

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
