Léngkah munggaran anjeun dina Élmu Data. Titanic

Kecap panganteur pondok

Kuring yakin yén urang tiasa ngalakukeun langkung seueur hal upami kami dipasihan petunjuk léngkah-léngkah anu bakal nyarioskeun naon anu kedah dilakukeun sareng kumaha cara ngalakukeunana. Kuring sorangan émut momen dina kahirupan kuring nalika kuring henteu tiasa ngamimitian hiji hal sabab éta sesah ngartos dimana ngamimitian. Panginten, sakali dina Internét anjeun ningali kecap "Élmu Data" sareng mutuskeun yén anjeun jauh tina ieu, sareng jalma-jalma anu ngalakukeun ieu aya dimana waé, di dunya sanés. Henteu, aranjeunna di dieu. Jeung, meureun, hatur nuhun ka jalma ti widang ieu, artikel mucunghul dina feed Anjeun. Aya seueur kursus anu bakal ngabantosan anjeun ngabiasakeun karajinan ieu, tapi di dieu kuring bakal ngabantosan anjeun nyandak léngkah munggaran.

Muhun, anjeun siap? Hayu atuh ngabejaan Anjeun langsung nu bakal peryogi kauninga Python 3, saprak éta naon kuring bakal ngagunakeun dieu. Kuring ogé mamatahan anjeun masang éta dina Jupyter Notebook sateuacanna atanapi tingali kumaha ngagunakeun google colab.

Léngkah munggaran

Léngkah munggaran anjeun dina Élmu Data. Titanic

Kaggle mangrupikeun asistén penting anjeun dina masalah ieu. Sacara prinsip, anjeun tiasa ngalakukeun tanpa éta, tapi kuring bakal ngobrol ngeunaan ieu dina tulisan anu sanés. Ieu mangrupikeun platform anu nyayogikeun kompetisi Élmu Data. Dina unggal kompetisi sapertos kitu, dina tahap awal anjeun bakal mangtaun jumlah unrealistic pangalaman dina ngarengsekeun masalah rupa-rupa, pangalaman ngembangkeun sarta pangalaman gawé dina tim, nu penting dina jaman urang.

Urang bakal nyandak tugas urang ti dinya. Ieu disebut "Titanic". Kaayaanana kieu: prédiksi naha unggal jalma bakal salamet. Sacara umum, tugas jalma anu kalibet dina DS nyaéta ngumpulkeun data, ngolahna, ngalatih modél, ngaramal, sareng sajabana. Dina kaggle, urang diidinan ngalangkungan tahap pendataan - aranjeunna dibere dina platform. Urang kedah ngaunduh aranjeunna sareng urang tiasa ngamimitian!

Anjeun tiasa ngalakukeun ieu kieu:

tab Data ngandung file anu ngandung data

Léngkah munggaran anjeun dina Élmu Data. Titanic

Léngkah munggaran anjeun dina Élmu Data. Titanic

Kami ngaunduh data, nyiapkeun buku catetan Jupyter sareng ...

Léngkah kadua

Kumaha urang ayeuna ngamuat data ieu?

Mimiti, hayu urang ngimpor perpustakaan anu diperyogikeun:

import pandas as pd
import numpy as np

Pandas bakal ngidinan urang pikeun ngundeur file .csv pikeun ngolah salajengna.

Numpy diperlukeun pikeun ngagambarkeun tabel data urang salaku matrix kalawan angka.
Lajengkeun. Hayu urang nyandak file train.csv sareng unggah ka kami:

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

Urang bakal ngarujuk kana pilihan data train.csv kami ngaliwatan variabel dataset. Hayu urang tingali naon aya:

dataset.head()

Léngkah munggaran anjeun dina Élmu Data. Titanic

fungsi sirah () ngamungkinkeun urang pikeun nempo sababaraha baris kahiji dataframe a.

Kolom Survived mangrupikeun hasil urang, anu dipikanyaho dina kerangka data ieu. Pikeun patarosan tugas, urang kedah ngaduga kolom Salamet pikeun data test.csv. Data ieu nyimpen informasi ngeunaan panumpang séjén ti Titanic, nu urang, ngarengsekeun masalah, teu nyaho hasilna.

Ku kituna, hayu urang ngabagi tabel urang kana data gumantung jeung bebas. Sagalana basajan di dieu. Data terikat nya éta data anu gumantung kana data mandiri anu aya dina hasil. Data mandiri nya éta data anu mangaruhan hasilna.

Salaku conto, urang gaduh set data di handap ieu:

"Vova ngajarkeun élmu komputer - henteu.
Vova nampi 2 dina élmu komputer.

Kelas dina élmu komputer gumantung kana jawaban kana patarosan: naha Vova diajar élmu komputer? Éta jelas? Hayu urang ngaléngkah, urang parantos caket kana tujuan!

Variabel tradisional pikeun data bebas nyaeta X. Pikeun data gumantung, y.

Urang ngalakukeun ieu:

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

Naon éta? Kalawan fungsi iloc [:, 2:] kami ngabejaan Python: Abdi hoyong ningali dina variabel X data mimitian ti kolom kadua (inklusif jeung disadiakeun yén cacah dimimitian ti enol). Dina baris kadua urang nyebutkeun yen urang hoyong ningali data dina kolom kahiji.

[ a: b, c: d ] nya éta konstruksi naon urang dipaké dina kurung. Upami anjeun henteu netepkeun variabel naon waé, éta bakal disimpen salaku standar. Hartina, urang bisa nangtukeun [:,: d] lajeng urang bakal meunang sagala kolom dina dataframe nu, iwal jalma nu balik ti angka d salajengna. Variabel a jeung b nangtukeun string, tapi urang kudu kabeh, sangkan ninggalkeun ieu salaku standar.

Hayu urang tingali naon anu urang ngagaduhan:

X.head()

Léngkah munggaran anjeun dina Élmu Data. Titanic

y.head()

Léngkah munggaran anjeun dina Élmu Data. Titanic

Dina raraga simplify palajaran saeutik ieu, urang bakal miceun kolom nu merlukeun perawatan husus atawa teu mangaruhan survivability pisan. Éta ngandung data tina tipe str.

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

Super! Hayu urang ngaléngkah ka lengkah saterusna.

Léngkah tilu

Di dieu urang kedah encode data urang supados mesin langkung ngartos kumaha data ieu mangaruhan hasilna. Tapi urang moal encode sagalana, tapi ngan data str nu urang ditinggalkeun. Kolom "Sex". Kumaha urang rék kode? Hayu urang ngagambarkeun data ngeunaan gender hiji jalma salaku vektor: 10 - jalu, 01 - bikangna.

Mimiti, hayu urang ngarobih tabel urang kana matriks NumPy:

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

Sareng ayeuna hayu urang tingali:

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 mangrupikeun perpustakaan anu saé anu ngamungkinkeun urang pikeun ngalakukeun pagawéan lengkep dina Élmu Data. Éta ngandung sajumlah ageung modél pembelajaran mesin anu pikaresepeun sareng ogé ngamungkinkeun urang pikeun nyiapkeun data.

OneHotEncoder bakal ngamungkinkeun urang pikeun ngodekeun gender hiji jalma dina perwakilan éta, sakumaha anu dijelaskeun. 2 kelas bakal dijieun: lalaki, awéwé. Upami jalma éta lalaki, teras 1 bakal ditulis dina kolom "lalaki", sareng 0 dina kolom "awéwé", masing-masing.

Saatos OneHotEncoder () aya [1] - ieu ngandung harti yén urang rék encode kolom angka 1 (cacah ti enol).

Super. Hayu urang ngaléngkah langkung jauh!

Sakumaha aturan, ieu kajadian yén sababaraha data ditinggalkeun kosong (nyaéta, NaN - lain angka). Contona, aya informasi ngeunaan hiji jalma: ngaranna, gender. Tapi henteu aya inpormasi ngeunaan umurna. Dina hal ieu, urang bakal nerapkeun metodeu di handap ieu: urang bakal mendakan rata-rata arithmetic dina sadaya kolom sareng, upami sababaraha data leungit dina kolom, maka urang bakal ngeusian kakosongan kalayan mean arithmetic.

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

Ayeuna hayu urang tumut kana akun yén kaayaan lumangsung nalika data anu kacida gedéna. Sababaraha data aya dina interval [0:1], sedengkeun sababaraha tiasa ngalangkungan ratusan sareng rébuan. Pikeun ngaleungitkeun paburencay sapertos kitu sareng ngajantenkeun komputer langkung akurat dina itunganna, kami bakal nyeken data sareng skalana. Hayu sadaya angka teu ngaleuwihan tilu. Jang ngalampahkeun ieu, urang bakal ngagunakeun fungsi StandardScaler.

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

Ayeuna data urang sapertos kieu:

Léngkah munggaran anjeun dina Élmu Data. Titanic

Kelas. Kami parantos caket kana tujuan kami!

Lengkah kaopat

Hayu urang ngalatih model kahiji urang! Ti perpustakaan sklearn urang bisa manggihan jumlah badag hal metot. Kuring nerapkeun modél Gradién Boosting Classifier kana masalah ieu. Urang make A classifier sabab tugas urang téh tugas klasifikasi. Prognosis kedah ditugaskeun ka 1 (salamet) atanapi 0 (henteu salamet).

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

Fungsi pas ngabejaan Python: Hayu model néangan kagumantungan antara X jeung y.

Kirang ti detik sarta modél geus siap.

Léngkah munggaran anjeun dina Élmu Data. Titanic

Kumaha nerapkeunana? Urang tingali ayeuna!

Lengkah lima. kacindekan

Ayeuna urang kedah ngamuat méja kalayan data tés urang anu urang kedah ngadamel ramalan. Kalayan tabel ieu kami bakal ngalakukeun sagala tindakan anu sami anu kami lakukeun pikeun 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:])

Hayu urang nerapkeun modél urang ayeuna!

gbc_predict = gbc.predict(X_test)

Sadayana. Urang nyieun ramalan. Ayeuna kedah dirékam dina csv sareng dikirim ka situs éta.

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

Siap. Kami nampi file anu ngandung prediksi pikeun unggal panumpang. Sadaya anu tetep nyaéta unggah solusi ieu kana halaman wéb sareng kéngingkeun penilaian ramalan. Solusi primitif sapertos henteu ngan ukur masihan 74% jawaban anu leres pikeun masarakat, tapi ogé sababaraha dorongan dina Élmu Data. Anu paling panasaran tiasa nyerat ka kuring dina pesen pribadi iraha waé sareng naroskeun patarosan. Hatur nuhun ka sadayana!

sumber: www.habr.com

Tambahkeun komentar