回归分析预测世界大学综合得分

简介: 回归分析预测世界大学综合得分

回归分析预测世界大学综合得分

大学排名是一个非常重要同时也极富挑战性与争议性的问题,一所大学的综合实力涉及科研、师资、学生等方方面面。目前全球有上百家评估机构会评估大学的综合得分进行排序,而这些机构的打分也往往并不一致。在这些评分机构中,世界大学排名中心(Center for World University Rankings,缩写CWUR)以评估教育质量、校友就业、研究成果和引用,而非依赖于调查和大学所提交的数据著称,是非常有影响力的一个。

本任务中我们将根据 CWUR 所提供的世界各地知名大学各方面的排名(师资、科研等),一方面通过数据可视化的方式观察不同大学的特点,另一方面希望构建机器学习模型(线性回归)预测一所大学的综合得分。

世界大学综合得分预测

数据来源:World University Rankings | Kaggle

数据观察与处理

import pandas as pd
import numpy as np
data_df = pd.read_csv('./cwurData.csv')
data_df.head(3).T  # 观察前几列并转置方便观察

去除其中包含 NaN 的数据

data_df = data_df.dropna()
len(data_df) # 2000

设置矩阵

feature_cols = ['quality_of_faculty', 'publications', 'citations', 'alumni_employment', 
                'influence', 'quality_of_education', 'broad_impact', 'patents'] # 提取特征值
X = data_df[feature_cols]
Y = data_df['score']
# X Y分别为自变量 因变量矩阵

数据可视化

观察世界排名前十学校的平均得分情况,为此需要将同一学校不同年份的得分做一个平均。我们可以利用groupby()函数,将同一学校的记录整合起来并通过mean()函数取平均。之后我们按平均分降序排序,取前十个学校作为要观察的数据。

import matplotlib.pyplot as plt 
import seaborn as sns 
mean_df = data_df.groupby('institution').mean()  # 按学校聚合并对聚合的列取平均
top_df = mean_df.sort_values(by='score', ascending=False).head(10)  # 取前十学校
sns.set()
x = top_df['score'].values  # 综合得分列表
y = top_df.index.values  # 学校名称列表
sns.barplot(x, y, orient='h', palette="Blues_d")  # 画条形图
plt.xlim(75, 101)  # 限制 x 轴范围
plt.show()

pairplot的方法观察变量之间的关联关系,可以从图中看到,少部分变量之间有线性关系;各个变量和结果之间,近似对数关系。

sns.pairplot(data_df[feature_cols + ['score']], height=3, diag_kind="kde")
plt.show()

还可以用热力图的形式呈现相关度矩阵:

构建模型

取出对应自变量以及因变量的列,之后就可以基于此切分训练集和测试集,并进行模型构建与分析。

all_y = data_df['score'].values  
all_x = data_df[feature_cols].values
# 取 values 是为了从 pandas 的 Series 转成 numpy 的 array
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(all_x, all_y, test_size=0.2, random_state=2020)
all_y.shape, all_x.shape, x_train.shape, x_test.shape, y_train.shape, y_test.shape # 输出数据行列信息
# ((2000,), (2000, 8), (1600, 8), (400, 8), (1600,), (400,))
from sklearn.linear_model import LinearRegression
LR = LinearRegression()  # 线性回归模型
LR.fit(x_train, y_train)  # 在训练集上训练
p_test = LR.predict(x_test)  # 在测试集上预测,获得预测值
test_error = p_test - y_test  # 预测误差
test_rmse = (test_error**2).mean()**0.5  # 计算 RMSE
'rmse: {:.4}'.format(test_rmse) 
# rmse: 3.999

得到测试集的 RMSE 为 3.999,在百分制的预测目标下算一个尚可的结果。从评价指标上看貌似我们能根据各方面排名较好的预估综合得分,接下来我们观察一下学习到的参数,即各指标排名对综合得分的影响权重。

import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
sns.barplot(x=LR.coef_, y=feature_cols)
plt.show()

这里会发现综合得分的预测基本被「师资质量」这一自变量主导了,「就业」和「教育质量」这两个因素也有一定影响,其他指标起的作用就很小了。

为了观察「师资质量」这一主导因素与综合得分的关系,我们可以通过 seaborn 中的regplot()函数以散点图的方式画出其分布。

sns.regplot(data_df['quality_of_faculty'], data_df['score'], marker="+")
plt.show()

相关文章
|
资源调度 前端开发
React npm i @ant-design/ --save无法导入问题
React npm i @ant-design/ --save无法导入问题
308 0
|
16天前
|
JSON 前端开发 文件存储
开源项目,全网音乐免费听,太牛逼啦,XiaoMusic 无限点歌机~~~~
XiaoMusic 是一款开源的小爱音箱音乐增强工具,支持全网音乐免费听。通过 NAS 或电脑部署,结合 yt-dlp 下载与本地音乐管理,实现语音点歌、搜索播放、多设备控制,让小爱变身家庭音乐中枢。
494 2
|
10月前
|
机器学习/深度学习 自然语言处理 算法
《从0到1:用朴素贝叶斯算法搭建垃圾邮件检测系统》
在数字信息爆炸的时代,电子邮箱成为不可或缺的沟通工具,但垃圾邮件却带来了困扰。本文介绍如何利用朴素贝叶斯算法构建简单有效的二分类垃圾邮件检测系统。通过数据收集、预处理、计算先验和条件概率、预测及评估优化等步骤,轻松过滤垃圾邮件,保护邮箱环境。
313 15
|
11月前
|
算法 JavaScript
基于遗传优化的Sugeno型模糊控制器设计matlab仿真
本课题基于遗传优化的Sugeno型模糊控制器设计,利用MATLAB2022a进行仿真。通过遗传算法优化模糊控制器的隶属函数参数,提升控制效果。系统原理结合了模糊逻辑与进化计算,旨在增强系统的稳定性、响应速度和鲁棒性。核心程序实现了遗传算法的选择、交叉、变异等步骤,优化Sugeno型模糊系统的参数,适用于工业控制领域。
|
9月前
|
数据采集 机器学习/深度学习 数据挖掘
基于DeepSeek的多模态融合技术:实现图像、视频与音频的协同分析
随着多媒体数据的爆炸式增长,单一模态数据分析已无法满足复杂场景需求。多模态融合技术通过整合图像、视频、音频等多源数据,提供更全面精准的分析结果。DeepSeek作为强大的深度学习框架,在多模态融合领域展现巨大潜力。本文深入探讨基于DeepSeek的多模态融合技术,结合代码示例展示其在图像、视频与音频协同分析中的实际应用,涵盖数据预处理、特征融合、模型训练及评估等环节,并展望未来发展方向。
1794 13
|
安全 测试技术 Go
Go语言在高并发场景下的应用
在当今互联网高速发展的时代,高并发已成为众多应用系统面临的核心问题。本文探讨了Go语言在高并发场景下的优势,并通过具体实例展示了其在实际应用中的效果和性能表现。
|
Serverless 语音技术 开发工具
函数计算操作报错合集之怎么何集成nls tts python sdk
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
222 2
|
Ubuntu Linux 数据安全/隐私保护
Windows就是Linux:WSL带来全新Linux开发体验
Windows就是Linux:WSL带来全新Linux开发体验
|
机器学习/深度学习 人工智能 分布式计算
算法金 | 最难的来了:超参数网格搜索、贝叶斯优化、遗传算法、模型特异化、Hyperopt、Optuna、多目标优化、异步并行优化
机器学习中的超参数调优是提升模型性能的关键步骤,包括网格搜索、随机搜索、贝叶斯优化和遗传算法等方法。网格搜索通过穷举所有可能的超参数组合找到最优,但计算成本高;随机搜索则在预设范围内随机采样,降低计算成本;贝叶斯优化使用代理模型智能选择超参数,效率高且适应性强;遗传算法模拟生物进化,全局搜索能力强。此外,还有多目标优化、异步并行优化等高级技术,以及Hyperopt、Optuna等优化库来提升调优效率。实践中,应结合模型类型、数据规模和计算资源选择合适的调优策略。
771 0
算法金 | 最难的来了:超参数网格搜索、贝叶斯优化、遗传算法、模型特异化、Hyperopt、Optuna、多目标优化、异步并行优化
|
算法
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
744 0