学习时间与成绩的关系(线性回归)

第0步:处理数据

用excel打开数据集,绘制散点图,添加趋势线,可以看到学习时间与成绩存在线性相关的关系,用excel中的=intercept, =slope函数可以拟合出斜率和截距。

image-20230823215603403

第1步: 导入数据分析库pandas, 数据可视化库matplotlib

import pandas as pd
import matplotlib.pyplot as plt

# %matplotlib inline 是Ipython的魔法函数,其作用是使matplotlib绘制的图像嵌入在jupyter notebook的单元格里。
%matplotlib inline  

第2步: 导入数据集,查看数据集

dataset = pd.read_csv('./studentscores.csv')
dataset.head(10)

执行结果:

HoursScores
02.521
15.147
23.227
38.575
43.530
51.520
69.288
75.560
88.381
92.725
dataset.shape

执行结果:

(25, 2)
dataset.columns

执行结果:

Index(['Hours', 'Scores'], dtype='object')
dataset.info()

执行结果:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 25 entries, 0 to 24
Data columns (total 2 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   Hours   25 non-null     float64
 1   Scores  25 non-null     int64  
dtypes: float64(1), int64(1)
memory usage: 528.0 bytes
dataset.describe()

执行结果:

HoursScores
count25.00000025.000000
mean5.01200051.480000
std2.52509425.286887
min1.10000017.000000
25%2.70000030.000000
50%4.80000047.000000
75%7.40000075.000000
max9.20000095.000000

第3步: 提取特征

# 提取特征:学习时间
# 提取标签:学习成绩
feature_columns = ['Hours']
label_column = ['Scores']

features = dataset[feature_columns]
label = dataset[label_column]

features.head()

执行结果:

Hours
02.5
15.1
23.2
38.5
43.5
type(features)

执行结果:

pandas.core.frame.DataFrame
label.head()

执行结果:

Scores
021
147
227
375
430
X = features.values
Y = label.values

第4步: 建立模型

4.1 拆分数据,四分之三的数据作为训练集,四分之一的数据作为测试集
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 1/4, random_state = 0)
4.2 用训练集的数据进行训练
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor = regressor.fit(X_train, Y_train)
4.3 对测试集进行预测
Y_pread = regressor.predict(X_test)
4.4 可视化
# 散点图:红色表示训练集的点
plt.scatter(X_train, Y_train, color = 'red')
# 线图:蓝色线表示由训练集训练出来的线性回归模型
plt.plot(X_train, regressor.predict(X_train), color = 'blue')
plt.show()

执行结果:
output_25_0

# 散点图: 红色点表示测试集的点
plt.scatter(X_test, Y_test, color = 'red')
# 线图:蓝色线表示对测试集进行预测的结果
plt.plot(X_test, regressor.predict(X_test), color = 'blue')
plt.show()

执行结果:

output_26_0

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值