Langkah pisanan sampeyan ing Ilmu Data. Titanic

Tembung pambuka cekak

Aku percaya yen kita bisa nindakake luwih akeh yen kita diwenehi instruksi langkah-langkah sing bakal ngandhani apa sing kudu ditindakake lan kepiye carane. Aku dhewe ngelingi momen-momen ing uripku nalika aku ora bisa miwiti soko amarga mung angel ngerti ngendi arep miwiti. Mbok menawa, biyen ing Internet sampeyan ndeleng tembung "Ilmu Data" lan mutusake manawa sampeyan adoh saka iki, lan wong-wong sing nindakake iki ana ing endi wae, ing jagad liyane. Ora, dheweke ana ing kene. Lan, mbok menawa, matur nuwun kanggo wong saka lapangan iki, artikel muncul ing feed sampeyan. Ana akeh kursus sing bakal mbantu sampeyan sinau babagan kerajinan iki, nanging ing kene aku bakal mbantu sampeyan njupuk langkah pertama.

Inggih, sampeyan siap? Ayo kula pitutur marang kowe langsung yen sampeyan kudu ngerti Python 3, amarga iku sing bakal digunakake ing kene. Aku uga menehi saran supaya sampeyan nginstal ing Jupyter Notebook luwih dhisik utawa ndeleng carane nggunakake google colab.

Langkah siji

Langkah pisanan sampeyan ing Ilmu Data. Titanic

Kaggle minangka asisten penting sampeyan ing perkara iki. Ing asas, sampeyan bisa nindakake tanpa iku, nanging aku bakal pirembagan bab iki ing artikel liyane. Iki minangka platform sing dadi tuan rumah kompetisi Ilmu Data. Ing saben kompetisi kasebut, ing tahap awal sampeyan bakal entuk pengalaman sing ora nyata kanggo ngrampungake masalah saka macem-macem jinis, pengalaman pangembangan lan pengalaman kerja ing tim, sing penting ing jaman saiki.

Kita bakal njupuk tugas kita saka ing kono. Iki diarani "Titanic". Kahanane yaiku: prΓ©dhiksi manawa saben wong bakal slamet. UmumΓ©, tugas wong sing melu DS yaiku ngumpulake data, ngolah, nglatih model, ramalan, lan liya-liyane. Ing kaggle, kita diijini ngliwati tahap pengumpulan data - ditampilake ing platform. Kita kudu ngundhuh lan kita bisa miwiti!

Sampeyan bisa nindakake kaya ing ngisor iki:

tab Data ngemot file sing ngemot data

Langkah pisanan sampeyan ing Ilmu Data. Titanic

Langkah pisanan sampeyan ing Ilmu Data. Titanic

Kita ngundhuh data, nyiapake notebook Jupyter lan ...

Langkah loro

Kepiye carane saiki mbukak data iki?

Pisanan, ayo ngimpor perpustakaan sing dibutuhake:

import pandas as pd
import numpy as np

Pandas bakal ngidini kita ndownload file .csv kanggo diproses luwih lanjut.

Numpy dibutuhake kanggo makili tabel data minangka matriks kanthi angka.
Terusna. Ayo njupuk file train.csv lan upload menyang kita:

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

Kita bakal ngrujuk marang pilihan data train.csv liwat variabel dataset. Ayo ndeleng apa sing ana:

dataset.head()

Langkah pisanan sampeyan ing Ilmu Data. Titanic

Fungsi sirah () ngidini kita ndeleng sawetara baris pisanan saka pigura data.

Kolom Survived minangka asil kita, sing dikenal ing kerangka data iki. Kanggo pitakonan tugas, kita kudu prΓ©dhiksi kolom Survived kanggo data test.csv. Data iki nyimpen informasi babagan penumpang liyane saka Titanic, sing kita, ngrampungake masalah, ora ngerti asil.

Dadi, ayo dibagi tabel dadi data gumantung lan mandiri. Kabeh iku prasaja ing kene. Data gumantung yaiku data sing gumantung saka data independen sing ana ing asil. Data independen yaiku data sing mengaruhi asil.

Contone, kita duwe set data ing ngisor iki:

"Vova ngajar ilmu komputer - ora.
Vova nampa 2 ing ilmu komputer.

Kelas ing ilmu komputer gumantung marang jawaban kanggo pitakonan: apa Vova sinau ilmu komputer? Apa cetha? Ayo maju, kita wis nyedhaki target!

Variabel tradisional kanggo data bebas yaiku X. Kanggo data gumantung, y.

Kita nindakake ing ngisor iki:

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

Opo iki? Kanthi fungsi iloc [:, 2:] kita marang Python: Aku pengin ndeleng ing variabel X data wiwit saka kolom kapindho (kalebu lan kasedhiya yen pancacahan wiwit saka nul). Ing baris kapindho kita ngomong yen kita pengin ndeleng data ing kolom pisanan.

[ a: b, c: d ] yaiku konstruksi saka apa sing digunakake ing kurung. Yen sampeyan ora nemtokake variabel apa wae, bakal disimpen minangka standar. Yaiku, kita bisa nemtokake [:,: d] banjur bakal entuk kabeh kolom ing dataframe, kajaba sing pindhah saka nomer d terus. Variabel a lan b nemtokake strings, nanging kita kudu kabeh, supaya kita ninggalake iki minangka standar.

Ayo ndeleng apa sing entuk:

X.head()

Langkah pisanan sampeyan ing Ilmu Data. Titanic

y.head()

Langkah pisanan sampeyan ing Ilmu Data. Titanic

Kanggo nyederhanakake pawulangan cilik iki, kita bakal mbusak kolom sing mbutuhake perawatan khusus utawa ora mengaruhi kelangsungan urip. Padha ngemot data saka jinis str.

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

Super! Ayo pindhah menyang langkah sabanjure.

Langkah Tiga

Ing kene kita kudu encode data supaya mesin luwih ngerti carane data iki mengaruhi asil. Nanging kita ora bakal encode kabeh, nanging mung data str sing kita ninggalake. Kolom "Sex". Kepiye carane kita pengin kode? Ayo makili data babagan gender wong minangka vektor: 10 - lanang, 01 - wadon.

Pisanan, ayo ngowahi tabel dadi matriks NumPy:

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

Lan saiki ayo ndeleng:

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

Perpustakaan sklearn minangka perpustakaan kelangan sing ngidini kita nindakake karya lengkap ing Ilmu Data. Isine akeh model pembelajaran mesin sing menarik lan uga ngidini kita nindakake persiapan data.

OneHotEncoder bakal ngidini kita ngodhe jender wong ing perwakilan kasebut, kaya sing wis diterangake. 2 kelas bakal digawe: lanang, wadon. Yen wong lanang, banjur 1 bakal ditulis ing kolom "lanang", lan 0 ing kolom "wadon".

Sawise OneHotEncoder () ana [1] - iki tegese kita pengin encode kolom nomer 1 (ngetung saka nul).

Super. Ayo dadi luwih maju!

Minangka aturan, iki kedadeyan yen sawetara data ditinggalake kosong (yaiku, NaN - dudu nomer). Contone, ana informasi babagan wong: jenenge, jender. Nanging ora ana informasi babagan umure. Ing kasus iki, kita bakal nggunakake cara ing ngisor iki: kita bakal nemokake rata-rata aritmetika ing kabeh kolom lan, yen sawetara data ilang ing kolom, banjur kita bakal ngisi kekosongan kanthi rata-rata aritmetika.

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

Saiki ayo dipikirake yen kahanan kedadeyan nalika data gedhe banget. Sawetara data ana ing interval [0:1], dene sawetara bisa ngluwihi atusan lan ewu. Kanggo ngilangi panyebaran kasebut lan nggawe komputer luwih akurat ing petungan, kita bakal mindhai data lan ukurane. Ayo kabeh nomer ora ngluwihi telung. Kanggo nindakake iki, kita bakal nggunakake fungsi StandardScaler.

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

Saiki data kita katon kaya iki:

Langkah pisanan sampeyan ing Ilmu Data. Titanic

kelas. Kita wis cedhak karo tujuan kita!

Langkah papat

Ayo latihan model pisanan kita! Saka perpustakaan sklearn, kita bisa nemokake akeh perkara sing menarik. Aku nggunakake model Gradient Boosting Classifier kanggo masalah iki. Kita nggunakake klasifikasi A amarga tugas kita minangka tugas klasifikasi. Prognosis kudu diwenehi 1 (slamet) utawa 0 (ora slamet).

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

Fungsi pas ngandhani Python: Ayo model katon kanggo dependensi antarane X lan y.

Kurang saka detik lan model wis siyap.

Langkah pisanan sampeyan ing Ilmu Data. Titanic

Carane nglamar? Kita bakal weruh saiki!

Langkah kaping lima. Kesimpulan

Saiki kita kudu mbukak tabel kanthi data tes sing kudu diramalake. Kanthi tabel iki, kita bakal nindakake kabeh tumindak sing padha karo 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:])

Ayo aplikasi model kita saiki!

gbc_predict = gbc.predict(X_test)

Kabeh. Kita nggawe ramalan. Saiki kudu direkam ing csv lan dikirim menyang situs kasebut.

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

siyap. Kita nampa file sing ngemot prediksi kanggo saben penumpang. Sing isih ana yaiku ngunggah solusi kasebut menyang situs web lan entuk penilaian ramalan. Solusi primitif kasebut ora mung menehi 74% jawaban sing bener kanggo masarakat, nanging uga sawetara dorongan ing Ilmu Data. Sing paling penasaran bisa nulis menyang pesen pribadi kapan wae lan takon. Matur nuwun kanggo kabeh!

Source: www.habr.com

Add a comment