Langkah pertama anda dalam Sains Data. Titanic

Kata pengantar yang ringkas

Saya percaya bahawa kita boleh melakukan lebih banyak perkara jika kita diberikan arahan langkah demi langkah yang akan memberitahu kita perkara yang perlu dilakukan dan cara melakukannya. Saya sendiri masih ingat detik-detik dalam hidup saya apabila saya tidak dapat memulakan sesuatu kerana sukar untuk memahami di mana untuk bermula. Mungkin, suatu ketika dahulu di Internet anda melihat perkataan "Sains Data" dan memutuskan bahawa anda jauh dari ini, dan orang yang melakukan ini berada di suatu tempat di luar sana, di dunia lain. Tidak, mereka ada di sini. Dan mungkin, terima kasih kepada orang dari medan ini, artikel muncul pada suapan anda. Terdapat banyak kursus yang akan membantu anda selesa dengan kraf ini, tetapi di sini saya akan membantu anda mengambil langkah pertama.

Nah, adakah anda bersedia? Izinkan saya memberitahu anda dengan segera bahawa anda perlu mengetahui Python 3, kerana itulah yang akan saya gunakan di sini. Saya juga menasihati anda untuk memasangnya pada Jupyter Notebook terlebih dahulu atau lihat cara menggunakan google colab.

langkah Pertama

Langkah pertama anda dalam Sains Data. Titanic

Kaggle ialah pembantu penting anda dalam perkara ini. Pada dasarnya, anda boleh melakukannya tanpa itu, tetapi saya akan membincangkannya dalam artikel lain. Ini adalah platform yang menganjurkan pertandingan Sains Data. Dalam setiap pertandingan tersebut, pada peringkat awal anda akan memperoleh pengalaman yang tidak realistik dalam menyelesaikan pelbagai jenis masalah, pengalaman pembangunan dan pengalaman bekerja dalam satu pasukan, yang penting pada zaman kita.

Kami akan mengambil tugas kami dari sana. Ia dipanggil "Titanic". Syaratnya ialah: ramalkan sama ada setiap individu akan bertahan. Secara umumnya, tugas seseorang yang terlibat dalam DS adalah untuk mengumpul data, memprosesnya, melatih model, membuat ramalan, dan sebagainya. Dalam kaggle, kami dibenarkan melangkau peringkat pengumpulan data - ia dipersembahkan pada platform. Kami perlu memuat turunnya dan kami boleh bermula!

Berikut ialah profil pengikut percuma saya:

tab Data mengandungi fail yang mengandungi data

Langkah pertama anda dalam Sains Data. Titanic

Langkah pertama anda dalam Sains Data. Titanic

Kami memuat turun data, menyediakan buku nota Jupyter kami dan...

langkah kedua

Bagaimanakah kita sekarang memuatkan data ini?

Pertama, mari kita import perpustakaan yang diperlukan:

import pandas as pd
import numpy as np

Panda akan membenarkan kami memuat turun fail .csv untuk pemprosesan selanjutnya.

Numpy diperlukan untuk mewakili jadual data kami sebagai matriks dengan nombor.
Teruskan. Mari ambil fail train.csv dan muat naik kepada kami:

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

Kami akan merujuk kepada pemilihan data train.csv kami melalui pembolehubah set data. Mari lihat apa yang ada:

dataset.head()

Langkah pertama anda dalam Sains Data. Titanic

Fungsi head() membolehkan kita melihat beberapa baris pertama kerangka data.

Lajur Terselamat adalah tepat hasil kami, yang diketahui dalam bingkai data ini. Untuk soalan tugasan, kita perlu meramalkan lajur Survived untuk data test.csv. Data ini menyimpan maklumat tentang penumpang lain Titanic, yang mana kami, menyelesaikan masalah, tidak mengetahui hasilnya.

Jadi, mari bahagikan jadual kita kepada data bergantung dan bebas. Semuanya mudah di sini. Data bersandar ialah data yang bergantung pada data bebas yang terdapat dalam hasil. Data bebas ialah data yang mempengaruhi hasil.

Sebagai contoh, kami mempunyai set data berikut:

“Vova mengajar sains komputer - tidak.
Vova menerima 2 dalam sains komputer.”

Gred dalam sains komputer bergantung kepada jawapan kepada soalan: adakah Vova belajar sains komputer? Adakah ia jelas? Mari kita teruskan, kita sudah lebih dekat dengan matlamat!

Pembolehubah tradisional untuk data bebas ialah X. Untuk data bersandar, y.

Kami melakukan perkara berikut:

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

Apa ini? Dengan fungsi iloc[:, 2: ] kami memberitahu Python: Saya ingin melihat dalam pembolehubah X data bermula dari lajur kedua (termasuk dan dengan syarat pengiraan bermula dari sifar). Dalam baris kedua kita mengatakan bahawa kita ingin melihat data dalam lajur pertama.

[ a:b, c:d ] ialah pembinaan apa yang kita gunakan dalam kurungan. Jika anda tidak menyatakan sebarang pembolehubah, ia akan disimpan sebagai lalai. Iaitu, kita boleh menentukan [:,: d] dan kemudian kita akan mendapat semua lajur dalam rangka data, kecuali yang pergi dari nombor d dan seterusnya. Pembolehubah a dan b mentakrifkan rentetan, tetapi kita memerlukan semuanya, jadi kita biarkan ini sebagai lalai.

Mari lihat apa yang kami dapat:

X.head()

Langkah pertama anda dalam Sains Data. Titanic

y.head()

Langkah pertama anda dalam Sains Data. Titanic

Untuk memudahkan pelajaran kecil ini, kami akan mengalih keluar lajur yang memerlukan penjagaan khas atau tidak menjejaskan kemandirian langsung. Ia mengandungi data jenis str.

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

Super! Mari kita teruskan ke langkah seterusnya.

Langkah Tiga

Di sini kami perlu mengekod data kami supaya mesin lebih memahami cara data ini mempengaruhi keputusan. Tetapi kami tidak akan mengekod semua, tetapi hanya data str yang kami tinggalkan. Lajur "Sex". Bagaimana kita mahu kod? Mari kita mewakili data tentang jantina seseorang sebagai vektor: 10 - lelaki, 01 - perempuan.

Mula-mula, mari tukar jadual kita menjadi matriks NumPy:

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

Dan sekarang mari kita lihat:

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 ialah perpustakaan yang hebat yang membolehkan kami melakukan kerja lengkap dalam Sains Data. Ia mengandungi sejumlah besar model pembelajaran mesin yang menarik dan juga membolehkan kami melakukan penyediaan data.

OneHotEncoder akan membolehkan kami mengekodkan jantina seseorang dalam perwakilan itu, seperti yang kami nyatakan. 2 kelas akan diwujudkan: lelaki, perempuan. Jika orang itu lelaki, maka 1 akan ditulis dalam lajur "lelaki", dan 0 dalam lajur "wanita", masing-masing.

Selepas OneHotEncoder() terdapat [1] - ini bermakna kita ingin mengekod nombor lajur 1 (mengira dari sifar).

Super. Mari kita bergerak lebih jauh!

Sebagai peraturan, ini berlaku bahawa sesetengah data dibiarkan kosong (iaitu, NaN - bukan nombor). Sebagai contoh, terdapat maklumat tentang seseorang: namanya, jantina. Tetapi tiada maklumat mengenai umurnya. Dalam kes ini, kami akan menggunakan kaedah berikut: kami akan mencari min aritmetik ke atas semua lajur dan, jika beberapa data hilang dalam lajur, maka kami akan mengisi kekosongan dengan min aritmetik.

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

Sekarang mari kita ambil kira bahawa situasi berlaku apabila data adalah sangat besar. Sesetengah data berada dalam julat [0:1], manakala sesetengahnya mungkin melebihi ratusan dan ribuan. Untuk menghapuskan serakan tersebut dan menjadikan komputer lebih tepat dalam pengiraannya, kami akan mengimbas data dan menskalakannya. Biarkan semua nombor tidak melebihi tiga. Untuk melakukan ini, kami akan menggunakan fungsi StandardScaler.

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

Sekarang data kami kelihatan seperti ini:

Langkah pertama anda dalam Sains Data. Titanic

Kelas. Kami sudah hampir dengan matlamat kami!

Langkah keempat

Mari latih model pertama kami! Dari perpustakaan sklearn kita boleh menemui sejumlah besar perkara yang menarik. Saya menggunakan model Gradient Boosting Classifier untuk masalah ini. Kami menggunakan pengelas A kerana tugas kami ialah tugas pengelasan. Prognosis harus ditetapkan kepada 1 (terselamat) atau 0 (tidak terselamat).

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

Fungsi fit memberitahu Python: Biarkan model mencari kebergantungan antara X dan y.

Tidak sampai satu saat dan model sudah siap.

Langkah pertama anda dalam Sains Data. Titanic

Bagaimana untuk mengaplikasikannya? Kita lihat sekarang!

Langkah kelima. Kesimpulan

Kini kami perlu memuatkan jadual dengan data ujian kami yang mana kami perlu membuat ramalan. Dengan jadual ini kami akan melakukan semua tindakan yang sama yang kami lakukan untuk 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:])

Jom pakai model kami sekarang!

gbc_predict = gbc.predict(X_test)

Semua. Kami membuat ramalan. Kini ia perlu direkodkan dalam csv dan dihantar ke laman web.

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

sedia. Kami menerima fail yang mengandungi ramalan untuk setiap penumpang. Yang tinggal hanyalah memuat naik penyelesaian ini ke tapak web dan mendapatkan penilaian ramalan. Penyelesaian primitif sedemikian memberikan bukan sahaja 74% jawapan yang betul kepada orang ramai, tetapi juga beberapa dorongan dalam Sains Data. Orang yang paling ingin tahu boleh menulis kepada saya dalam mesej peribadi pada bila-bila masa dan bertanya soalan. Terima kasih kepada semua!

Sumber: www.habr.com

Beli pengehosan yang boleh dipercayai untuk tapak dengan perlindungan DDoS, pelayan VPS VDS 🔥 Beli pengehosan laman web yang boleh dipercayai dengan perlindungan DDoS, pelayan VPS VDS | ProHoster