23软微初试复试得分分析python多元线性回归

本文分析了政治、英语、数学、408(或经济学综合)分数与复试得分之间的关系,发现即使数学和408低分者在复试中也能获得较好成绩,而高分者可能在复试中得分较低。通过Python进行多元线性回归预测,得到复试平均得分为85.52,并展示了相关系数、截距和R方。最后,绘制了散点图及线性回归直线进行可视化展示。
摘要由CSDN通过智能技术生成

 Subject1 2 3 4 分别为政治 英语 数学 408(或经济学综合) 与复试得分的关系 可以看出数学和408(或经济学综合)低分的在复试中仍然有较好给分,而数学408高分考生仍然在复试中可能表现不佳得分较低。

# 假设你有一组新的初试分数
new_scores = np.array([70, 80, 125, 125, 400])

# 使用训练好的模型进行预测
y_predicted = model.intercept_ + np.dot(model.coef_, new_scores)

print("预测的复试分数为:", y_predicted)

 做预测的复试分数为: 85.52217683310614

下面是代码

from sklearn.linear_model import LinearRegression
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

用pd.set_option("display.float_format", lambda x: '%.0f' % x)将科学计数显示转化为全数字显示

df_复试 = pd.read_excel('3.xlsx', sheet_name='Sheet1')
df_初试 = pd.read_excel('4.xlsx', sheet_name='Sheet1')
# 设置pandas的显示参数
pd.set_option("display.float_format", lambda x: '%.0f' % x)

df_复试 = df_复试.iloc[:, [1, 4, 5, 6]]
df_初试 = df_初试.iloc[:, [1, 2, 4, 5, 6, 7, 8]]
df_复试.columns = ['id', '初试成绩','复试成绩', '总成绩']
df_初试.columns = ['考生姓名', 'id', '科目1成绩', '科目2成绩', '科目3成绩', '科目4成绩', '初试总成绩']
# 去掉 other 列
# df = df.drop(columns='other')

df_复试.dropna(subset=['id'], inplace=True)
# 删除包含NaN的行
df_复试 = df_复试.dropna()

将两个df按照id连接起来

df_merged = pd.merge(df_初试, df_复试, on='id')
print(df_merged.shape)
df_merged.iloc[:, 2:]

X = df_merged[['科目1成绩', '科目2成绩', '科目3成绩', '科目4成绩', '初试总成绩']]
y = df_merged['复试成绩']

model = LinearRegression()
model.fit(X, y)

print('系数:', model.coef_)
print('截距:', model.intercept_)
print('R^2:', model.score(X, y))

结果:

系数: [-1.18277301e+13 -1.18277301e+13 -1.18277301e+13 -1.18277301e+13 1.18277301e+13]

截距: 94.33467683310614 

R^2: 0.09586270152336485 

再使用subplots函数创建一个包含4个小图的大图,然后在每个小图中绘制散点图和线性回归直线。

# 创建一个包含4个小图的大图
fig, axs = plt.subplots(2, 2, figsize=(10, 8))

 #  在该图中,红色的直线表示线性回归
 #  模型的拟合线,即通过训练数据拟合出来的一条直线,用于表示自变量和因变量之间的关系。可以使用该拟合线来预测新的因变量值,以便进行进一步的分析。

# 绘制第一个小图(科目1成绩与总成绩)
axs[0, 0].scatter(X['科目1成绩'], y, color='blue')
axs[0, 0].set_title('Subject 1 Score')
axs[0, 0].set_xlabel('Score')
axs[0, 0].set_ylabel('Final Score')
# axs[0, 0].plot(X['科目1成绩'], model.predict(X), color='red')

# 绘制第二个小图(科目2成绩与总成绩)
axs[0, 1].scatter(X['科目2成绩'], y, color='blue')
axs[0, 1].set_title('Subject 2 Score')
axs[0, 1].set_xlabel('Score')
axs[0, 1].set_ylabel('Final Score')
# axs[0, 1].plot(X['科目2成绩'], model.predict(X), color='red')

# 绘制第三个小图(科目3成绩与总成绩)
axs[1, 0].scatter(X['科目3成绩'], y, color='blue')
axs[1, 0].set_title('Subject 3 Score')
axs[1, 0].set_xlabel('Score')
axs[1, 0].set_ylabel('Final Score')
# axs[1, 0].plot(X['科目3成绩'], model.predict(X), color='red')

# 绘制第四个小图(科目4成绩与总成绩)
axs[1, 1].scatter(X['科目4成绩'], y, color='blue')
axs[1, 1].set_title('Subject 4 Score')
axs[1, 1].set_xlabel('Score')
axs[1, 1].set_ylabel('Final Score')
# axs[1, 1].plot(X['科目4成绩'], model.predict(X), color='red')

# 调整布局
plt.tight_layout()

# 显示图像
plt.show()
# 假设你有一组新的初试分数
new_scores = np.array([70, 80, 125, 125, 400])

# 使用训练好的模型进行预测
y_predicted = model.intercept_ + np.dot(model.coef_, new_scores)

print("预测的复试分数为:", y_predicted)

以上就是对23软微初试复试多元线性回归分析结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值