A’ chiad cheum agad ann an Saidheans Dàta. Titanic

Facal ro-ràdh goirid

Tha mi a’ creidsinn gum b’ urrainn dhuinn barrachd rudan a dhèanamh nan tugadh sinn stiùireadh ceum air cheum a dh’ innseadh dhuinn dè a nì sinn agus ciamar a nì sinn e. Tha cuimhne agam fhìn air amannan nam bheatha nuair nach b’ urrainn dhomh rudeigin a thòiseachadh oir bha e dìreach duilich a thuigsinn càite an tòisicheadh ​​​​mi. Is dòcha, aon uair air an eadar-lìn, chunnaic thu na faclan "Saidheans Dàta" agus cho-dhùin thu gu robh thu fada bho seo, agus bha na daoine a tha a 'dèanamh seo an àiteigin a-muigh an sin, ann an saoghal eile. Chan e, tha iad ceart an seo. Agus, is dòcha, le taing dha daoine bhon raon seo, nochd artaigil air do bhiadhadh. Tha cùrsaichean gu leòr ann a chuidicheas tu gus fàs cleachdte ris a’ cheàird seo, ach an seo cuidichidh mi thu gus a’ chiad cheum a ghabhail.

Uill, a bheil thu deiseil? Innsidh mi dhut anns a’ bhad gum feum thu eòlas fhaighinn air Python 3, oir is e sin a bhios mi a’ cleachdadh an seo. Tha mi cuideachd a’ toirt comhairle dhut a stàladh air Jupyter Notebook ro làimh no faicinn mar a chleachdas tu google colab.

Ceum a h-aon

A’ chiad cheum agad ann an Saidheans Dàta. Titanic

Is e Kaggle an neach-cuideachaidh cudromach agad sa chùis seo. Ann am prionnsabal, faodaidh tu a dhèanamh às aonais, ach bruidhnidh mi mu dheidhinn seo ann an artaigil eile. Is e àrd-ùrlar a tha seo a bhios a’ cumail farpaisean Saidheans Dàta. Anns gach farpais mar sin, anns na tràth ìrean gheibh thu eòlas neo-phractaigeach ann a bhith a’ fuasgladh dhuilgheadasan de dhiofar seòrsa, eòlas leasachaidh agus eòlas ag obair ann an sgioba, rud a tha cudromach nar n-ùine.

Gabhaidh sinn ar n-obair as a sin. Canar "Titanic" ris. Is e an suidheachadh seo: dèan ro-innse am bi gach neach fa leth beò. San fharsaingeachd, is e obair neach a tha an sàs ann an DS dàta a chruinneachadh, a ghiullachd, modal a thrèanadh, ro-innse, agus mar sin air adhart. Ann an kaggle, tha cead againn an ìre cruinneachadh dàta a sheachnadh - tha iad air an taisbeanadh air an àrd-ùrlar. Feumaidh sinn an luchdachadh sìos agus is urrainn dhuinn tòiseachadh!

Faodaidh tu seo a dhèanamh mar a leanas:

tha faidhlichean anns a bheil dàta anns an taba Dàta

A’ chiad cheum agad ann an Saidheans Dàta. Titanic

A’ chiad cheum agad ann an Saidheans Dàta. Titanic

Luchdaich sìos sinn an dàta, dh’ ullaich sinn na leabhraichean notaichean Jupyter againn agus…

Ceum a dhà

Ciamar a luchdaicheas sinn an dàta seo a-nis?

An toiseach, leig dhuinn na leabharlannan riatanach a thoirt a-steach:

import pandas as pd
import numpy as np

Leigidh Pandas leinn faidhlichean .csv a luchdachadh sìos airson tuilleadh giollachd.

Tha feum air numpy gus ar clàr dàta a riochdachadh mar mhaitris le àireamhan.
Siuthad. Gabhamaid am faidhle train.csv agus luchdaich sinn suas e dhuinn:

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

Bheir sinn iomradh air an taghadh dàta train.csv againn tron ​​chaochladair dàta. Chì sinn dè tha ann:

dataset.head()

A’ chiad cheum agad ann an Saidheans Dàta. Titanic

Tha an gnìomh ceann () a’ leigeil leinn coimhead air a’ chiad beagan shreathan de fhrèam-dàta.

Is e na colbhan Survived dìreach na toraidhean againn, a tha aithnichte san fhrèam dàta seo. Airson ceist na h-obrach, feumaidh sinn an colbh Survived a ro-innse airson dàta test.csv. Bidh an dàta seo a 'stòradh fiosrachadh mu luchd-siubhail eile an Titanic, airson a bheil sinn, a' fuasgladh na duilgheadas, chan eil fios againn air a 'bhuil.

Mar sin, roinnidh sinn ar clàr gu dàta eisimeil agus neo-eisimeileach. Tha a h-uile dad sìmplidh an seo. Is e dàta eisimeilich an dàta sin a tha an urra ris an dàta neo-eisimeileach a tha anns na builean. Is e dàta neo-eisimeileach an dàta sin a bheir buaidh air a’ bhuil.

Mar eisimpleir, tha an seata dàta a leanas againn:

“Bha Vova a’ teagasg saidheans coimpiutair - cha robh.
Fhuair Vova 2 ann an saidheans coimpiutaireachd."

Tha an ìre ann an saidheans coimpiutaireachd an urra ri freagairt na ceiste: an do rinn Vova sgrùdadh air saidheans coimpiutair? A bheil e soilleir? Gluaisidh sinn air adhart, tha sinn mu thràth nas fhaisge air an amas!

Is e an caochladair traidiseanta airson dàta neo-eisimeileach X. Airson dàta eisimeileach, y.

Bidh sinn a’ dèanamh na leanas:

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

Dè th' ann? Leis an gnìomh iloc [:, 2: ] bidh sinn ag innse do Python: tha mi airson fhaicinn ann an caochladair X an dàta a’ tòiseachadh bhon dàrna colbh (in-ghabhalach agus fhad ‘s a thòisicheas cunntadh bho neoni). Anns an dàrna loidhne tha sinn ag ràdh gu bheil sinn airson an dàta fhaicinn sa chiad cholbh.

Is e [ a: b, c: d ] togail na bhios sinn a’ cleachdadh ann am brathan. Mura sònraich thu caochladairean sam bith, thèid an sàbhaladh mar an àbhaist. Is e sin, is urrainn dhuinn [:,: d] a shònrachadh agus an uairsin gheibh sinn a h-uile colbh san dataframe, ach a-mhàin an fheadhainn a tha a’ dol bho àireamh d air adhart. Bidh na caochladairean a agus b a’ mìneachadh sreangan, ach feumaidh sinn iad uile, agus mar sin fàgaidh sinn seo mar bhunait.

Chì sinn dè fhuair sinn:

X.head()

A’ chiad cheum agad ann an Saidheans Dàta. Titanic

y.head()

A’ chiad cheum agad ann an Saidheans Dàta. Titanic

Gus an leasan beag seo a dhèanamh nas sìmplidhe, bheir sinn air falbh colbhan a dh ’fheumas cùram sònraichte no nach toir buaidh air mairsinn idir. Tha dàta annta de sheòrsa str.

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

Sàr! Gluaisidh sinn air adhart chun ath cheum.

Ceum a Trì

An seo feumaidh sinn an dàta againn a chòdachadh gus am bi tuigse nas fheàrr aig an inneal mar a bheir an dàta seo buaidh air an toradh. Ach cha bhith sinn a’ còdachadh a h-uile càil, ach dìreach an dàta str a dh’ fhàg sinn. Colbh "Gnè". Ciamar a tha sinn airson còd a dhèanamh? Bidh sinn a 'riochdachadh dàta mu ghnè neach mar vectar: ​​10 - fireann, 01 - boireann.

An toiseach, tionndaidhidh sinn na bùird againn gu matrix NumPy:

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

Agus a-nis leig dhuinn coimhead:

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

Tha an leabharlann sklearn na leabharlann cho fionnar a leigeas leinn obair iomlan a dhèanamh ann an Saidheans Dàta. Tha àireamh mhòr de mhodalan ionnsachaidh inneal inntinneach ann agus leigidh e leinn ullachadh dàta a dhèanamh cuideachd.

Leigidh OneHotEncoder leinn gnè neach a chòdachadh san riochdachadh sin, mar a mhìnich sinn. Thèid clasaichean 2 a chruthachadh: fireannach, boireann. Ma tha an neach na dhuine, thèid 1 a sgrìobhadh anns a’ cholbh “fireann”, agus 0 anns a’ cholbh “boireann”, fa leth.

Às deidh OneHotEncoder() tha [1] - tha seo a’ ciallachadh gu bheil sinn airson àireamh colbh 1 a chòdachadh (a’ cunntadh bho neoni).

Sàr. Gluaisidh sinn eadhon nas fhaide!

Mar riaghailt, tha seo a 'tachairt gu bheil cuid de dhàta air fhàgail bàn (is e sin, NaN - chan e àireamh). Mar eisimpleir, tha fiosrachadh mu neach: ainm, gnè. Ach chan eil fiosrachadh sam bith ann mun aois aige. Anns a 'chùis seo, cuiridh sinn an dòigh a leanas an sàs: lorgaidh sinn am meanbh-àireamhachd thairis air a h-uile colbh agus, ma tha cuid de dhàta a dhìth anns a' cholbh, lìonaidh sinn a 'bheàrn leis a' mheadhan àireamhachd.

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

A-nis bheir sinn aire gu bheil suidheachaidhean a’ tachairt nuair a tha an dàta glè mhòr. Tha cuid de dhàta anns an eadar-ama [0:1], agus dh’ fhaodadh cuid a dhol nas fhaide na ceudan is mìltean. Gus cuir às do leithid de sgapadh agus gus an coimpiutair a dhèanamh nas cruinne na àireamhachadh, bidh sinn a’ sganadh an dàta agus ga sgèile. Na biodh a h-uile àireamh nas àirde na trì. Gus seo a dhèanamh, cleachdaidh sinn gnìomh StandardScaler.

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

A-nis tha an dàta againn a’ coimhead mar seo:

A’ chiad cheum agad ann an Saidheans Dàta. Titanic

Clas. Tha sinn mu thràth faisg air ar n-amas!

Ceum ceithir

Feuch an trèanadh sinn a’ chiad mhodail againn! Bhon leabharlann sklearn gheibh sinn àireamh mhòr de rudan inntinneach. Chuir mi am modal Clasaiche Boosting Gradient an sàs san duilgheadas seo. Bidh sinn a’ cleachdadh seòrsaiche A oir is e obair seòrsachaidh a th’ anns an obair againn. Bu chòir an prognosis a bhith air a shònrachadh do 1 (air a mhair beò) no 0 (cha do mhair beò).

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

Tha an gnìomh iomchaidh ag innse do Python: Leig leis a’ mhodail coimhead airson eisimeileachd eadar X agus y.

Nas lugha na diog agus tha am modail deiseil.

A’ chiad cheum agad ann an Saidheans Dàta. Titanic

Ciamar a chur an sàs? Chì sinn a-nis!

Ceum a còig. Co-dhùnadh

A-nis feumaidh sinn clàr a luchdachadh leis an dàta deuchainn againn air am feum sinn ro-shealladh a dhèanamh. Leis a’ chlàr seo nì sinn na h-aon ghnìomhan a rinn sinn airson 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:])

Feuch an cuir sinn am modail againn an sàs a-nis!

gbc_predict = gbc.predict(X_test)

Uile. Rinn sinn ro-aithris. A-nis feumar a chlàradh ann an csv agus a chuir chun làrach-lìn.

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

Ready. Fhuair sinn faidhle anns an robh ro-innse airson gach neach-siubhail. Chan eil air fhàgail ach na fuasglaidhean sin a luchdachadh suas chun làrach-lìn agus measadh fhaighinn air an ro-aithris. Tha fuasgladh prìomhadail mar seo a’ toirt chan e a-mhàin 74% de fhreagairtean ceart don phoball, ach cuideachd beagan spionnadh ann an Saidheans Dàta. Faodaidh an fheadhainn as neònach sgrìobhadh thugam ann am teachdaireachdan prìobhaideach aig àm sam bith agus ceist fhaighneachd. Mòran taing dha na h-uile!

Source: www.habr.com

Cuir beachd ann