Langkah pertama Anda dalam Ilmu Data. Raksasa

Pengantar kecil


Saya percaya bahwa kita dapat melakukan lebih banyak hal jika kita diberi petunjuk langkah demi langkah yang akan memberi tahu apa dan bagaimana melakukannya. Saya sendiri teringat dalam hidup saya saat-saat ketika sebuah bisnis tidak dapat dimulai karena fakta bahwa sulit untuk memahami dari mana harus memulai. Mungkin, suatu ketika di Internet Anda melihat kata-kata "Ilmu Data" dan memutuskan bahwa Anda jauh dari itu, dan orang-orang yang melakukan ini di suatu tempat di luar sana, di dunia lain. Jadi tidak, mereka ada di sini. Dan, mungkin, terima kasih kepada orang-orang dari bidang ini, sebuah artikel muncul di umpan Anda. Ada banyak kursus yang akan membantu Anda merasa nyaman dengan kerajinan ini, di sini saya akan membantu Anda mengambil langkah pertama.

Nah, apakah kamu siap? Saya harus mengatakan segera bahwa Anda harus tahu Python 3, karena saya akan menggunakannya di sini. Dan saya juga menyarankan Anda untuk melakukan pra-instal pada Notebook Jupyter atau melihat cara menggunakan google colab.

Langkah pertama


gambar

Kaggle adalah asisten penting Anda dalam hal ini. Pada prinsipnya, Anda dapat melakukannya tanpa itu, tetapi saya akan membicarakannya di artikel lain. Ini adalah platform yang menjadi tuan rumah kompetisi Ilmu Data. Dalam setiap kompetisi di tahap awal Anda akan menerima jumlah pengalaman yang tidak realistis dalam menyelesaikan berbagai masalah, pengalaman pengembangan dan pengalaman kerja tim, yang penting di zaman kita.

Kami akan mengambil tugas kami dari sana. Disebut demikian: "Titanic." Syaratnya adalah ini: untuk memprediksi setiap orang akan bertahan hidup. Secara umum, tugas orang yang terlibat dalam DS adalah pengumpulan data, pemrosesan, pelatihan model, peramalan, dan sebagainya. Di kaggle, kami diizinkan melewati tahap pengumpulan data - mereka disajikan di platform. Kami perlu mengunduhnya dan Anda dapat memulai!

Anda dapat melakukan ini sebagai berikut:

di tab Data adalah file yang berisi data, data yang

gambar

gambar

diunduh, disiapkan buku catatan Jupyter dan ...

Tahap kedua


Bagaimana kita mengunduh data ini sekarang?

Pertama, kami mengimpor perpustakaan yang diperlukan:

import pandas as pd
import numpy as np

Panda akan memungkinkan kita untuk mengunduh file .csv untuk diproses lebih lanjut.

Numpy diperlukan untuk menyajikan tabel data kami sebagai matriks dengan angka.
Berpindah. Ambil file train.csv dan unggah ke kami:

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

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

dataset.head()

gambar

Fungsi head () memungkinkan kita untuk melihat beberapa baris pertama dari frame data.

Kolom yang bertahan hanyalah hasil kami, yang dikenal dalam bingkai data ini. Pada masalah masalah, kita perlu memprediksi kolom Survived untuk data test.csv. Data ini menyimpan informasi tentang penumpang Titanic lainnya, yang bagi kami, para pembuat keputusan, tidak mengetahui hasilnya.

Jadi, kami akan membagi tabel kami menjadi data yang tergantung dan independen. Semuanya sederhana di sini. Data dependen adalah data yang independen dari apa yang ada dalam hasil. Data independen adalah data yang memengaruhi hasil.

Sebagai contoh, kami memiliki kumpulan data seperti itu:

β€œVova mengajarkan ilmu komputer - tidak.
Vova diterima di bidang ilmu komputer 2. "

Penilaian dalam ilmu komputer tergantung pada jawaban atas pertanyaan: apakah Vova mengajarkan ilmu komputer? Apakah sudah jelas? Pindah, kita lebih dekat ke tujuan!

Variabel tradisional untuk data independen adalah X. Untuk 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 mulai dari kolom kedua (secara inklusif dan asalkan penghitungan dimulai dari nol). Di baris kedua kita mengatakan bahwa kita ingin melihat data di kolom pertama.

[a: b, c: d] adalah konstruksi dari apa yang kami gunakan dalam tanda kurung. Jika Anda tidak menentukan variabel apa pun, mereka akan tetap default. Yaitu, kita dapat menentukan [:,: d] dan kemudian kita akan mendapatkan di dalam bingkai data semua kolom, kecuali kolom yang masuk, mulai dari angka d dan selanjutnya. Variabel a dan b mendefinisikan string, tetapi kita semua membutuhkannya, jadi kita biarkan default ini.

Mari kita lihat apa yang terjadi:

X.head()

gambar

y.head()

gambar

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

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

Super! Kami pergi ke langkah selanjutnya.

Langkah ketiga


Di sini kita perlu menyandikan data kita sehingga mesin lebih memahami bagaimana data ini mempengaruhi hasilnya. Tapi kami tidak akan menyandikan semuanya, tetapi hanya data tipe str yang kami tinggalkan. Kolom "Seks". Bagaimana kita ingin menyandikan? Bayangkan data tentang jenis kelamin manusia dengan vektor: 10 - pria, 01 - wanita.

Untuk memulai, kami akan menerjemahkan tabel kami ke dalam matriks NumPy:

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

Dan sekarang kita melihat:

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

Pustaka sklearn adalah pustaka keren yang memungkinkan kita melakukan pekerjaan penuh dalam Ilmu Data. Ini berisi sejumlah besar model pembelajaran mesin yang menarik, dan juga memungkinkan kita melakukan persiapan data.

OneHotEncoder akan memungkinkan kami untuk menyandikan jenis kelamin orang dalam representasi itu, seperti yang kami jelaskan. 2 kelas akan dibuat: pria, wanita. Jika orang itu laki-laki, maka masing-masing 1 akan ditulis dalam kolom "laki-laki", dan 0.

Setelah OneHotEncoder (), harganya [1] - ini artinya kita ingin menyandikan kolom nomor 1 (menghitung dari awal).

Super. Kami bergerak lebih jauh!

Sebagai aturan, ini terjadi bahwa beberapa data tetap kosong (yaitu, NaN - bukan angka). Misalnya, ada informasi tentang seseorang: namanya, jenis kelamin. Namun tidak ada data tentang usianya. Dalam hal ini, kita akan menggunakan metode ini: kita menemukan rata-rata aritmatika dari semua kolom dan, jika beberapa data hilang dalam kolom, maka isi kekosongan dengan rata-rata aritmatika.

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

Sekarang mari kita perhatikan bahwa situasi seperti itu terjadi ketika data tersebar sangat banyak. Beberapa data berada dalam interval [0: 1], dan beberapa dapat mencapai ratusan dan ribuan. Untuk mengecualikan sebaran tersebut dan komputer lebih akurat dalam perhitungan, kami akan skala data, skala itu. Biarkan semua angka tidak melebihi tiga. Untuk melakukan ini, gunakan fungsi StandartScaler.

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

Sekarang data kami terlihat seperti ini:

gambar

Kelas. Kami sudah dekat dengan tujuan kami!

Langkah keempat


Latih model pertama kami! Dari perpustakaan sklearn kita dapat menemukan banyak hal menarik. Saya menerapkan model Gradient Boosting Classifier untuk tugas ini. Kami menggunakan classifier, karena tugas kami adalah tugas klasifikasi. Penting untuk mengaitkan ramalan dengan 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 dependensi antara X dan y.

Kurang dari sedetik dan modelnya siap.

gambar

Bagaimana cara menerapkannya? Kita akan lihat sekarang!

Langkah Lima Kesimpulan


Sekarang kita perlu memuat tabel dengan data pengujian kita, untuk itu kita perlu membuat perkiraan. Dengan tabel ini, kita akan melakukan semua tindakan yang sama 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:])

Kami sudah akan menerapkan model kami!

gbc_predict = gbc.predict(X_test)

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

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

Selesai Punya file yang berisi prediksi untuk setiap penumpang. Tetap mengunggah keputusan ini ke situs dan mendapatkan perkiraan ramalan. Solusi primitif semacam itu tidak hanya memberikan 74% jawaban yang benar di masyarakat, tetapi juga beberapa dorongan untuk Ilmu Data. Yang paling ingin tahu kapan saja dapat menulis saya di pesan pribadi dan mengajukan pertanyaan. Terimakasih untuk semua!

All Articles