1.画直线y=0.5*x+3
import numpy as np
import matplotlib.pyplot as plt
#令x为-5到5之间,元素数为100的等差数列
x=np.linspace(-5,5,100)
y=0.5*x+3
plt.plot(x,y,c='orange')
plt.title('Straight Line')
plt.show()

2.根据两点拟合直线
【知识点】sklearn.linear_model.LinearRegression



import numpy as np
import matplotlib.pyplot as plt
#导入线性回归模型
from sklearn.linear_model import LinearRegression
#输入两个点的横坐标
X=[[1],[4]]
#输入两个点的纵坐标
y=[3,5]
#用线性模型拟合这两个点
lr=LinearRegression().fit(X,y)
#画出两个点和直线的图形
z=np.linspace(0,5,20)
plt.scatter(X,y,s=80)
plt.plot(z,lr.predict(z.reshape(-1,1)),c='k')
plt.title('Straight Line')
plt.show()
#输出直线方程
print('y={:.3f}'.format(lr.coef_[0]),'x +','{:.3f}'.format(lr.intercept_))

3.将2中的两点改为三点
import numpy as np
import matplotlib.pyplot as plt
#导入线性回归模型
from sklearn.linear_model import LinearRegression
#输入两个点的横坐标
X=[[1],[4],[3]]
#输入两个点的纵坐标
y=[3,5,3]
#用线性模型拟合这两个点
lr=LinearRegression().fit(X,y)
#画出两个点和直线的图形
z=np.linspace(0,5,20)
plt.scatter(X,y,s=80)
plt.plot(z,lr.predict(z.reshape(-1,1)),c='k')
plt.title('Straight Line')
plt.show()
#输出直线方程
print('y={:.3f}'.format(lr.coef_[0]),'x +','{:.3f}'.format(lr.intercept_))

4.更多点预测直线
【知识点】sklearn.datasets.make_regression
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression
from sklearn.linear_model import LinearRegression
X, y = make_regression(n_samples=50, n_features=1, n_informative=1,noise=50,random_state=1)
reg = LinearRegression()
reg.fit(X,y)
z = np.linspace(-3,3,200).reshape(-1,1)
plt.scatter(X,y,c='b',s=60)
plt.plot(z, reg.predict(z),c='k')
plt.title('Linear Regression')
plt.show()
#输出直线方程
print('y={:.3f}'.format(reg.coef_[0]),'x +','{:.3f}'.format(reg.intercept_))

本文深入浅出地介绍了线性模型的基础知识,从画直线y=0.5*x+3开始,逐步讲解如何根据两点进行直线拟合,并扩展到使用三点进行拟合,最后探讨了如何用更多点进行直线预测。通过sklearn库的LinearRegression和make_regression函数,读者可以实际操作并理解线性模型的工作原理。

774

被折叠的 条评论
为什么被折叠?



