Langkah pertama Anda dalam Ilmu Data. Raksasa

Kata pengantar singkat

Saya yakin kita bisa melakukan lebih banyak hal jika kita diberikan petunjuk langkah demi langkah yang memberi tahu kita apa yang harus dilakukan dan bagaimana melakukannya. Saya sendiri ingat saat-saat dalam hidup saya ketika saya tidak dapat memulai sesuatu karena sulit memahami harus mulai dari mana. Mungkin, suatu saat di Internet Anda melihat kata "Ilmu Data" dan memutuskan bahwa Anda jauh dari ini, dan orang-orang yang melakukan ini ada di suatu tempat di luar sana, di dunia lain. Tidak, mereka ada di sini. Dan, mungkin, berkat orang-orang dari bidang ini, sebuah artikel muncul di feed Anda. Ada banyak kursus yang akan membantu Anda terbiasa dengan kerajinan ini, namun di sini saya akan membantu Anda mengambil langkah pertama.

Nah, apakah kamu siap? Izinkan saya memberi tahu Anda segera bahwa Anda perlu mengetahui Python 3, karena itulah yang akan saya gunakan di sini. Saya juga menyarankan Anda untuk menginstalnya di Jupyter Notebook terlebih dahulu atau melihat cara menggunakan google colab.

Π¨Π°Π³ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ

Langkah pertama Anda dalam Ilmu Data. Raksasa

Kaggle adalah asisten penting Anda dalam hal ini. Pada prinsipnya, Anda dapat melakukannya tanpanya, tetapi saya akan membicarakan hal ini di artikel lain. Ini adalah platform yang menyelenggarakan kompetisi Ilmu Data. Dalam setiap kompetisi tersebut, pada tahap awal Anda akan memperoleh pengalaman yang tidak realistis dalam memecahkan berbagai jenis masalah, pengalaman pengembangan dan pengalaman bekerja dalam tim, yang penting di zaman kita.

Kami akan mengambil tugas kami dari sana. Itu disebut "Titanic". Syaratnya begini: memprediksi apakah setiap orang akan bertahan hidup. Secara umum, tugas seseorang yang terlibat dalam DS adalah mengumpulkan data, mengolahnya, melatih model, memperkirakan, dan sebagainya. Di kaggle, kita diperbolehkan melewati tahap pengumpulan data - data tersebut disajikan di platform. Kita perlu mengunduhnya dan kita bisa memulai!

Anda dapat melakukan ini sebagai berikut:

tab Data berisi file yang berisi data

Langkah pertama Anda dalam Ilmu Data. Raksasa

Langkah pertama Anda dalam Ilmu Data. Raksasa

Kami mengunduh data, menyiapkan buku catatan Jupyter kami dan...

Π¨Π°Π³ Π²Ρ‚ΠΎΡ€ΠΎΠΉ

Bagaimana cara kami memuat data ini sekarang?

Pertama, mari impor perpustakaan yang diperlukan:

import pandas as pd
import numpy as np

Pandas akan mengizinkan kita mengunduh file .csv untuk diproses lebih lanjut.

Numpy diperlukan untuk merepresentasikan tabel data kita sebagai matriks dengan angka.
Teruskan. Mari kita ambil file train.csv dan unggah ke kami:

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

Kami akan merujuk pada pilihan data train.csv kami melalui variabel dataset. Mari kita lihat apa yang ada di sana:

dataset.head()

Langkah pertama Anda dalam Ilmu Data. Raksasa

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

Kolom yang Bertahan adalah hasil kami, yang diketahui dalam kerangka data ini. Untuk soal tugas, kita perlu memprediksi kolom Survived untuk data test.csv. Data ini menyimpan informasi tentang penumpang Titanic lainnya, yang ketika kita memecahkan masalahnya, kita tidak mengetahui hasilnya.

Jadi, mari kita bagi tabel kita menjadi data dependen dan data independen. Semuanya sederhana di sini. Data dependen adalah data yang bergantung pada data independen yang ada pada hasil. Data independen adalah data yang mempengaruhi hasil.

Misalnya, kami memiliki kumpulan data berikut:

β€œVova mengajar ilmu komputer - tidak.
Vova mendapat nilai 2 dalam ilmu komputer.”

Nilai ilmu komputer bergantung pada jawaban atas pertanyaan: apakah Vova belajar ilmu komputer? Apakah sudah jelas? Ayo maju, kita sudah semakin dekat dengan tujuan!

Variabel tradisional untuk data independen adalah X. Untuk data dependen, y.

Kami melakukan hal berikut:

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

Apa itu? Dengan fungsi iloc[:, 2: ] kami memberi tahu Python: Saya ingin melihat dalam variabel X data dimulai dari kolom kedua (inklusif dan dengan syarat penghitungan dimulai dari nol). Pada baris kedua kita katakan bahwa kita ingin melihat data di kolom pertama.

[ a:b, c:d ] adalah konstruksi dari apa yang kita gunakan dalam tanda kurung. Jika Anda tidak menentukan variabel apa pun, variabel tersebut akan disimpan sebagai default. Artinya, kita dapat menentukan [:,: d] dan kemudian kita akan mendapatkan semua kolom dalam kerangka data, kecuali kolom yang dimulai dari nomor d dan seterusnya. Variabel a dan b mendefinisikan string, tapi kita memerlukan semuanya, jadi kita membiarkannya sebagai default.

Mari kita lihat apa yang kita dapatkan:

X.head()

Langkah pertama Anda dalam Ilmu Data. Raksasa

y.head()

Langkah pertama Anda dalam Ilmu Data. Raksasa

Untuk menyederhanakan pelajaran kecil ini, kami akan menghapus kolom yang memerlukan perawatan khusus atau tidak mempengaruhi kemampuan bertahan hidup sama sekali. Mereka berisi data bertipe str.

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

Super! Mari kita lanjutkan ke langkah berikutnya.

Langkah Tiga

Di sini kita perlu mengkodekan data kita sehingga mesin lebih memahami bagaimana data ini mempengaruhi hasil. Tapi kami tidak akan mengkodekan semuanya, tetapi hanya data str yang kami tinggalkan. Kolom "Jenis Kelamin". Bagaimana kita ingin membuat kode? Mari kita nyatakan data tentang jenis kelamin seseorang sebagai vektor: 10 - laki-laki, 01 - perempuan.

Pertama, mari kita ubah tabel 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 adalah perpustakaan keren yang memungkinkan kita menyelesaikan pekerjaan dalam Ilmu Data. Ini berisi sejumlah besar model pembelajaran mesin yang menarik dan juga memungkinkan kita melakukan persiapan data.

OneHotEncoder akan memungkinkan kami mengkodekan jenis kelamin seseorang dalam representasi tersebut, seperti yang kami jelaskan. Akan dibuat 2 kelas: putra, putri. Jika yang bersangkutan adalah laki-laki, maka angka 1 akan ditulis pada kolom β€œlaki-laki”, dan 0 pada kolom β€œperempuan”.

Setelah OneHotEncoder() ada [1] - artinya kita ingin mengkodekan kolom nomor 1 (dihitung dari nol).

Super. Ayo melangkah lebih jauh!

Biasanya, hal ini terjadi ketika beberapa data dibiarkan kosong (yaitu, NaN - bukan angka). Misalnya ada informasi tentang seseorang: namanya, jenis kelamin. Namun belum ada informasi mengenai usianya. Dalam hal ini, kita akan menerapkan metode berikut: kita akan mencari mean aritmatika di semua kolom dan, jika ada data yang hilang di kolom tersebut, maka kita akan mengisi kekosongan dengan mean aritmatika.

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

Sekarang mari kita pertimbangkan bahwa situasi terjadi ketika datanya sangat besar. Beberapa data berada dalam interval [0:1], sementara beberapa lainnya mungkin melebihi ratusan dan ribuan. Untuk menghilangkan penyebaran tersebut dan membuat komputer lebih akurat dalam penghitungannya, kami akan memindai data dan menskalakannya. Biarkan semua angka tidak melebihi tiga. Untuk melakukan ini, kita akan menggunakan fungsi StandardScaler.

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

Sekarang data kami terlihat seperti ini:

Langkah pertama Anda dalam Ilmu Data. Raksasa

Kelas. Kami sudah dekat dengan tujuan kami!

Langkah keempat

Ayo latih model pertama kita! Dari perpustakaan sklearn kita dapat menemukan banyak hal menarik. Saya menerapkan model Gradient Boosting Classifier untuk masalah ini. Kami menggunakan pengklasifikasi A karena tugas kami adalah tugas klasifikasi. Prognosisnya harus ditetapkan pada 1 (selamat) atau 0 (tidak bertahan).

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 ketergantungan antara X dan y.

Kurang dari satu detik dan modelnya sudah siap.

Langkah pertama Anda dalam Ilmu Data. Raksasa

Bagaimana cara menerapkannya? Kita lihat saja sekarang!

Langkah lima. Kesimpulan

Sekarang kita perlu memuat tabel dengan data pengujian yang perlu kita buat perkiraannya. Dengan tabel ini kita akan melakukan semua tindakan yang sama seperti yang kita 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:])

Mari terapkan model kita sekarang!

gbc_predict = gbc.predict(X_test)

Semua. Kami membuat perkiraan. Sekarang perlu dicatat dalam csv dan dikirim ke situs.

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

Siap. Kami menerima file berisi prediksi setiap penumpang. Yang tersisa hanyalah mengunggah solusi ini ke situs web dan mendapatkan penilaian perkiraannya. Solusi primitif seperti itu tidak hanya memberikan 74% jawaban yang benar kepada publik, tetapi juga beberapa dorongan dalam Ilmu Data. Yang paling penasaran dapat menulis kepada saya melalui pesan pribadi kapan saja dan mengajukan pertanyaan. Terimakasih untuk semua!

Sumber: www.habr.com

Tambah komentar