机器学习用python代码实现线性回归算法的几个例子

数学推导见相关参考书。

### 例子1:线性回归画图的例子-最小二乘法
import numpy as np
import matplotlib.pyplot as plt
x=[1,2,3,4,5,6,7,8,9]
y=[0.199,0.389,0.580,0.783,0.980,1.177,1.380,1.575,1.771]
print(np.ones(2))

#增加维度
A=np.vstack([x,np.ones(len(x))]).T
#调用最小二乘法函数
a,b=np.linalg.lstsq(A,y)[0]
#转换成numpy array
x=np.array(x)
y=np.array(y)
#画图
plt.plot(x,y,'o',label='Original data',markersize=10)
plt.plot(x,a*x+b,'r',label='fitted line')
plt.show()

### 例子2:线性回归2 
import numpy as np
import matplotlib.pyplot as plt

x=[1,2,3,4,5,6,7,8,9]
y=[0.199,0.389,0.580,0.783,0.980,1.177,1.380,1.575,1.771]
#偏导数为0, ab计算
t1=t2=t3=t4=0
for i in range(len(x)):
    t1+=y[i]                 # Σy
    t2+=x[i]                 # Σx
    t3+=x[i]*y[i]            # Σxy
    t4+=x[i]**2              # Σx^2
a = (t1*t2/n - t3) / (t2*t2/n - t4)
b = (t1 - a*t2) / n
#转换成numpy array
x=np.array(x)
y=np.array(y)
#画图
plt.plot(x,y,'o',label='Original data',markersize=10)
plt.plot(x,a*x+b,'r',label='fitted line')
plt.show()

### 例子3:线性回归3-马尔萨斯人口模型
#         
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt

T = [1960,1961,1962,1963,1964,1965,1966,1967,1968]
S = [29.72,30.61,31,51,32.13,32.34,32.85,33.56,34.20,34.83]
#转换成numpy array
xdata=np.array(T)
ydata=np.log(np.array(S))
def func(x,a,b):
    return a+b*x
#使用非线性最小二乘法拟合函数
popt,pcov = curve_fit(func,xdata,ydata)
#画图
plt.plot(xdata,ydata,'ko',label='Original Noised Data')
plt.plot(xdata,func(xdata,*popt),'r',label='fitted Curve')
plt.show()


猜你喜欢

转载自blog.csdn.net/ebzxw/article/details/80344663
今日推荐