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.