Kode program yang akan diajarkan di sini bisa diunduh di tautan berikut ini, untuk membukanya upload berkasnya dari Google Colab.
Untuk latihan kali ini kita akan menggunakan bagaimana grid search mencari parameter terbaik pada sebuah model SVR. Dataset yang kita gunakan sama seperti di modul 3 yaitu dataset gaji. Pada latihan tersebut model belum mampu menyesuaikan pola pada data dengan baik.
Pada latihan ini kita akan mencari parameter yang lebih baik dengan menggunakan grid search agar model menjadi lebih baik.
Pertama, undul berkas "Salary_Data.csv", dari tautan berikut ini. Jika sudah jangan lupa upload ke Google Colab Anda.
Pada cell pertama impor library dasar dan ubah berkas dataset menjadi dataframe.
- import pandas as pd
- from sklearn.model_selection import train_test_split
- from sklearn.preprocessing import StandardScaler
- data = pd.read_csv('Salary_Data.csv')
Kemudian pisahkan atribut dan label pada dataset. Masih ingat bukan, bahwa jika hanya terdapat 1 atribut pada dataset kita perlu mengubah bentuknya agar bisa dipakai pada pelatihan model.
- import numpy as np
- X = data['YearsExperience']
- y = data['Salary']
- X = X[:,np.newaxis]
Selanjutnya, untuk menggunakan grid search, kita impor library GridSearchCV dari sklearn.model_selection. Lalu kita buat model yang ingin kita uji dengan grid search dalam hal ini model SVR. Kemudian kita buat sebuah python dictionary yang berisi nama parameter yang akan diuji, serta nilai-nilainya. Selanjutnya kita buat objek grid search dan mengisi parameter-parameternya. Parameter pertama adalah model yang akan kita uji. Parameter kedua adalah dictionary yang berisi kumpulan parameter dari model yang akan diuji. Terakhir kita panggil fungsi fit() pada objek grid search yang telah kita buat.
- from sklearn.model_selection import GridSearchCV
- from sklearn.svm import SVR
- model = SVR()
- parameters = {
- 'kernel': ['rbf'],
- 'C': [1000, 10000, 100000],
- 'gamma': [0.5, 0.05,0.005]
- }
- grid_search = GridSearchCV(model, parameters)
- grid_search.fit(X,y)
Setelah grid search mencari parameter terbaik pada model, kita bisa menampilkan parameter terbaik dengan memanggil atribut best_params_ dari objek grid search.
- print(grid_search.best_params_)
Selanjutnya Anda bisa mencoba membuat model SVM baru dengan parameter hasil grid search dan melatihnya pada data.
- model_baru = SVR(C=100000, gamma=0.005, kernel='rbf')
- model_baru.fit(X,y)
Terakhir kita bisa memvisualisasikan SVR dengan parameter hasil grid search. Dapat dilihat dari hasil plot bahwa grid search berhasil mencari parameter yang lebih baik sehingga meningkatkan performa dari model.
- import matplotlib.pyplot as plt
- plt.scatter(X, y)
- plt.plot(X, model_baru.predict(X))
Selamat! Anda telah memahami dan bisa menggunakan grid search untuk mencari parameter terbaik dari suatu model. Dengan grid search Anda akan menghemat banyak waktu dalam mencari parameter terbaik dari model machine learning yang anda kembangkan ke depannya