Kali ini kita akan coba memecahkan masalah dari klien kita. Ia merupakan seorang pemilik showroom mobil. Saat ini ia memberikan kepada kita data pelanggannya berupa: Show
Ia ingin membuat sebuah sistem yang bisa memprediksi apakah calon pelanggan ke depannya akan membeli produk SUV di showroomnya atau tidak berdasarkan data usia dan gaji. Sehingga ke depannya, ia ingin membuat iklan di sosial media/internet yang dia targetkan ke mereka saja yang kemungkinan besar akan membeli produknya. Sebelum kita memulai dengan dua bahasa (Python dan R), pembaca bisa download datasetnya di sini. Bahasa Python # Mengimpor library import numpy as np import matplotlib.pyplot as plt import pandas as pd # Mengimpor dataset dataset = pd.read_csv('Iklan_sosmed.csv') X = dataset.iloc[:, [2, 3]].values y = dataset.iloc[:, 4].values # Membagi data ke dalam training dan test set from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0) # Feature Scaling from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test) # Membuat model regresi logistik dari training set from sklearn.linear_model import LogisticRegression classifier = LogisticRegression(random_state = 0) classifier.fit(X_train, y_train) # Memprediksi hasil modelnya ke test set y_pred = classifier.predict(X_test) # Membuat Confusion Matrix from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred) # Memvisualisasikan hasil training set from matplotlib.colors import ListedColormap X_set, y_set = X_train, y_train X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01), np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01)) plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('red', 'green'))) plt.xlim(X1.min(), X1.max()) plt.ylim(X2.min(), X2.max()) for i, j in enumerate(np.unique(y_set)): plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1], c = ListedColormap(('red', 'green'))(i), label = j) plt.title('Logistic Regression (Training set)') plt.xlabel('Usia') plt.ylabel('Estimasi Gaji') plt.legend() plt.show() # Memvisualisasikan hasil test set from matplotlib.colors import ListedColormap X_set, y_set = X_test, y_test X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01), np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01)) plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('red', 'green'))) plt.xlim(X1.min(), X1.max()) plt.ylim(X2.min(), X2.max()) for i, j in enumerate(np.unique(y_set)): plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1], c = ListedColormap(('red', 'green'))(i), label = j) plt.title('Logistic Regression (Test set)') plt.xlabel('Usia') plt.ylabel('Estimasi Gaji') plt.legend() plt.show() Penjelasan:
Tips : Jika pembaca bingung apa itu confusion matrix, maka cukup arahkan kursor ke line 31 pada bagian confusion matrix, lalu ketik CTRL+i secara bersamaan untuk melihat parameter apa saja yang diperlukan sekaligus pengertian dari confusion matrix. Tampilannya akan tampak sebagai berikut: Tampilan confusion matrix di pythonLangkah selanjutnya, coba klik 2x pada variabel cm di bagian variabel explorer. Jika sudah, tampilannya akan seperti ini: Perhatikan pada tabel di atas pada bagian kiri atas (pasangan 0 dan 0) dan kanan bawah (pasangan 1 dan 1) merupakan prediksi yang tepat. Kita memiliki 65 prediksi benar bahwa data poin memutuskan untuk tidak membeli, dan 24 data poin memutuskan untuk membeli, total 89. Sekarang pada tabel di atas, fokus pada bagian kanan atas (pasangan 0 dan 1) dan kiri bawah (pasangan 1 dan 0). Kita memiliki prediksi yang keliru (misal, prediksi 0 padahal data aslinya 1) sebanyak 3 dan 8 buah, total 11 buah. Secara umum, model kita sudah cukup baik. Dari 100 data poin y_test, model kita memiliki akurasi 89%.
Tampilan regresi logistik untuk training set adalah sebagai berikut: Gambar ini adalah hasil prediksi keputusan beli/tidak berdasarkan usia dan gaji yang dimiliki pelanggan. Sekarang mari kita interpretasikan gambar di atas. Hambar di atas adalah hasil regresi logistik dari data training set. Artinya model kita belajar dari training set. Titik-titik merah adalah data poin di mana pelanggan memutuskan untuk tidak membeli. Sementara titik-titik hijau adalah data poin di mana pelanggan memutuskan untuk membeli SUV. Garis diagonal adalah boundary line (garis pembatas), yang membatasi antara zona merah (zona tidak membeli) dan zona hijau (zona membeli). Dua zona ini adalah hasil pembagian dari regresi logistik. Karena regresi logistik adalah masuk dalam kategori linear, maka garis pembaginya (pembatas) adalah garis lurus. Dengan garis lurus ini, tentu saja memiliki kekurangan, semisal di zona merah kita masih bisa melihat ada beberapa data poin berwarna hijau di situ. Begitu sebaliknya di zona hijau, juga ada beberapa data poin merah di situ. Karena sudah melalui feature scaling, maka nilai sumbu x dan sumbu y berkisar dari -2 hingga 2. Untuk membacanya perlu diingat bahwa nilai nol (0), merupakan rataan dari data awal. Bisa dikatakan bahwa model ini mampu memprediksi di mana mereka yang berpenghasilan tinggi dan berusia di atas rata-rata (rata-rata dari usia training set) cenderung memutuskan untuk membeli. Sementara mereka yang berpenghasilan kecil dan berusia di bawah rata-rata, cenderung memutukan untuk tidak membeli SUV. Oleh karena itu, sebaiknya pemilik usaha fokus mengiklankan produknya di internet di zona hijau saja. Note: Kali ini kita membahas klasifikasi yang bersifat linear, di sesi selanjutnya kita bahas teknik klasifikasi untuk data non-linear yang bisa jadi akan memberikan hasil lebih akurat. Jika kita mengeksekusi line 53-67, maka prediksi regresi logistik untuk test set akan tampak sebagai berikut: Hasil prediksi regresi logistik untuk test set.Dapat dilihat bahwa hasilnya cukup baik. Jika melihat prediksi di atas, maka hasilnya cukup baik. Melalui confusion matrix kita mengetahui bahwa akurasinya 89%. Melalui model ini (visualisasi training set dan test set), maka kita bisa memberikan saran kepada pemilik usaha untuk fokus mengiklankan produk SUVnya di internet pada zona hijau, yaitu untuk mereka kalangan berpenghasilan tinggi dan usia di atas rata-rata. Apa itu Sklearn pada Python?Scikit-learn atau Sklearn adalah library berbasis Python untuk membangun model pembelajaran mesin. Ia menyediakan banyak algoritma pembelajaran untuk regresi, pengelompokan, dan klasifikasi.
Apa modul yang digunakan dalam Python untuk membuat simple linear regression?Module LinearRegression digunakan untuk memanggil algoritma Linear Regression.
Apa itu Regression machine learning?Regresi merupakan machine learning kategori supervised learning dengan target data berupa data numerik. linear regression atau least-square merupakan sebuah metode untuk memodelkan hubungan antar variabel terikat/target (Y) dengan satu atau lebih variabel bebas/prediktor (X).
Apa itu algoritma Linear Regression?Linear regression adalah salah satu algoritma yang digunakan data science dan tergolong pada algoritma supervised learning. Algoritma ini menggunakan prinsip regresi. Regresi membuat model prediksi untuk target variabel berdasarkan dari variabel bebasnya.
|