每天逛 kaggle

https://www.kaggle.com/mohansacharya/graduate-admissions




看来这个也是非常出名的数据集

  • GRE分数(290至340)
  • 托福成绩(92-120)
  • 大学评级(1至5)
  • 目的声明(1至5)
  • 推荐信强度(1至5)
  • 本科生CGPA(6.8至9.92)
  • 研究经验(0或1)
  • 入学率(0.34至0.97)
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import sys
import os
df = pd.read_csv("../input/Admission_Predict.csv",sep = ",")


硕士入学的三个最重要特征:CGPA、GRE和托福成绩

进入硕士学位的三个最不重要的特征:研究、LOR和SOP

相关系数矩阵

fig,ax = plt.subplots(figsize=(10, 10))
sns.heatmap(df.corr(), ax=ax, annot=True, linewidths=0.05, fmt= '.2f',cmap="magma")
plt.show()


但是数据大多数候选人都有研究经验。

因此,本研究将成为入学机会的一个不重要的特征

print("Not Having Research:",len(df[df.Research == 0]))
print("Having Research:",len(df[df.Research == 1]))
y = np.array([len(df[df.Research == 0]),len(df[df.Research == 1])])
x = ["Not Having Research","Having Research"]
plt.bar(x,y)
plt.title("Research Experience")
plt.xlabel("Canditates")
plt.ylabel("Frequency")
plt.show()


数据中托福最低分为92分,托福最高分为120分。平均107.41。

y = np.array([df["TOEFL Score"].min(),df["TOEFL Score"].mean(),df["TOEFL Score"].max()])
x = ["Worst","Average","Best"]
plt.bar(x,y)
plt.title("TOEFL Scores")
plt.xlabel("Level")
plt.ylabel("TOEFL Score")
plt.show()


GRE分数:

此柱状图显示GRE分数的频率。

密度介于310和330之间。在这个范围以上是候选人脱颖而出的一个很好的特征。

df["GRE Score"].plot(kind = 'hist',bins = 200,figsize = (6,6))
plt.title("GRE Scores")
plt.xlabel("GRE Score")
plt.ylabel("Frequency")
plt.show()


大学评分的CGPA分数:

随着大学质量的提高,CGPA分数也随之提高。

plt.scatter(df["University Rating"],df.CGPA)
plt.title("CGPA Scores for University Ratings")
plt.xlabel("University Rating")
plt.ylabel("CGPA")
plt.show()


GRE分数高的个体通常有较高的CGPA分数。

plt.scatter(df["GRE Score"],df.CGPA)
plt.title("CGPA for GRE Scores")
plt.xlabel("GRE Score")
plt.ylabel("CGPA")
plt.show()

df[df.CGPA >= 8.5].plot(kind='scatter', x='GRE Score', y='TOEFL Score',color="red")
plt.xlabel("GRE Score")
plt.ylabel("TOEFL SCORE")
plt.title("CGPA>=8.5")
plt.grid(True)
plt.show()


从好大学毕业的候选人更有幸被录取。

s = df[df["Chance of Admit"] >= 0.75]["University Rating"].value_counts().head(5)
plt.title("University Ratings of Candidates with an 75% acceptance chance")
s.plot(kind='bar',figsize=(20, 10))
plt.xlabel("University Rating")
plt.ylabel("Candidates")
plt.show()


CGPA分数高的候选人通常具有较高的SOP分数。

plt.scatter(df["CGPA"],df.SOP)
plt.xlabel("CGPA")
plt.ylabel("SOP")
plt.title("SOP for CGPA")
plt.show()


GRE分数高的候选人通常具有较高的SOP分数。

plt.scatter(df["GRE Score"],df["SOP"])
plt.xlabel("GRE Score")
plt.ylabel("SOP")
plt.title("SOP for GRE Score")
plt.show()

上面是数据分析过程,下面开始model的训练

去掉第一列的序号

# reading the dataset
df = pd.read_csv("../input/Admission_Predict.csv",sep = ",")# it may be needed in the future.
serialNo = df["Serial No."].valuesdf.drop(["Serial No."],axis=1,inplace = True)
y = df["Chance of Admit"].values
x = df.drop(["Chance of Admit"],axis=1)# separating train (80%) and test (%20) sets
from sklearn.model_selection import train_test_splitx_train, x_test,y_train, y_test = train_test_split(x,y,test_size = 0.20,random_state = 42)

缩放到固定范围(0-1)

# normalization
from sklearn.preprocessing import MinMaxScaler
scalerX = MinMaxScaler(feature_range=(0, 1))
x_train[x_train.columns] = scalerX.fit_transform(x_train[x_train.columns])
x_test[x_test.columns] = scalerX.transform(x_test[x_test.columns])

线性模型

from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(x_train,y_train)
y_head_lr = lr.predict(x_test)print("real value of y_test[1]: " + str(y_test[1]) + " -> the predict: " + str(lr.predict(x_test.iloc[[1],:])))
print("real value of y_test[2]: " + str(y_test[2]) + " -> the predict: " + str(lr.predict(x_test.iloc[[2],:])))from sklearn.metrics import r2_score
print("r_square score: ", r2_score(y_test,y_head_lr))y_head_lr_train = lr.predict(x_train)
print("r_square score (train dataset): ", r2_score(y_train,y_head_lr_train))

real value of y_test[1]: 0.68 -> the predict: [0.72368741]
real value of y_test[2]: 0.9 -> the predict: [0.93536809]
r_square score: 0.821208259148699
r_square score (train dataset): 0.7951946003191085

随机森林

from sklearn.ensemble import RandomForestRegressor
rfr = RandomForestRegressor(n_estimators = 100, random_state = 42)
rfr.fit(x_train,y_train)
y_head_rfr = rfr.predict(x_test) from sklearn.metrics import r2_score
print("r_square score: ", r2_score(y_test,y_head_rfr))
print("real value of y_test[1]: " + str(y_test[1]) + " -> the predict: " + str(rfr.predict(x_test.iloc[[1],:])))
print("real value of y_test[2]: " + str(y_test[2]) + " -> the predict: " + str(rfr.predict(x_test.iloc[[2],:])))y_head_rf_train = rfr.predict(x_train)
print("r_square score (train dataset): ", r2_score(y_train,y_head_rf_train))

r_square score: 0.8074111823415694
real value of y_test[1]: 0.68 -> the predict: [0.7249]
real value of y_test[2]: 0.9 -> the predict: [0.9407]
r_square score (train dataset): 0.9634880602889714

决策树

from sklearn.tree import DecisionTreeRegressor
dtr = DecisionTreeRegressor(random_state = 42)
dtr.fit(x_train,y_train)
y_head_dtr = dtr.predict(x_test) from sklearn.metrics import r2_score
print("r_square score: ", r2_score(y_test,y_head_dtr))
print("real value of y_test[1]: " + str(y_test[1]) + " -> the predict: " + str(dtr.predict(x_test.iloc[[1],:])))
print("real value of y_test[2]: " + str(y_test[2]) + " -> the predict: " + str(dtr.predict(x_test.iloc[[2],:])))y_head_dtr_train = dtr.predict(x_train)
print("r_square score (train dataset): ", r2_score(y_train,y_head_dtr_train))

r_square score: 0.6262105228127393
real value of y_test[1]: 0.68 -> the predict: [0.73]
real value of y_test[2]: 0.9 -> the predict: [0.94]
r_square score (train dataset): 1.0

线性回归和随机森林回归算法优于决策树回归算法。
y = np.array([r2_score(y_test,y_head_lr),r2_score(y_test,y_head_rfr),r2_score(y_test,y_head_dtr)])
x = ["LinearRegression","RandomForestReg.","DecisionTreeReg."]
plt.bar(x,y)
plt.title("Comparison of Regression Algorithms")
plt.xlabel("Regressor")
plt.ylabel("r2_score")
plt.show()


可视化三种算法

red = plt.scatter(np.arange(0,80,5),y_head_lr[0:80:5],color = "red")
green = plt.scatter(np.arange(0,80,5),y_head_rfr[0:80:5],color = "green")
blue = plt.scatter(np.arange(0,80,5),y_head_dtr[0:80:5],color = "blue")
black = plt.scatter(np.arange(0,80,5),y_test[0:80:5],color = "black")
plt.title("Comparison of Regression Algorithms")
plt.xlabel("Index of Candidate")
plt.ylabel("Chance of Admit")
plt.legend((red,green,blue,black),('LR', 'RFR', 'DTR', 'REAL'))
plt.show()

kaggle研究生招生(上)相关推荐

  1. kaggle研究生招生(下)

    对于该数据先采用回归算法,再转为分类算法,这次使用聚类算法 聚类算法(无监督机器学习算法) df = pd.read_csv("../input/Admission_Predict.csv& ...

  2. kaggle研究生招生(中)

    上次将数据训练了模型 由于数据中的大多数候选人都有70%以上的机会,许多不成功的候选人都没有很好的预测. df["Chance of Admit"].plot(kind = 'hi ...

  3. vasp结构优化英语_活动 | 英语学院举办研究生招生线上宣讲会

    2020年6月12日,英语学院举办了研究生招生线上宣讲会,英语学院院长吕春媚教授和研究生教研室主任林璐教授分别就研究生招生情况进行宣讲.宣讲会由英语学院夏洋教授主持,来自全国各兄弟院校的五十余名英语专 ...

  4. 研究生招生多次被“放鸽子”:给学生几点诚信方面的建议

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:张吴明科学网博客 研究生招生已经数次遇到放鸽子的情况,学生在联 ...

  5. 海南大学2020年申请考核博士研究生招生工作办法

    海南大学2020年申请考核博士研究生招生工作办法 时间: 2020/6/19 18:14:00 来源:研究生处 为建立与国际接轨的博士研究生招生选拔制度,鼓励拔尖创新型人才脱颖而出,进一步提高海南大学 ...

  6. 川大计算机考研2020招生数,四川大学等大学,2020年研究生招生简章发布,这3个信息很重要!...

    随着考研预报名临近,各个大学都相继发布了<2020年硕士研究生招生简章>(以下简称招生简章),可能很多同学觉得这个只是走一个流程,没什么用,或者还不知道如何利用好它,其实,招生简章在我们报 ...

  7. 2022年全国硕士研究生招生国家线公布

    今日,教育部公布了2022年全国硕士研究生招生考试考试进入复试的初试成绩基本要求,即2022年考研国家复试线,划线如下 单位要在复试工作中,采取"两识别""四比对&quo ...

  8. 中国农业大学计算机研究生分数线,中国农业大学2017年硕士研究生招生考试复试分数线...

    中国农业大学2017年硕士研究生招生考试复试分数线已出,圣才考研网小编为大家整理了相关内容,欢迎大家点击查看!更多考研动态|模拟试题|历年真题请关注圣才考研网! 中国农业大学2017年硕士研究生招生考 ...

  9. 温州大学计算机与人工智能学院2022年硕士研究生招生复试咨询开始啦!

    咨询对象与方式 咨询对象:考生第一志愿为学硕,初试成绩达到教育部统一规定的工科复试分数线,考试科目须为英语一.数学一.408计算机学科专业基础综合. 咨询方式:可扫二维码进行咨询登记 温州大学硕士研究 ...

最新文章

  1. c语言将字母存入字符串,C语言把资料读入字符串以及将字符串写入文件
  2. Mybatis分页插件 - 示例
  3. .NET框架设计—常被忽视的框架设计技巧
  4. 解决opacity属性在低版本IE浏览器下失效的方法
  5. UITableView移除某一行cell的分割线
  6. 知识图谱论文阅读(二十三)【SIGIR2020】Multi-behavior Recommendation with Graph Convolutional Networks
  7. 颠覆认知!25张动图,让你重新认识地球
  8. 微软IIS6漏洞:服务器敏感信息易被窃
  9. 2015软件测试面试题第二篇
  10. 蓝桥杯 基础练习 回文数
  11. dll中使用dialogbox_玩游戏丢失dll文件别着急 认识这些就妥了
  12. Atitit.404错误解决标准流程and url汉字中文路径404错误resin4 resin chinese char path 404 err解决
  13. 计算机识别不到硬盘,解决BIOS检测不到硬盘的问题
  14. 微信小游戏排行榜卡顿或无法滑动
  15. 读博不得不明白的深刻道理
  16. Flash 游戏制作一些资源
  17. CTF万里追踪——图片里的秘密
  18. Python书籍阅读与记录 6.17 I 文件和异常
  19. ABAP:增强篇-MIGO过账增强之CHECK方法获取行项目
  20. Java8.0 新特性二之Stream

热门文章

  1. 点击输入框弹出文字html,jQuery实现点击文本框弹出热门标签的提示效果
  2. lda 吗 样本中心化 需要_机器学习 —— 基础整理(四):特征提取之线性方法——主成分分析PCA、独立成分分析ICA、线性判别分析LDA...
  3. 百度 Serverless 架构揭秘与应用实践
  4. gis如何加入emf图片_当GIS运用于建筑遗产保护
  5. react打包后图片丢失_如何快速构建React组件库
  6. git rebase 的常见冲突及解决办法
  7. Spring的事务属性
  8. CTRL+SHIFT
  9. 开发 Sublime Text 3 插件简易教程
  10. C# Serializable(序列化)