python线性回归算法——自变量x与输出变量y存在线下关系时
目录
python线性回归算法——自变量x与输出变量y存在线下关系时
用途范围:线下相关的数据进行分析预测时候
一元线性拟合 y=a+bx,根据最小二乘法有
其中a、b通过最小二乘法求得为:
核心公式

python代码实现
#!/usr/bin/python
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np
import math
#使用以后的数据集进行线性回归(这里是波士顿房价数据)
loaded_data=datasets.load_boston()
data_X=[1,2,3,4,5,6,7,8,9,10]
data_y=[1.3,3.5,4.2,5.0,7.0,8.8,10.1,12.5,13.0,15.6]
print('datax:',data_X)
#画散点图
fig=plt.figure()
ax1 = fig.add_subplot(111)#设置标题
ax1.set_title('line ')#设置X轴标签
plt.xlabel('X')#设置Y轴标签
plt.ylabel('Y')
x=np.array(data_X)
y=np.array(data_y)
print('x:',x)
print('y:',y)
plt.legend('x1')#设置图标
#线性拟合
x_avage=sum(x)/len(x)
y_avage=sum(y)/len(y)
print("x平均是:",x_avage," y平均是:",y_avage)
def sub(ava1,ava2,list1,list2):
c1=ava1-list1
c2=ava2-list2
c=sum(c1*c2)
print("c1 * c2 =c", c1, c2,c)
return c
def sub_x(num1,ava1):
c=num1-ava1
print("c=",c)
print("c{}=",c)
return sum(pow(c,2))
fenzi=sub(x_avage,y_avage,x,y)
fenmu=sub_x(x,x_avage)
a=fenzi/fenmu
b=y_avage-a*x_avage
print("x平均是:",x_avage," y平均是:",y_avage,"fenzi=",fenzi,"fenmu=",fenmu)
print("a=",a," b=:",b)
ax1.scatter(x,y,c = 'm',marker = '.')
plt.plot([0,10],[0*a+b,10*a+b])
plt.show()
拟合效果