行业知识
【python】利用 GridSearchCV 和 SVM 进行学生成绩预测
2026-11-01 06:48:57
来源:互联网转载
在机器学习领域,寻找最优模型参数是一个重要的步骤,它直接影响模型的泛化能力和预测准确性。本文将通过一个具体案例介绍如何使用支持向量机(SVM)和网格搜索(GridSearchCV)来预测学生的成绩,并通过调整参数来优化模型性能。
数据集:公众号“码银学编程”后台回复:学生成绩-SVM
引言
学生的成绩预测对于教育领域来说是一个重要的问题,它可以帮助教师更好地了解学生的学习情况,从而进行针对性的教学改进。在本案例中,我们将使用 SVM 作为分类器,并利用 GridSearchCV 对模型参数进行调优,以期获得更好的预测效果。
正文
1. 数据准备
首先,我们从 CSV 文件中加载学生成绩数据集。数据集包含了多门课程的成绩,我们将这些成绩转换为等级,并使用 LabelEncoder 将分类数据转换为数值形式,以便 SVM 模型能够处理。
stu_grade = pd.read_csv('student-mat.csv')print(stu_grade.head()) - age-学生年龄(数字:从15岁到22岁)
- Medu - 母亲教育(数字:0 -无,1 -小学教育(四年级),2 -" 5 - 9年级,3 -"中等教育或,4 -"高等教育)
- Fedu - 父亲教育(数字:0 -无,1 -小学教育(4年级),2 â€" 5 - 9年级,3 â€"中等教育或4 â€"高等教育)
- traveltime - 从家到学校的旅行时间(数字:1 - 1小时)
- studytime - 每周学习时间(数字:1 - 10小时)
- failures - 过去班级失败的次数(数值:如果1= 10 and x
结果:
age Medu Fedu traveltime studytime ... health absences G1 G2 G30 18 4 4 2 2 ... 3 6 5 6 61 17 1 1 1 2 ... 3 4 5 5 62 15 1 1 1 2 ... 3 10 7 8 103 15 4 2 1 3 ... 5 2 15 14 154 16 3 3 1 2 ... 5 4 6 10 10[5 rows x 16 columns] age Medu Fedu traveltime studytime ... health absences G1 G2 G30 18 4 4 2 2 ... 3 6 5 6 61 17 1 1 1 2 ... 3 4 5 5 62 15 1 1 1 2 ... 3 10 7 8 103 15 4 2 1 3 ... 5 2 15 14 154 16 3 3 1 2 ... 5 4 6 10 10[5 rows x 16 columns] age Medu Fedu traveltime ... absences G1 G2 G30 18 4 4 2 ... 6 medium medium medium1 17 1 1 1 ... 4 medium medium medium2 15 1 1 1 ... 10 medium medium good3 15 4 2 1 ... 2 excellent good excellent4 16 3 3 1 ... 4 medium good good[5 rows x 16 columns][2 0 2 2 2 2 3 2 2 2 2 0 2 1 2 1 2 2 2 2 2 2 2 2 2 2 1 2 2 2 0 3 2 2 1 3 2 2 1 2 2 1 2 2 2 3 2 3 2 2 1 2 2 2 2 2 2 3 3 3 2 2 3 2 2 2 1 2 2 2 2 2 2 2 3 2 2 1 3 1 2 1 3 0 1 0 3 2 2 2 0 2 2 2 2 1 2 3 2 3 2 2 2 2 0 2 2 2 3 2 2 2 2 2 2 3 2 1 3]训练集准确度: 0.927536231884058测试集准确度: 0.6218487394957983Scores: MAE=0.4957983193277311, MSE=0.7983193277310925最佳参数: {'C': 0.3, 'gamma': 0.01, 'kernel': 'poly'}最佳分数: 0.8115942028985508优化后测试集准确度: 0.8235294117647058优化后Scores: MAE=0.2857142857142857, MSE=0.5882352941176471Process finished with exit code 0