一、目的:通过sklearn理解简单线性回归也叫一元线性回归的实现方式
二、实现:
1、引用:
import matplotlib.pyplot as plt
import numpy as np
import math
2、构造数据:
x=np.array([1, 2, 3, 4, 5, 6, 7,8,9,10,11,23])
x=np.linspace(0,100,100)
r=np.random.normal(0,50,size=100)
y= 3*x+ r
3、绘制数据:
plt.scatter(x,y)
plt.show()
4、利用最小二乘法计算a和b(y=ax+b)
公式:
x_mean=np.mean(x)
y_mean=np.mean(y)
num=0.0
d=0.0
for x_z,y_z in zip(x,y):
num+=(x_z- x_mean)*(y_z-y_mean)
d+=(x_z-x_mean)**2
print(num)
print(d)
输出:
247499.42712910223
85016.83501683504
a=num/d
b=y_mean- a* x_mean
5、绘制回归曲线
plt.scatter(x,y)
plt.plot(x_result,x_result*a+b)
plt.show()
6、利用回归曲线预测结果
x_sample=100
y_sample=a*x_sample+b
y_sample
预测结果:
292.18324475748034
说明:简单线性回归就是利用存在线性关系的样本计算出最佳拟合,通过拟合来预估结果;
比如估算房子的价格,通常价格跟面积呈现线性相关,可以通过历史成交数据拟合面积价格曲线用来评估一套房子的价格,当然不仅仅是跟面积有关,开发商、年代、地理位置、学区等都有关系,可以应用更复杂的机器学习算法进行拟合,比如:多元线性回归