บทนำ
สวัสดีทุกคน ฉันดีใจที่ได้แจ้งให้ทราบว่าฉันได้สำเร็จภารกิจที่ 1 แล้วโดยเป็นส่วนหนึ่งของการฝึกงาน Data Science และ Business Analytics ที่มูลนิธิ Sparks ภายใต้โครงการ Graduate Rotational Internship Program
สถานการณ์
มีที่ปรึกษาที่มูลนิธิ Sparks ซึ่งคอยให้คำปรึกษาแก่นักเรียนหลายคนตลอดเส้นทางการให้คำปรึกษาของเธอ
และตอนนี้เธอได้เลื่อนตำแหน่งเป็นที่ปรึกษาอาวุโสที่ The Sparks Foundation
ควบคู่กับตอนนี้เธอต้องให้คำปรึกษานักเรียน 25 คนในชุดที่เพิ่งเข้ามาในมาตรฐานที่ 12
จากประสบการณ์การให้คำปรึกษาของเขา เธอรู้ว่านักเรียนรู้สึกตื่นเต้นมากที่ได้รู้ว่าพวกเขาจะได้รับคะแนนกี่เปอร์เซ็นต์หากพวกเขาศึกษาในระยะเวลานานขนาดนี้
ดังนั้นเขาจึงตัดสินใจให้คำตอบโดยอิงจากข้อเท็จจริงบางประการ ไม่ใช่ความคิดเห็น
การทำความเข้าใจบริบท
เธอรวบรวมข้อมูลจากนักเรียนรุ่นก่อนๆ ว่าเรียนกี่ชั่วโมงและได้กี่เปอร์เซ็นต์
แล้วเธอก็มาหาฉัน (นักศึกษาฝึกงานที่ The Sparks Foundation) เพื่อให้แบบจำลองในการทำนายคะแนนเปอร์เซ็นต์ตาม ตามจำนวนชั่วโมงเรียนของนักเรียน
หลังจากรับฟังความต้องการของพวกเขาแล้ว ฉันสามารถพูดได้อย่างชัดเจนว่าพวกเขาต้องการแบบจำลองที่สามารถทำนายค่าต่อเนื่องได้
การรวบรวมความต้องการ
ให้เราดูชุดข้อมูลของนักเรียนของเราจากชุดที่แล้ว
แต่ก่อนที่จะนำเข้าชุดข้อมูล เราต้องนำเข้าไลบรารีที่จำเป็นบางส่วนซึ่งจะใช้ในการสร้างแบบจำลอง
การนำเข้าไลบรารี
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns print("Libraries Imported Successfully") Libraries Imported Successfully
การนำเข้าชุดข้อมูล
ตอนนี้เราจะนำเข้าชุดข้อมูลของเราซึ่งเก็บไว้ในไฟล์ CSV ชื่อ students_data.csv
df = pd.read_csv("student_data.csv") print("Data imported Successfully") Data imported Successfully
การตรวจสอบชุดข้อมูล
หลังจากนำเข้าชุดข้อมูลแล้ว เราจะตรวจสอบข้อมูลของเรา โดยเราจะตรวจสอบระเบียน 5 อันดับแรกและด้านล่างของชุดข้อมูล
#Print the top 5 records of df df.head()
#Print the bottom 5 records of df df.tail()
เพื่อความเข้าใจที่มากขึ้น เราจะใช้วิธีการข้อมูลของ DataFrame ของ Panda ซึ่งจะให้ข้อมูลที่ครอบคลุมเกี่ยวกับหมายเลข ของคอลัมน์และแถวในชุดข้อมูลพร้อมกับประเภทข้อมูลและค่าที่ไม่ใช่ค่าว่าง ฯลฯ
dataset.info()
การตรวจสอบค่าที่หายไป
dataset.isnull().sum()
ดังนั้นเราจึงเห็นว่าชุดข้อมูลไม่มีค่า Null ดังนั้นเราจึงพร้อมที่จะแสดงภาพชุดข้อมูลของเรา
การแสดงข้อมูล
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()
หลังจากการแสดงภาพ เราจะเห็นว่ามีความสัมพันธ์เชิงบวกที่ชัดเจนระหว่างจำนวนชั่วโมงที่นักเรียนศึกษาและคะแนนเปอร์เซ็นต์
นอกจากนี้เรายังสามารถตรวจสอบความแข็งแกร่งของความสัมพันธ์ระหว่างคุณลักษณะต่างๆ (เช่น จำนวนชั่วโมงที่เรียนและคะแนนเปอร์เซ็นต์) ด้วยความช่วยเหลือของวิธีการที่ถูกต้อง
การตรวจสอบความสัมพันธ์ระหว่างคุณลักษณะต่างๆ ของชุดข้อมูล
dataset.corr()
โดยมีค่าสัมประสิทธิ์สหสัมพันธ์เท่ากับ 0.9762 ซึ่งถือเป็นความสัมพันธ์เชิงบวกระหว่างคุณลักษณะที่สูงมาก
จนกว่าเราจะเสร็จสิ้นส่วนการตรวจสอบข้อมูล และตอนนี้เราจะเปลี่ยนเกียร์ไปสู่กระบวนการสร้างแบบจำลอง
การเตรียมข้อมูล
ก่อนอื่น เราจะแบ่งชุดข้อมูลของเราออกเป็นสองส่วน ส่วนแรกเรียกว่าชุดคุณลักษณะ และอีกส่วนเรียกว่าป้ายกำกับ
การแปลง DataFrame เป็น 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])
การแยกชุดข้อมูลออกเป็นชุดการฝึกอบรมและชุดทดสอบ
จากคุณลักษณะและป้ายกำกับเหล่านี้ เราต้องแยกสิ่งเหล่านี้ออกเป็นชุดข้อมูลการฝึกอบรมและการทดสอบ
ที่นี่ฉันจะใช้ Machine Learning Library ยอดนิยมของ scikit-learn ซึ่งสามารถจัดการงานนี้ได้อย่างง่ายดายมาก
ฉันใช้คลาส train_test_split จากโมดูล model_selection ของ sklearn และระบุข้อโต้แย้งที่เกี่ยวข้องกับขนาดการทดสอบ = 0.2 (เช่น 20% ของบันทึกที่เก็บไว้เพื่อทดสอบความแม่นยำของโมเดลสุดท้าย)
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)
การฝึกโมเดลการถดถอยเชิงเส้นอย่างง่ายในชุดการฝึก
จากการแสดงภาพด้านบน เราจะเห็นได้ว่าชุดข้อมูลมีความสัมพันธ์เชิงเส้นตรงชัดเจน นอกจากนี้ ชุดข้อมูลมีเพียงสองตัวแปรเท่านั้น ดังนั้นฉันจะสร้างแบบจำลองการถดถอยเชิงเส้นอย่างง่าย ซึ่งจะตอบสนองความต้องการของที่ปรึกษาของเราได้เป็นอย่างดี
สำหรับการฝึกอบรมโมเดลการถดถอยเชิงเส้นของเรา ฉันจะใช้คลาส LinearRegression จากโมดูล linear_model ของ Sklearn
มันจะฝึกโมเดลของเราอย่างรวดเร็ว
from sklearn.linear_model import LinearRegression regressor = LinearRegression() regressor.fit(X_train,y_train) print("Model Trained Successfully") Model Trained Successfully
ทำนายผลชุดทดสอบ
ตอนนี้เรากำลังมุ่งหน้าไปสู่การทำนายผลลัพธ์บางส่วนจากชุดข้อมูลการฝึกอบรมและการทดสอบ และการแสดงภาพข้อมูลเหล่านั้นบนแผนภูมิ
y_pred = regressor.predict(X_test) y_pred
ก่อนที่จะแสดงภาพผลลัพธ์ของชุดข้อมูลการฝึกอบรมและการทดสอบ ฉันกำลังแสดงให้คุณเห็นผลลัพธ์จริงและที่คาดการณ์ของข้อมูลการทดสอบของเรา
data = pd.DataFrame({'Actual':y_test,'predicted':y_pred}) print(data)
การแสดงผลลัพธ์ชุดการฝึก
ก่อนอื่น ฉันจะเห็นภาพชุดข้อมูลการฝึกอบรมพร้อมชุดการฝึกอบรมและชุดที่คาดการณ์ไว้
เส้นสีฟ้าแสดงถึงแบบจำลอง ML ของเรา (เช่น เส้นตรง) ซึ่งคาดการณ์เปอร์เซ็นต์ที่คาดหวังตามจำนวนชั่วโมงการศึกษา ในขณะที่วงกลมกระจายสีม่วงแดงแสดงจุดข้อมูลจริง
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()
การแสดงผลลัพธ์ชุดทดสอบ
ในทำนองเดียวกัน เราสามารถเห็นภาพผลลัพธ์ของชุดทดสอบได้
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()
การประเมินแบบจำลอง
ขั้นตอนสุดท้ายคือการประเมินประสิทธิภาพของอัลกอริทึม
ขั้นตอนนี้มีความสำคัญอย่างยิ่งในการเปรียบเทียบว่าอัลกอริทึมทำงานได้ดีเพียงใดกับชุดข้อมูลใดชุดหนึ่ง
เพื่อความง่ายในที่นี้ ฉันได้เลือกเมตริกข้อผิดพลาดเฉลี่ยสัมบูรณ์แล้ว
หากคุณต้องการทราบระยะทางสัมบูรณ์เฉลี่ยของแบบจำลองเมื่อทำการทำนาย คุณสามารถใช้ MAE ได้ กล่าวอีกนัยหนึ่ง คุณต้องการทราบว่าการคาดการณ์นั้นใกล้เคียงกับแบบจำลองจริงโดยเฉลี่ยเพียงใด
เพียงจำไว้ว่าค่า MAE ที่ต่ำบ่งชี้ว่าโมเดลคาดการณ์ได้ถูกต้อง ค่า MAE ที่มากขึ้นบ่งชี้ว่าโมเดลคาดการณ์ได้ไม่ดี
from sklearn.metrics import mean_absolute_error print("MAE",np.round(mean_absolute_error(y_test,y_pred),2)) MAE 7.88
รูปแบบสุดท้ายในการส่งมอบให้กับที่ปรึกษาอาวุโสของเรา
ในที่สุดเราก็มาถึงโมเดลสุดท้ายที่ดูดีและพร้อมที่จะส่งมอบให้กับที่ปรึกษาอาวุโสของเรา ซึ่งจะเป็นประโยชน์มากสำหรับเธอในการตอบคำถามของนักเรียน
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.
ขอขอบคุณที่อ่านคำอธิบายโมเดล และอย่าลังเลที่จะให้ข้อเสนอแนะอันมีค่าของคุณ เรายินดีที่จะพบคุณที่นั่น