数据探索的重要性与实践

数据科学领域,数据探索是一个关键的步骤,它涉及到对原始数据的分析和理解,以便发现数据中隐藏的模式和趋势。尽管没有固定的指南或路线图来执行数据探索,但这个过程对于任何数据科学专业人士或学生来说都是至关重要的。通过数据探索,可以更好地理解数据,从而做出更明智的决策。例如,某些机器学习或深度学习算法可能更适合某些类型的数据。了解数据分布后,可以提出更好的问题,从而更深入地挖掘数据的潜力。

数据探索,尤其是对于大型数据集,有助于理解在进一步分析中的下一步行动。人脑擅长理解视觉数据,因此,数据的视觉呈现是揭示数据模式的绝佳方式。通过有效的数据探索,可以了解单个变量的特性以及多个变量之间的关系。

让通过一个数据集来观察高效的数据探索是如何进行的。以“研究生录取”数据集为例。这个数据集包含了在申请大学时非常重要的各种数据字段。

数据集概览

数据集包括以下字段:

  • GRE成绩(满分340分)
  • TOEFL成绩(满分120分)
  • 大学评级(满分5分)
  • 个人陈述和推荐信强度(满分5分)
  • 本科GPA(满分10分)
  • 研究经验(0或1)
  • 录取机会(0到1之间)

将探讨GRE成绩对于录取机会的影响。

GRE成绩的重要性

将分析GRE成绩在录取中的重要性,并尝试理解GRE成绩与其他变量之间的关系以及它们如何影响录取机会。

import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline # 读取数据 df= pd.read_csv("/kaggle/input/graduate-admissions/Admission_Predict.csv") # 数据预览 df.head()

现在可以查看数据,GRE成绩似乎在300分左右。这是有道理的,因为GRE的满分是340分。数据探索的一个重要方面是将其与现实生活情况联系起来。

print("DATA INFORMATION AND DATA TYPES") df.info()

基本上,可以了解所有数据类型以及拥有的数据点数量,这里共有400个。

print('MISSING DATA (IF ANY)') df.isnull().sum()

因此,没有数据字段是空的,这意味着不需要处理缺失值。

df.corr()

GRE成绩与录取机会之间存在0.802的相关性。因此,很有可能这些变量(数据)高度相关。实际上,相关性是第二高的,仅次于CGPA。因此,可以确定CGPA和GRE成绩在决定录取机会方面最为重要。

plt.figure(figsize = (10,10)) sns.heatmap(df.corr(),annot=True, cmap='Blues') plt.subplots(figsize=(12,8)) plt.scatter(df["Chance of Admit "],df["GRE Score"]) plt.xlabel("Chance of Admit") plt.ylabel("GRE Score")

这两个变量之间似乎存在联系。需要进行一些探索。

plt.subplots(figsize=(12,8)) sns.regplot(x="GRE Score", y="Chance of Admit ", data=df)

可以舒适地通过数据绘制一条线性回归线。让尝试其他图表并考虑其他数据,以全面理解整个画面。

sns.jointplot(df["GRE Score"], df["Chance of Admit "], kind="kde", height=8, space=0) plt.plot(figsize=(12,8))

让看看候选人的研究经验是否有助于获得录取。

sns.lmplot(x="GRE Score", y="Chance of Admit ", data=df, hue="Research",height= 8)

数据显示,具有研究经验的候选人(图中的橙色)通常有更高的录取机会。话虽如此,这些候选人的GRE成绩也很好。因此,良好的GRE成绩确实表明了良好的候选人档案。

现在,让看看大学评级。

sns.lmplot(x="GRE Score", y="Chance of Admit ", data=df, hue="University Rating",height=8)

观察:

  • GRE成绩较高的学生(>320)通常有较高的机会被评级较高的大学(4/5)录取。
  • 较低的GRE成绩有较低的录取机会,尤其是对于评级较低的大学。
  • 具有较高录取机会的学生都有良好的GRE成绩和大学评级为4或5。

现在取一些数据,其中录取机会为0.8或更高,并检查GRE成绩的重要性。

admit_high_chance= df[df["Chance of Admit "]>=0.8] admit_high_chance.info()

# 取128个数据

admit_high_chance.corr()

现在让看看录取机会和GRE成绩的分布。

plt.subplots(figsize=(12,8)) sns.set_theme(style="darkgrid") sns.distplot( admit_high_chance["GRE Score"]) plt.subplots(figsize=(12,8)) sns.set_theme(style="darkgrid") sns.distplot( admit_high_chance["Chance of Admit "])

观察:

  • 对于更高的录取机会,GRE成绩也很高。
  • GRE成绩最高在320-340之间。

GRE成绩与录取机会之间的线性回归:

X= df["GRE Score"].values # 将GRE成绩带入0-1范围 X=X/340 y= df["Chance of Admit "].values # sklearn训练测试数据分割 from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25) # sklearn线性回归 from sklearn.linear_model import LinearRegression lr = LinearRegression() # 在训练数据上训练模型 lr.fit(X_train.reshape(-1,1), y_train) y_pred = lr.predict(X_test.reshape(-1,1)) # 模型评分 lr.score(X_test.reshape(-1,1),y_test.reshape(-1,1))

输出:0.6889753669343462

plt.subplots(figsize=(12,8)) plt.scatter(X_train, y_train, color = "red") plt.plot(X_train, lr.predict(X_train.reshape(-1,1)), color = "green") plt.title("GRE Score vs Chance of Admit") plt.xlabel("GRE Score") plt.ylabel("Chance Of Admit") plt.show()

模型表现不佳,但确实了解到GRE成绩与录取机会之间存在相关性。让尝试用测试输入。

# 测试输入 test= 320 val= test/340 val_out=lr.predict(np.array([[val]])) print("Chance of admission :", val_out[0]) Chance of admission: 0.7540416752698649

在全部数据上创建模型:

x = df.drop(['Chance of Admit ','Serial No.'],axis=1) y = df['Chance of Admit '] X_train, X_test, y_train, y_test = train_test_split(x,y,test_size=0.25, random_state = 7) # 随机森林回归 from sklearn.ensemble import RandomForestRegressor regr = RandomForestRegressor(max_depth=2, random_state=0, n_estimators=5) regr.fit(X_train,y_train) regr.score(X_test, y_test)

输出:0.6901443456671795

Let us work with a sample input. val=regr.predict([[325, 100, 3, 4.1, 3.7, 7.67, 1]]) print("Your chances are (in %):") print(val[0]*100)

输出: 录取机会是(%): 54.47694678499888

GRE成绩对于录取很重要。拥有良好GRE成绩的学生似乎拥有良好的整体档案。当然也有例外,这些例外构成了异常值。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485