机器学习基础篇之线性回归模型与学习成绩
[点我获取机器学习所用原始数据](【腾讯文档】studentscores
https://docs.qq.com/sheet/DQWFDTWFFbHFuak9w)
- 观察数据;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)
Hours | Scores | |
---|---|---|
0 | 2.5 | 21 |
1 | 5.1 | 47 |
2 | 3.2 | 27 |
3 | 8.5 | 75 |
4 | 3.5 | 30 |
5 | 1.5 | 20 |
6 | 9.2 | 88 |
7 | 5.5 | 60 |
8 | 8.3 | 81 |
9 | 2.7 | 25 |
10 | 7.7 | 85 |
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()
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 |
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 | |
---|---|
0 | 2.5 |
1 | 5.1 |
2 | 3.2 |
3 | 8.5 |
4 | 3.5 |
lable.head()
Scores | |
---|---|
0 | 21 |
1 | 47 |
2 | 27 |
3 | 75 |
4 | 30 |
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()