Scikit Learn - API Estimator
Dalam bab ini, kita akan belajar tentang Estimator API(antarmuka pemrograman aplikasi). Mari kita mulai dengan memahami apa itu Estimator API.
Apa itu Estimator API
Ini adalah salah satu API utama yang diimplementasikan oleh Scikit-learn. Ini menyediakan antarmuka yang konsisten untuk berbagai aplikasi ML, itulah sebabnya semua algoritme pembelajaran mesin di Scikit-Learn diimplementasikan melalui Estimator API. Objek yang belajar dari data (menyesuaikan data) adalah penduga. Ini dapat digunakan dengan salah satu algoritme seperti klasifikasi, regresi, pengelompokan, atau bahkan dengan transformator, yang mengekstrak fitur berguna dari data mentah.
Untuk menyesuaikan data, semua objek estimator mengekspos metode fit yang mengambil dataset yang ditunjukkan sebagai berikut:
estimator.fit(data)
Selanjutnya, semua parameter penduga dapat disetel, sebagai berikut, saat dibuat instance-nya oleh atribut yang sesuai.
estimator = Estimator (param1=1, param2=2)
estimator.param1
Output di atas akan menjadi 1.
Setelah data dilengkapi dengan estimator, parameter diperkirakan dari data yang ada. Sekarang, semua parameter yang diestimasi akan menjadi atribut dari objek estimator yang diakhiri dengan garis bawah sebagai berikut -
estimator.estimated_param_
Penggunaan Estimator API
Kegunaan utama estimator adalah sebagai berikut -
Estimasi dan decoding model
Objek Estimator digunakan untuk estimasi dan decoding suatu model. Selanjutnya, model diestimasi sebagai fungsi deterministik berikut ini -
Parameter yang disediakan dalam konstruksi objek.
Keadaan acak global (numpy.random) jika parameter random_state penduga diatur ke tidak ada.
Semua data yang diteruskan ke panggilan terakhir ke fit, fit_transform, or fit_predict.
Setiap data yang diteruskan dalam urutan panggilan ke partial_fit.
Memetakan representasi data non persegi panjang menjadi data persegi panjang
Ini memetakan representasi data non-persegi panjang menjadi data persegi panjang. Dengan kata sederhana, dibutuhkan input di mana setiap sampel tidak direpresentasikan sebagai objek seperti array dengan panjang tetap, dan menghasilkan objek fitur seperti array untuk setiap sampel.
Perbedaan antara sampel inti dan sampel luar
Ini memodelkan perbedaan antara sampel inti dan luar dengan menggunakan metode berikut -
fit
fit_predict jika transduktif
memprediksi jika induktif
Prinsip-Prinsip Panduan
Saat mendesain Scikit-Learn API, mengikuti prinsip-prinsip panduan selalu diingat -
Konsistensi
Prinsip ini menyatakan bahwa semua objek harus berbagi antarmuka umum yang diambil dari sekumpulan metode terbatas. Dokumentasi juga harus konsisten.
Hierarki objek terbatas
Prinsip panduan ini mengatakan -
Algoritma harus diwakili oleh kelas Python
Set data harus direpresentasikan dalam format standar seperti array NumPy, Pandas DataFrames, matriks jarang SciPy.
Nama parameter harus menggunakan string Python standar.
Komposisi
Seperti yang kita ketahui, algoritma ML dapat diekspresikan sebagai urutan dari banyak algoritma fundamental. Scikit-learn menggunakan algoritme dasar ini kapan pun diperlukan.
Default yang masuk akal
Menurut prinsip ini, pustaka Scikit-learn menentukan nilai default yang sesuai setiap kali model ML memerlukan parameter yang ditentukan pengguna.
Inspeksi
Sesuai prinsip panduan ini, setiap nilai parameter yang ditentukan diekspos sebagai atribut pubis.
Langkah-langkah dalam menggunakan Estimator API
Berikut adalah langkah-langkah dalam menggunakan Scikit-Learn estimator API -
Langkah 1: Pilih kelas model
Pada langkah pertama ini, kita perlu memilih kelas model. Itu bisa dilakukan dengan mengimpor kelas Estimator yang sesuai dari Scikit-learn.
Langkah 2: Pilih hyperparameter model
Pada langkah ini, kita perlu memilih hyperparameter model kelas. Ini dapat dilakukan dengan membuat instance kelas dengan nilai yang diinginkan.
Langkah 3: Mengatur data
Selanjutnya, kita perlu menyusun data tersebut menjadi matriks fitur (X) dan vektor target (y).
Langkah 4: Model Fitting
Sekarang, kami perlu menyesuaikan model dengan data Anda. Itu bisa dilakukan dengan memanggil metode fit () dari contoh model.
Langkah 5: Menerapkan model
Setelah menyesuaikan model, kita dapat menerapkannya ke data baru. Untuk pembelajaran yang diawasi, gunakanpredict()metode untuk memprediksi label untuk data yang tidak diketahui. Sedangkan untuk pembelajaran tanpa pengawasan, gunakanpredict() atau transform() untuk menyimpulkan properti data.
Contoh Pembelajaran yang Diawasi
Di sini, sebagai contoh dari proses ini kami mengambil kasus umum pemasangan garis ke data (x, y) yaitu simple linear regression.
Pertama, kita perlu memuat dataset, kita menggunakan dataset iris -
Contoh
import seaborn as sns
iris = sns.load_dataset('iris')
X_iris = iris.drop('species', axis = 1)
X_iris.shape
Keluaran
(150, 4)
Contoh
y_iris = iris['species']
y_iris.shape
Keluaran
(150,)
Contoh
Sekarang, untuk contoh regresi ini, kita akan menggunakan contoh data berikut -
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
rng = np.random.RandomState(35)
x = 10*rng.rand(40)
y = 2*x-1+rng.randn(40)
plt.scatter(x,y);
Keluaran
Jadi, kami memiliki data di atas untuk contoh regresi linier kami.
Sekarang, dengan data ini, kita dapat menerapkan langkah-langkah yang disebutkan di atas.
Pilih kelas model
Di sini, untuk menghitung model regresi linier sederhana, kita perlu mengimpor kelas regresi linier sebagai berikut -
from sklearn.linear_model import LinearRegression
Pilih hyperparameter model
Setelah kita memilih kelas model, kita perlu membuat beberapa pilihan penting yang sering direpresentasikan sebagai hyperparameter, atau parameter yang harus disetel sebelum model disesuaikan dengan data. Di sini, untuk contoh regresi linier ini, kami ingin menyesuaikan intersep dengan menggunakanfit_intercept hyperparameter sebagai berikut -
Example
model = LinearRegression(fit_intercept = True)
model
Output
LinearRegression(copy_X = True, fit_intercept = True, n_jobs = None, normalize = False)
Mengatur data
Sekarang, seperti yang kita ketahui bahwa variabel target kita y dalam bentuk yang benar, yaitu panjang n_samplesarray 1-D. Tapi, kita perlu membentuk kembali matriks fiturX untuk menjadikannya matriks ukuran [n_samples, n_features]. Itu dapat dilakukan sebagai berikut -
Example
X = x[:, np.newaxis]
X.shape
Output
(40, 1)
Model pas
Setelah kita menyusun data, sekarang saatnya menyesuaikan model, yaitu menerapkan model kita ke data. Ini dapat dilakukan dengan bantuanfit() metode sebagai berikut -
Example
model.fit(X, y)
Output
LinearRegression(copy_X = True, fit_intercept = True, n_jobs = None,normalize = False)
Di Scikit-learn, file fit() proses memiliki beberapa garis bawah.
Untuk contoh ini, parameter di bawah ini menunjukkan kemiringan kesesuaian linier sederhana dari data -
Example
model.coef_
Output
array([1.99839352])
Parameter di bawah ini mewakili intersep dari kesesuaian linier sederhana ke data -
Example
model.intercept_
Output
-0.9895459457775022
Menerapkan model ke data baru
Setelah melatih model, kita dapat menerapkannya ke data baru. Karena tugas utama supervised machine learning adalah mengevaluasi model berdasarkan data baru yang bukan merupakan bagian dari set pelatihan. Itu bisa dilakukan dengan bantuanpredict() metode sebagai berikut -
Example
xfit = np.linspace(-1, 11)
Xfit = xfit[:, np.newaxis]
yfit = model.predict(Xfit)
plt.scatter(x, y)
plt.plot(xfit, yfit);
Output
Contoh kerja / eksekusi lengkap
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
iris = sns.load_dataset('iris')
X_iris = iris.drop('species', axis = 1)
X_iris.shape
y_iris = iris['species']
y_iris.shape
rng = np.random.RandomState(35)
x = 10*rng.rand(40)
y = 2*x-1+rng.randn(40)
plt.scatter(x,y);
from sklearn.linear_model import LinearRegression
model = LinearRegression(fit_intercept=True)
model
X = x[:, np.newaxis]
X.shape
model.fit(X, y)
model.coef_
model.intercept_
xfit = np.linspace(-1, 11)
Xfit = xfit[:, np.newaxis]
yfit = model.predict(Xfit)
plt.scatter(x, y)
plt.plot(xfit, yfit);
Contoh Pembelajaran Tanpa Pengawasan
Di sini, sebagai contoh dari proses ini kami mengambil kasus umum pengurangan dimensi dataset Iris sehingga kami dapat memvisualisasikannya dengan lebih mudah. Untuk contoh ini, kita akan menggunakan analisis komponen utama (PCA), teknik reduksi dimensi linier cepat.
Seperti contoh yang diberikan di atas, kita dapat memuat dan memplot data acak dari dataset iris. Setelah itu kita bisa mengikuti langkah-langkah seperti di bawah ini -
Pilih kelas model
from sklearn.decomposition import PCA
Pilih hyperparameter model
Example
model = PCA(n_components=2)
model
Output
PCA(copy = True, iterated_power = 'auto', n_components = 2, random_state = None,
svd_solver = 'auto', tol = 0.0, whiten = False)
Model pas
Example
model.fit(X_iris)
Output
PCA(copy = True, iterated_power = 'auto', n_components = 2, random_state = None,
svd_solver = 'auto', tol = 0.0, whiten = False)
Ubah data menjadi dua dimensi
Example
X_2D = model.transform(X_iris)
Sekarang, kita dapat memplot hasilnya sebagai berikut -
Output
iris['PCA1'] = X_2D[:, 0]
iris['PCA2'] = X_2D[:, 1]
sns.lmplot("PCA1", "PCA2", hue = 'species', data = iris, fit_reg = False);
Output
Contoh kerja / eksekusi lengkap
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
iris = sns.load_dataset('iris')
X_iris = iris.drop('species', axis = 1)
X_iris.shape
y_iris = iris['species']
y_iris.shape
rng = np.random.RandomState(35)
x = 10*rng.rand(40)
y = 2*x-1+rng.randn(40)
plt.scatter(x,y);
from sklearn.decomposition import PCA
model = PCA(n_components=2)
model
model.fit(X_iris)
X_2D = model.transform(X_iris)
iris['PCA1'] = X_2D[:, 0]
iris['PCA2'] = X_2D[:, 1]
sns.lmplot("PCA1", "PCA2", hue='species', data=iris, fit_reg=False);