【我的python机器学习之路·2】一元线性回归与学生成绩预测

本系列日记GitHub:

https://github.com/zhengyuv/MyPyMLRoad

欢迎follow和star。

       本节介绍一元线性回归。一元线性回归只涉及到两个变量,即自变量和因变量,这是一种根据自变量来预测因变量的方法。这个方程可表示为Y=A+BX。在这个回归任务中,我们将通过找到“最佳拟合线”来最小化预测误差。具体步骤如下:

1.数据预处理

       这里用到的数据集学生的学习时间和考试分数,我们的任务是根据学生学习的小时数来预测分数。数据集为:

【我的python机器学习之路·2】一元线性回归与学生成绩预测_第1张图片

       观察数据集可以发现,我们不需要处理缺失值和进行特征缩放。

2.训练模型

       我们使用sklearn.linear_model.LinearRegression类来训练模型。首先创建该类的对象regressor,然后使用该类的fit()方法对数据集进行训练。该类的官方文档:http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html#sklearn.linear_model.LinearRegression。

3.预测结果

       利用前一步中的对象regressor调用LinearRegression类的predict()方法进行预测,把结果保存在向量Y_pred中。

4.可视化

       使用matplotlib.pyplot库作图,将结果可视化。这里主要用到库中的scatter()函数和plot()函数,其中scatter()画散点图,plot()画经过点的线。二者官方文档为:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.scatter.html#matplotlib.pyplot.scatter、https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html#matplotlib.pyplot.plot。另外,二者区别可参考:https://blog.csdn.net/C0die/article/details/80849243。

代码:

# -*- coding: utf-8 -*-
"""
Created on Mon Sep  3 12:08:48 2018

@author: zhengyuv
"""
#1.数据预处理
import pandas as pd
#import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

dataset = pd.read_csv('studentscores.csv')
X = dataset.iloc[ : , :1].values
Y = dataset.iloc[ : , 1].values

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)
#因为没有缺失值,所以不用处理缺失值,该数据集也不需要进行特征缩放

#2.训练模型
regressor = LinearRegression()
regressor = regressor.fit(X_train,Y_train)

#3.预测结果
Y_pred = regressor.predict(X_test)

#4.可视化
#训练集结果可视化
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()

输出结果:

【我的python机器学习之路·2】一元线性回归与学生成绩预测_第2张图片

【我的python机器学习之路·2】一元线性回归与学生成绩预测_第3张图片

注:遇到一个错误:

【我的python机器学习之路·2】一元线性回归与学生成绩预测_第4张图片

这是因为在最开始读取数据时使用的是X = dataset.iloc[ : , 0].values,这样读到的数据是1维的,但线性回归中的fit()方法要求特征为2维,所以使用X = dataset.iloc[ : , :1].values即可。

你可能感兴趣的:(学习日记,我的python机器学习之路)