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

机器学习基础篇之线性回归模型与学习成绩

[点我获取机器学习所用原始数据](【腾讯文档】studentscores
https://docs.qq.com/sheet/DQWFDTWFFbHFuak9w)

  1. 观察数据;2)导入数据;3)划分特征和标签;4)划分训练集和测试集;5)构建模型;6)模型可视化

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

%matplotlib inline是Python的魔法函数,其作用可以将matplotlib绘制的图嵌入Jupyter notebook的单元格中

import pandas as np 注释

import pandas as np 是一条 Python 代码,用于导入 pandas 库,并将其简称为 pd。
这行代码让你能够在当前的 Jupyter Notebook 中使用 pandas 提供的所有功能。

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline 

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

2.1 调用pd(pandas)库中的read_csv函数,然后读取csv格式的数据,并将其赋值给名为dataset的变量

dataset=pd.read_csv('E:/Desktop/studentscores.csv')
dataset.head(11)
HoursScores
02.521
15.147
23.227
38.575
43.530
51.520
69.288
75.560
88.381
92.725
107.785

2.2 查看数据:type(dataset);dataset.shape;dataset.columns;data.info();dataset.describe()

#查看数据类型
type(dataset)
pandas.core.frame.DataFrame
#了解数据集的行与列数
dataset.shape  
(25, 2)
dataset.columns
print(dataset.columns)  
# 可以通过赋值操作,修改列名:dateset.columns = ['Study_Hours', 'Exam_Scores'] print(df.columns) 
Index(['Hours', 'Scores'], dtype='object')
#查看数据集的统计信息
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
print(dataset.describe())
           Hours     Scores
count  25.000000  25.000000
mean    5.012000  51.480000
std     2.525094  25.286887
min     1.100000  17.000000
25%     2.700000  30.000000
50%     4.800000  47.000000
75%     7.400000  75.000000
max     9.200000  95.000000

第3步:提取特征

提取特征:学习时间;提取标签:学习成绩

3.1. 定义机器学习模型的输入和输出(标签)特征变量

#feature_columns是指包含了希望用作机器学习模型的输入特征变量的列明,在这个列子中就是 “Hours”。
#特征列名是指在数据集中用于描述每个样本的属性或特征的列名。这些列名通常对应于数据集中的具体变量。
#将Hours定义为输入特征变量
feature_columns=['Hours']
#label_column是指你希望用作模型输出的特征(标签)列名。
lable_column=['Scores']
print(feature_columns)
['Hours']

从 DataFrame(数据框)类型的 dataset 数据中提取定义为输入特征变量列 'Hours’的数据,并将其存储在变量 features 中。features 是一个 Pandas DataFrame,只包含特征列,类推。

#分别提取输入特征变量和输出(标签)特征变量数据
features=dataset[feature_columns]
lable=dataset[lable_column]
#查看数据(默认前5行)
features.head()
Hours
02.5
15.1
23.2
38.5
43.5
lable.head()             
Scores
021
147
227
375
430

3.2 数据变换

使features和lable变量由数据框型数据变成数组型数据

X=features.values             
print(X)             
[[2.5]
 [5.1]
 [3.2]
 [8.5]
 [3.5]
 [1.5]
 [9.2]
 [5.5]
 [8.3]
 [2.7]
 [7.7]
 [5.9]
 [4.5]
 [3.3]
 [1.1]
 [8.9]
 [2.5]
 [1.9]
 [6.1]
 [7.4]
 [2.7]
 [4.8]
 [3.8]
 [6.9]
 [7.8]]
Y=lable.values
print(Y)
[[21]
 [47]
 [27]
 [75]
 [30]
 [20]
 [88]
 [60]
 [81]
 [25]
 [85]
 [62]
 [41]
 [42]
 [17]
 [95]
 [30]
 [24]
 [67]
 [69]
 [30]
 [54]
 [35]
 [76]
 [86]]
type(X)
numpy.ndarray
X
array([[2.5],
       [5.1],
       [3.2],
       [8.5],
       [3.5],
       [1.5],
       [9.2],
       [5.5],
       [8.3],
       [2.7],
       [7.7],
       [5.9],
       [4.5],
       [3.3],
       [1.1],
       [8.9],
       [2.5],
       [1.9],
       [6.1],
       [7.4],
       [2.7],
       [4.8],
       [3.8],
       [6.9],
       [7.8]])

第4步:建立机器学习模型

4.1 划分数据集:3:1=训练集:测试集(使用scikit-learn库中的train_test_split函数,将数据集划分为训练集和测试集)

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)
# X 和 Y分别是输入特征数据和输出(标签)数据;test_size是指测试集大小占总数据集大小的比例;random_state代表随机种子,
#设置随机种子为0,确保每次划分的结果是可重复的。如果你不设置 random_state,每次运行代码时划分的结果可能会不同

4.2 使用训练集数据进行模型训练

使用scikit-learn 库中的LinearRegression 类来创建一个线性回归模型,并使用训练集数据对模型进行训练

#1.导入并调用线性模型
from sklearn.linear_model import LinearRegression
#2.创建线性回归模型
regressor=LinearRegression()
#3.训练模型:
regressor.fit(X_train,Y_train)
LinearRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
LinearRegression()

4.3 使用训练好的模型对测试集进行预测

#使用训练好的模型对测试集的特征数据 X_test 进行预测,生成预测值 Y_predict
Y_predict=regressor.predict(X_test)

第5步:可视化

#绘制散点图:红色代表训练集的数据
plt.scatter(X_train,Y_train,color='red')
#绘制线图:蓝色线代表由训练集训练出的线性回归模型的预测结果
plt.plot(X_train,regressor.predict(X_train),color='blue')
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#绘制散点图:红色代表测试集的数据
plt.scatter(X_test,Y_test,color='red')
#绘制线图:蓝色线代表对使用测试集对训练出的线性回归模型进行测试的预测结果
plt.plot(X_test,regressor.predict(X_test),color='blue')
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值