一:算法具体实现
import numpy as np import matplotlib.pyplot as plt data=np.genfromtxt("data.csv",delimiter=",") x_data=data[:,0] y_data=data[:,1] plt.scatter(x_data,y_data) plt.show() lr=0.01 b=0 k=0 epochs=100 def computer_error(b,k,x_data,y_data): totalError=0 for i in range(0,len(x_data)): totalError+=(y_data[i]-(k*x_data[i]*b))**2 return totalError/float(len(x_data)) def function(x_data,y_data,b,k,lr,epochs): m=float(len(x_data)) for i in range(epochs): b_grad=0 k_grad=0 for j in range(0,len(x_data)): b_grad+=(1/m)*((k*x_data[j]+b)-y_data[j]) k_grad+=(1/m)*x_data[j]*((k*x_data[j]+b)-y_data[j]) b-=(lr*b_grad) k-=(lr*k_grad) return b,k computer_error(b,k,x_data,y_data) b,k=function(x_data,y_data,b,k,lr,epochs) plt.plot(x_data,y_data,'b.') plt.plot(x_data,x_data*k+b,'r') plt.show()
二:运用sklearn库调用
import numpy as np from sklearn.linear_model import LinearRegression import matplotlib.pyplot as plt data=np.genfromtxt("data.csv",delimiter=",") x_data=data[:,0] y_data=data[:,1] plt.scatter(x_data,y_data) plt.show() x_data=x_data[:np.newaxis] print(x_data) y_data=y_data[:np.newaxis] print(y_data) model=LinearRegression() model.fit(x_data,y_data) LinearRegression(copy_X=True,fit_intercept=True,n_jobs=1,normalize=False) plt.plot(x_data,y_data,'b.') plt.plot(x_data,model.predict(x_data),'r') plt.show()