Pendahuluan
Halo semuanya, dengan senang hati saya sampaikan bahwa saya telah menyelesaikan Tugas 1 sebagai bagian dari Magang Ilmu Data dan Analisis Bisnis di yayasan percikan di bawah Program Magang Rotasi Pascasarjana.
Skenario
Ada seorang konselor di Sparks Foundation yang menasihati banyak siswa dalam perjalanan konselingnya.
Dan, kini ia dipromosikan menjadi Senior Counselor di The Sparks Foundation
bersamaan dengan itu, kini ia harus menasihati 25 siswa dalam satu angkatan yang baru saja masuk standar ke-12.
Berdasarkan pengalaman konselingnya, dia mengetahui bahwa siswa sangat bersemangat untuk mengetahui, berapa persentase nilai yang akan mereka peroleh jika mereka belajar dalam jangka waktu sebanyak itu.
Jadi, dia memutuskan untuk memberi mereka jawaban berdasarkan fakta, bukan opini.
Memahami Konteks
Dia mengumpulkan data dari mahasiswa angkatan sebelumnya mengenai berapa jam mereka belajar dan berapa persentase yang mereka dapatkan.
Lalu dia datang kepada saya (Magang di The Sparks Foundation) untuk memberikan model untuk memprediksi nilai persentase berdasarkan pada jumlah jam belajar siswa.
Setelah mendengarkan kebutuhan mereka, saya dapat dengan jelas mengatakan bahwa mereka menginginkan model yang dapat memprediksi nilai kontinu.
Pengumpulan Kebutuhan
Mari kita lihat dataset siswa kita dari angkatan sebelumnya.
Namun sebelum mengimpor dataset, kita harus mengimpor beberapa perpustakaan yang diperlukan yang akan digunakan dalam pembuatan model.
Mengimpor Perpustakaan
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns print("Libraries Imported Successfully") Libraries Imported Successfully
Mengimpor Set Data
Sekarang kita akan mengimpor dataset kita yang telah disimpan dalam file CSV bernama Students_data.csv.
df = pd.read_csv("student_data.csv") print("Data imported Successfully") Data imported Successfully
Memeriksa Set Data
Setelah mengimpor dataset, kami akan memeriksa data kami, di mana kami akan memeriksa 5 record teratas dan terbawah dari dataset tersebut.
#Print the top 5 records of df df.head()
#Print the bottom 5 records of df df.tail()
Untuk lebih memahaminya, kita akan menggunakan metode info dari DataFrame Panda yang akan memberikan informasi lengkap tentang no. kolom dan baris dalam kumpulan data bersama dengan tipe data dan nilai bukan nol, dll.
dataset.info()
Memeriksa nilai yang hilang
dataset.isnull().sum()
Jadi kita bisa melihat tidak ada nilai null di dataset tersebut, jadi kita siap memvisualisasikan dataset kita.
Memvisualisasikan data
sns.set() plt.figure(figsize=(12,6)) plt.scatter(dataset["Hours"],dataset["Scores"]) plt.title("Percentage of an student based on Study Hours",fontsize=18) plt.xlabel("Hours",fontsize=12) plt.ylabel("Percentage",fontsize=12) plt.xticks(np.arange(1,10.0000001,0.5)) plt.grid() plt.show()
setelah divisualisasikan, kita dapat melihat bahwa ada hubungan positif yang jelas antara jumlah jam belajar siswa dan persentase nilai mereka.
kita juga dapat memeriksa kekuatan korelasi antar atribut (misalnya jumlah jam belajar dan skor persentase) dengan bantuan metode yang benar.
Memeriksa korelasi antara berbagai fitur kumpulan data
dataset.corr()
Dengan koefisien korelasi sebesar 0,9762 yang tergolong korelasi positif antar atribut yang sangat tinggi.
Sampai kita menyelesaikan bagian pemeriksaan data, dan sekarang kita akan beralih ke proses pembuatan model.
Persiapan Data
Pertama-tama, kita akan membagi kumpulan data kita menjadi dua bagian, salah satunya disebut kumpulan atribut, dan bagian lainnya disebut label.
Mengonversi DataFrame di ndarray
X = dataset.iloc[:, :-1].values # converting DataFrame into ndarray(2D) y = dataset.iloc[:,-1].values # converting Series into ndarray(1D) print(X[:5])
print(y[:5])
Memisahkan dataset menjadi set Pelatihan dan set Tes
Dari atribut dan label tersebut, kita harus memisahkannya dalam hal dataset pelatihan dan pengujian.
Di sini saya akan menggunakan Perpustakaan Pembelajaran Mesin scikit-learn yang sangat populer yang dapat menangani tugas ini dengan sangat mudah.
Saya mengambil kelas train_test_split dari modul model_selection sklearn dan memberikan beberapa argumen terkait ukuran pengujian = 0,2 (misalnya 20% catatan disimpan untuk menguji keakuratan model akhir)
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.2,random_state=1) print(X_train[:5])
print(y_train[:5])
print(X_test)
print(y_test)
Melatih model Regresi Linier sederhana pada set Pelatihan
Dari visualisasi di atas terlihat bahwa dataset memiliki hubungan linier yang kuat. Dan juga, hanya ada dua variabel dalam kumpulan data jadi saya akan membuat model regresi linier sederhana yang akan memenuhi kebutuhan konselor kita dengan baik.
Untuk Melatih model Regresi Linier, saya akan menggunakan kelas LinearRegression dari modul linear_model Sklearn.
Ini akan melatih model kita dengan sangat cepat.
from sklearn.linear_model import LinearRegression regressor = LinearRegression() regressor.fit(X_train,y_train) print("Model Trained Successfully") Model Trained Successfully
Memprediksi Hasil Set Tes
Sekarang kita akan memprediksi beberapa hasil dari kumpulan data pelatihan dan pengujian dan memvisualisasikannya pada grafik.
y_pred = regressor.predict(X_test) y_pred
Sebelum memvisualisasikan hasil kumpulan data pelatihan dan pengujian, saya menunjukkan kepada Anda hasil aktual dan prediksi dari data pengujian kami.
data = pd.DataFrame({'Actual':y_test,'predicted':y_pred}) print(data)
Memvisualisasikan Hasil Set Pelatihan
Sekarang pertama-tama saya akan memvisualisasikan dataset pelatihan dengan set pelatihan dan set prediksinya.
Garis warna cyan mewakili model ML kami (misalnya Garis Lurus) yang memprediksi persentase yang diharapkan berdasarkan jumlah jam belajar, sedangkan lingkaran sebar magenta menunjukkan titik data sebenarnya.
plt.scatter(X_train,y_train, color='magenta') plt.plot(X_train,regressor.predict(X_train), color="cyan") plt.title('Marks Vs. Study Hours (Training Set)') plt.xlabel("Study of hours") plt.ylabel("Student Marks") plt.show()
Memvisualisasikan Hasil Set Tes
Demikian pula, kita dapat memvisualisasikan hasil rangkaian pengujian.
plt.scatter(X_test,y_test, color='magenta') plt.plot(X_train,regressor.predict(X_train), color="cyan") plt.title('Marks Vs. Study Hours (Test Set)') plt.xlabel("Study of hours") plt.ylabel("Student Marks") plt.show()
Evaluasi Model
Langkah terakhir adalah mengevaluasi kinerja algoritma.
Langkah ini sangat penting untuk membandingkan seberapa baik kinerja algoritme pada kumpulan data tertentu.
Untuk mempermudah di sini, saya telah memilih metrik kesalahan absolut rata-rata.
Jika Anda ingin mengetahui jarak absolut rata-rata model saat membuat prediksi, Anda dapat menggunakan MAE. Dengan kata lain, Anda ingin mengetahui seberapa dekat rata-rata prediksi tersebut dengan model sebenarnya.
Perlu diingat bahwa nilai MAE yang rendah menunjukkan bahwa model tersebut memprediksi dengan benar. Nilai MAE yang lebih besar menunjukkan bahwa model tersebut buruk dalam prediksi.
from sklearn.metrics import mean_absolute_error print("MAE",np.round(mean_absolute_error(y_test,y_pred),2)) MAE 7.88
Model terakhir untuk disampaikan kepada konselor senior kami
Akhirnya, kami mencapai model akhir kami yang terlihat bagus dan siap untuk disampaikan kepada konselor senior kami yang akan sangat membantunya dalam memberikan jawaban kepada siswanya.
study_hours = float(input("Enter no. of hours you want to give for your study in a day : ")) a=np.array(study_hours).reshape(-1,1) pred = regressor.predict(a) if a[0][0]>=8: ini="excellent" print("\nYou made an {} decision for studying {} hours in a day, then I will say you can score {} percentage of Marks.".format(ini,a[0][0],np.round(pred[0],0))) elif a[0][0]>5 and a[0][0]<8: ini="average" print("\nYou made a {} decision for studying {} hours in a day, then I will say you can score {} percentage of Marks.".format(ini,a[0][0],np.round(pred[0],0))) else: ini="poor" print("\nYou made a {} decision for studying {} hours in a day, then I will say you can score {} percentage of Marks." Enter no. of hours you want to give for your study in a day : 8 You made an excellent decision for studying 8.0 hours in a day, then I will say you can score 82.0 percentage of Marks.
Terima kasih telah membaca penjelasan model, dan jangan ragu untuk memberikan masukan Anda yang berharga. Saya akan senang melihat Anda di sana.