【机器学习100天】简单线性回归 | 第2天

第二天:简单线性回归

下面是完整的代码:

# Step 1: Data Preprocessing 数据预处理
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
dataset = pd.read_csv('C:\\Users\\Amanda\\Desktop\\python\\ML-Learning\\datasets\\studentscores.csv')
X = dataset.iloc[:,:1].values
Y = dataset.iloc[:,1].values

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,random_state = 0)

# Step 2: Fitting Simple Linear Regression Model to the training set拟合简单的线性回归模型与训练集
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor = regressor.fit(X_train,Y_train)

#Step 3: Predecting the Result 预测结果
Y_pred = regressor.predict(X_test)

# Step 4: Visualization 可视化,用pyplot来做散点图
plt.scatter(X_train,Y_train,color = 'red')
plt.plot(X_train,regressor.predict(X_train),color = 'blue')

plt.scatter(X_test , Y_test, color = 'red')
plt.plot(X_test , regressor.predict(X_test), color ='blue')

结果是这样的,第一张图是训练集,第二张是测试集:
【机器学习100天】简单线性回归 | 第2天_第1张图片

今天是用到了LinearRegression,线性回归,大概的内容就是先把数据集分成test和train,然后用LinearRegression画了条线,然后表示数据分布是符合线性回归的。有了这个模型的话,就可以预测其他的数据了。

简单线性回归

其实看图就很明了了,简单线性回归就是普通的二元一次函数,y=kx+b,我们可以通过简单线性回归来入门回归模型分析。

1. 什么是回归

监督学习中:
如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),
如果预测的变量是连续的,我们称其为回归。

回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。
如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。

2. 一元线性回归

我们观察图1,可以看见,数据围绕在预测出的模型的周围,所以数据并非完全拟合模型,不完全拟合,就存在误差,这里就引出两个问题:

  1. 一元线性回归模型y=kx+b中的k和b是如何求得的?
  2. 如何描述模型的拟合度?

3. 最小二乘法和残差

一般情况下,平均数可以反映一组数据的整体情况,方差可以反映一组数据的离散情况。
假设有一组数据[n1,n2,n3,n4,n5]:
平均数:An = (n1 + n2 + n3 + n4 + n5) /5。
方差: Dn = Σ(n1 - An)²

对于简单线性回归来说:f(x) = kx +b,我们可以依据方差公式,求出数据的残差,就是Q = Σ(y - y1)² = Σ((kx +b) - y1)²,当Q最小时,就是最优解,这就是最小二乘法。
对于关于Q和x,y的函数,可以通过导数来确定k和b,因为当导数为0的时候,此时是最值,也就是最优解。

所以,上面的两个问题就有答案了。
答:1.可以通过最小二乘法来求出k和b,从而确定模型公式。2.可以通过残差来描述简单线性回归模型的拟合度。

相关参考:

对于最小二乘法和简单线性回归,可以看一下这两个博客:
线性回归
最小二乘法

你可能感兴趣的:(机器学习100天,机器学习,线性回归,python)