Igbesẹ akọkọ rẹ ni Imọ-jinlẹ Data. Titanic

A kukuru iforo ọrọ

Mo gbagbọ pe a le ṣe awọn nkan diẹ sii ti a ba pese pẹlu awọn ilana igbesẹ-nipasẹ-igbesẹ ti yoo sọ fun wa kini lati ṣe ati bii a ṣe le ṣe. Emi funrarami ranti awọn akoko ninu igbesi aye mi nigbati Emi ko le bẹrẹ nkan nitori pe o nira lati ni oye ibiti MO bẹrẹ. Boya, ni ẹẹkan lori Intanẹẹti o rii awọn ọrọ “Imọ-jinlẹ data” o pinnu pe o jinna si eyi, ati pe awọn eniyan ti o ṣe eyi wa ni ibikan ni ita, ni agbaye miiran. Rara, wọn wa nibi. Ati, boya, o ṣeun si awọn eniyan lati aaye yii, nkan kan han lori kikọ sii rẹ. Ọpọlọpọ awọn iṣẹ ikẹkọ lo wa ti yoo ṣe iranlọwọ fun ọ lati lo si iṣẹ ọwọ yii, ṣugbọn nibi Emi yoo ran ọ lọwọ lati ṣe igbesẹ akọkọ.

O dara, ṣe o ṣetan? Jẹ ki n sọ fun ọ lẹsẹkẹsẹ pe iwọ yoo nilo lati mọ Python 3, nitori iyẹn ni ohun ti Emi yoo lo nibi. Mo tun gba ọ ni imọran lati fi sii sori iwe-akọọlẹ Jupyter ni ilosiwaju tabi wo bii o ṣe le lo google colab.

Igbese ọkan

Igbesẹ akọkọ rẹ ni Imọ-jinlẹ Data. Titanic

Kaggle jẹ oluranlọwọ pataki rẹ ninu ọran yii. Ni opo, o le ṣe laisi rẹ, ṣugbọn emi yoo sọ nipa eyi ni nkan miiran. Eyi jẹ pẹpẹ ti o gbalejo awọn idije Imọ-jinlẹ Data. Ni iru idije kọọkan, ni awọn ipele ibẹrẹ iwọ yoo ni iriri iriri ti ko daju ni lohun awọn iṣoro ti awọn oriṣiriṣi oriṣiriṣi, iriri idagbasoke ati iriri ṣiṣẹ ni ẹgbẹ kan, eyiti o ṣe pataki ni akoko wa.

A yoo gba iṣẹ wa lati ibẹ. O pe ni "Titanic". Ipo naa jẹ eyi: ṣe asọtẹlẹ boya ẹni kọọkan yoo ye. Ni gbogbogbo, iṣẹ-ṣiṣe ti eniyan ti o ni ipa ninu DS ni gbigba data, ṣiṣe rẹ, ikẹkọ awoṣe, asọtẹlẹ, ati bẹbẹ lọ. Ni kaggle, a gba wa laaye lati foju ipele gbigba data - wọn gbekalẹ lori pẹpẹ. A nilo lati ṣe igbasilẹ wọn ati pe a le bẹrẹ!

Eyi le ṣee ṣe bi atẹle:

Data taabu ni awọn faili ti o ni awọn data ninu

Igbesẹ akọkọ rẹ ni Imọ-jinlẹ Data. Titanic

Igbesẹ akọkọ rẹ ni Imọ-jinlẹ Data. Titanic

A ṣe igbasilẹ data naa, pese awọn iwe ajako Jupyter wa ati…

Igbese keji

Bawo ni a ṣe gbe data yii bayi?

Ni akọkọ, jẹ ki a gbe wọle awọn ile-ikawe to wulo:

import pandas as pd
import numpy as np

Pandas yoo gba wa laaye lati ṣe igbasilẹ awọn faili .csv fun sisẹ siwaju sii.

A nilo Numpy lati ṣe aṣoju tabili data wa bi matrix pẹlu awọn nọmba.
Tẹ siwaju. Jẹ ki a mu faili train.csv ki o gbe si wa:

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

A yoo tọka si yiyan data train.csv wa nipasẹ oniyipada dataset. Jẹ ki a wo kini o wa:

dataset.head()

Igbesẹ akọkọ rẹ ni Imọ-jinlẹ Data. Titanic

Iṣẹ ori () gba wa laaye lati wo awọn ori ila akọkọ ti fireemu data kan.

Awọn ọwọn Survived jẹ awọn abajade wa ni deede, eyiti a mọ ni fireemu data yii. Fun ibeere iṣẹ-ṣiṣe, a nilo lati ṣe asọtẹlẹ iwe-iwalaaye fun data test.csv. Data yii tọju alaye nipa awọn arinrin-ajo miiran ti Titanic, fun eyiti awa, yanju iṣoro naa, ko mọ abajade.

Nitorinaa, jẹ ki a pin tabili wa si data ti o gbẹkẹle ati ominira. Ohun gbogbo ni o rọrun nibi. Awọn data ti o gbẹkẹle jẹ data wọnyẹn ti o dale lori data ominira ti o wa ninu awọn abajade. Awọn data ominira jẹ data wọnyẹn ti o ni ipa lori abajade.

Fun apẹẹrẹ, a ni eto data atẹle:

“Vova kọ ẹkọ imọ-ẹrọ kọnputa - rara.
Vova gba 2 kan ni imọ-ẹrọ kọnputa. ”

Ipele ti imọ-ẹrọ kọnputa da lori idahun si ibeere naa: ṣe Vova ṣe iwadi imọ-ẹrọ kọnputa bi? Ṣe o han? Jẹ ki a tẹsiwaju, a ti sunmọ ibi-afẹde naa!

Oniyipada ibile fun data ominira jẹ X. Fun data ti o gbẹkẹle, y.

A ṣe awọn wọnyi:

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

Kini o jẹ? Pẹlu iṣẹ iloc[:, 2:] a sọ fun Python: Mo fẹ lati rii ni oniyipada X data ti o bẹrẹ lati iwe keji (pẹlu ati pese pe kika bẹrẹ lati odo). Ni ila keji a sọ pe a fẹ lati ri data ni iwe akọkọ.

[a:b, c:d] ni kikọ ohun ti a lo ninu akomo. Ti o ko ba pato awọn oniyipada eyikeyi, wọn yoo wa ni fipamọ bi aiyipada. Iyẹn ni, a le ṣe pato [:,: d] lẹhinna a yoo gba gbogbo awọn ọwọn ninu dataframe, ayafi awọn ti o lọ lati nọmba d siwaju. Awọn oniyipada a ati b ṣalaye awọn gbolohun ọrọ, ṣugbọn a nilo gbogbo wọn, nitorinaa a fi eyi silẹ bi aiyipada.

Jẹ ki a wo ohun ti a ni:

X.head()

Igbesẹ akọkọ rẹ ni Imọ-jinlẹ Data. Titanic

y.head()

Igbesẹ akọkọ rẹ ni Imọ-jinlẹ Data. Titanic

Lati le rọrun ẹkọ kekere yii, a yoo yọ awọn ọwọn ti o nilo itọju pataki tabi ko ni ipa lori iwalaaye rara. Wọn ni data ti iru str.

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

Super! Jẹ ki a lọ si igbesẹ ti n tẹle.

Igbese mẹta

Nibi a nilo lati ṣe koodu data wa ki ẹrọ naa ni oye daradara bi data yii ṣe ni ipa lori abajade. Ṣugbọn a kii yoo ṣe koodu ohun gbogbo, ṣugbọn data str nikan ti a fi silẹ. Ọwọn "Ibalopo". Bawo ni a ṣe fẹ koodu? Jẹ ki a ṣe aṣoju data nipa akọ-abo eniyan bi fekito: 10 - akọ, 01 - obinrin.

Ni akọkọ, jẹ ki a ṣe iyipada awọn tabili wa sinu matrix NumPy kan:

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

Ati nisisiyi jẹ ki a wo:

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

Ile-ikawe sklearn jẹ iru ile-ikawe ti o tutu ti o gba wa laaye lati ṣe iṣẹ pipe ni Imọ-jinlẹ Data. O ni nọmba nla ti awọn awoṣe ikẹkọ ẹrọ ti o nifẹ ati tun gba wa laaye lati ṣe igbaradi data.

OneHotEncoder yoo gba wa laaye lati ṣe koodu koodu iwa ti eniyan ni aṣoju yẹn, gẹgẹ bi a ti ṣapejuwe. Awọn kilasi 2 yoo ṣẹda: akọ, obinrin. Ti eniyan ba jẹ ọkunrin, lẹhinna 1 yoo kọ sinu iwe “akọ”, ati 0 ni iwe “obirin”, lẹsẹsẹ.

Lẹhin OneHotEncoder () o wa [1] - eyi tumọ si pe a fẹ lati koodu nọmba ọwọn 1 (kika lati odo).

Super. Jẹ ki a gbe paapaa siwaju!

Gẹgẹbi ofin, eyi ṣẹlẹ pe diẹ ninu awọn data ti wa ni ofifo (iyẹn ni, NaN - kii ṣe nọmba). Fun apẹẹrẹ, alaye wa nipa eniyan: orukọ rẹ, akọ-abo. Ṣugbọn ko si alaye nipa ọjọ ori rẹ. Ni idi eyi, a yoo lo ọna ti o tẹle: a yoo wa iṣiro iṣiro lori gbogbo awọn ọwọn ati, ti diẹ ninu awọn data ba sonu ninu iwe, lẹhinna a yoo kun ofo pẹlu iṣiro iṣiro.

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

Bayi jẹ ki a ṣe akiyesi pe awọn ipo ṣẹlẹ nigbati data ba tobi pupọ. Diẹ ninu awọn data wa ni aarin [0:1], lakoko ti diẹ ninu le kọja awọn ọgọọgọrun ati ẹgbẹẹgbẹrun. Lati yọkuro iru tuka ati lati jẹ ki kọnputa ṣe deede diẹ sii ninu awọn iṣiro rẹ, a yoo ṣayẹwo data naa ati iwọn rẹ. Jẹ ki gbogbo awọn nọmba ko koja mẹta. Lati ṣe eyi, a yoo lo iṣẹ StandardScaler.

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

Bayi data wa dabi eyi:

Igbesẹ akọkọ rẹ ni Imọ-jinlẹ Data. Titanic

Kilasi. A ti sunmọ ibi-afẹde wa tẹlẹ!

Igbesẹ Mẹrin

Jẹ ki a ṣe ikẹkọ awoṣe akọkọ wa! Lati ile-ikawe sklearn a le rii nọmba nla ti awọn nkan ti o nifẹ si. Mo lo awoṣe Ilọsiwaju Ilọsiwaju Gradient si iṣoro yii. A lo A classifier nitori iṣẹ-ṣiṣe wa jẹ iṣẹ-ṣiṣe isọdi. O yẹ ki a sọ asọtẹlẹ naa si 1 (laaye) tabi 0 (ko ye).

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

Iṣẹ ibamu naa sọ fun Python: Jẹ ki awoṣe wa fun awọn igbẹkẹle laarin X ati y.

Kere ju iṣẹju kan ati awoṣe ti ṣetan.

Igbesẹ akọkọ rẹ ni Imọ-jinlẹ Data. Titanic

Bawo ni lati lo? A yoo rii ni bayi!

Igbese marun. Ipari

Bayi a nilo lati gbe tabili kan pẹlu data idanwo wa fun eyiti a nilo lati ṣe asọtẹlẹ kan. Pẹlu tabili yii a yoo ṣe gbogbo awọn iṣe kanna ti a ṣe fun 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:])

Jẹ ki a lo awoṣe wa ni bayi!

gbc_predict = gbc.predict(X_test)

Gbogbo. A ṣe asọtẹlẹ kan. Bayi o nilo lati gba silẹ ni csv ati firanṣẹ si aaye naa.

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

Ṣetan. A gba faili kan ti o ni awọn asọtẹlẹ fun ero kọọkan. Gbogbo ohun ti o ku ni lati gbejade awọn solusan wọnyi si oju opo wẹẹbu ati gba iṣiro ti asọtẹlẹ naa. Iru ojutu alakoko yoo fun kii ṣe 74% ti awọn idahun to tọ lori gbogbo eniyan, ṣugbọn tun diẹ ninu iwuri ni Imọ-jinlẹ data. Iyanilenu julọ le kọ si mi ni awọn ifiranṣẹ aladani nigbakugba ati beere ibeere kan. O ṣeun si gbogbo!

orisun: www.habr.com

Fi ọrọìwòye kun