python考研成绩查询_2020-09-08考研成绩预测模型

这篇博客介绍了一个利用sklearn库构建的线性回归模型,用于预测北京大学应用统计硕士考研成绩。通过对数学、专业课和英语三科的成绩分析,预测总分。作者展示了数据预处理、相关性分析、模型训练和预测结果的可视化过程。
摘要由CSDN通过智能技术生成

本程序为小生统计学期末作业的一部分。作业搜集了北京大学应用统计硕士考研初试成绩单。运用sklearn库,根据数学、专业课和英语三科容易在备考期间自行估分的科目复习效果,对考研总分进行预测。我们认为不同科目所处于的备考状态是一致的,其他三科成绩可以对第四科成绩乃至总分做出预测。

import pandas as pd

import numpy as np

import seaborn as sns

import matplotlib.pyplot as plt

from pandas import DataFrame,Series

from sklearn.model_selection import train_test_split

from sklearn.linear_model import LinearRegression

#读取文件

datafile = 'C:\\Users\\64849\\Desktop\\HW.xlsx'#文件所在位置,u为防止路径中有中文名称,此处没有,可以省略

data = pd.read_excel(datafile)#datafile是excel文件,所以用read_excel,如果是csv文件则用read_csv

examDf = DataFrame(data)

examDf.head(257)

#这个情况下,把下面中括号中的0改为1就好,要哪些列取哪些列

new_examDf = examDf.iloc[:examDf.index.get_loc(256) + 1, :5]

#检验数据

print(new_examDf.describe())#数据描述,会显示最值,平均数等信息,可以简单判断数据中是否有异常值

print("空值\n{}".format(new_examDf[new_examDf.isnull()==True].count()))#检验缺失值,若输出为0,说明该列没有缺失值

#输出相关系数,判断是否值得做线性回归模型

print("相关系数\n{}".format(new_examDf.corr()))#0-0.3弱相关;0.3-0.6中相关;0.6-1强相关;

#通过seaborn添加一条最佳拟合直线和95%的置信带,直观判断相关关系

sns.pairplot(data, x_vars=['Call','Connect'], y_vars='Return', height=7, aspect=0.8, kind='reg')

plt.show()

#拆分训练集和测试集

X_train,X_test,Y_train,Y_test = train_test_split(new_examDf.ix[:,:2],new_examDf.Return,train_size=0.8)

#new_examDf.ix[:,:2]取了数据中的前两列为自变量,此处与单变量的不同

print("自变量---源数据:",new_examDf.ix[:,:2].shape, ";  训练集:",X_train.shape, ";  测试集:",X_test.shape)

print("因变量---源数据:",examDf.Return.shape, ";  训练集:",Y_train.shape, ";  测试集:",Y_test.shape)

#调用线性规划包

model = LinearRegression()

model.fit(X_train,Y_train)#线性回归训练

a  = model.intercept_#截距

b = model.coef_#回归系数

print("拟合参数:截距",a,",回归系数:",b)

#显示线性方程,并限制参数的小数位为两位

print("最佳拟合线: Y = ",round(a,2),"+",round(b[0],2),"* X1 + ",round(b[1],2),"* X2")

Y_pred = model.predict(X_test)#对测试集数据,用predict函数预测

plt.plot(range(len(Y_pred)),Y_pred,'red', linewidth=2.5,label="predict data")

plt.plot(range(len(Y_test)),Y_test,'green',label="test data")

plt.legend(loc=2)

plt.show()#显示预测值与测试值曲线

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值