Python 线性回归模型可视化及残差分析 - 示例详解
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r'c:\windows\fonts\msyh.ttc', size=10)
def runplt(size=None):
plt.figure(figsize=size)
plt.title('数据', fontproperties=font)
plt.xlabel('房屋面积', fontproperties=font)
plt.ylabel('销售价格', fontproperties=font)
plt.axis([0, 300, 0, 300])
plt.grid(True)
return plt
plt = runplt()
X = [[115], [110], [80], [135], [105]]
y = [[24.8], [21.6], [18.4], [29.2], [22]]
plt.plot(X, y, 'k.')
plt.show()
from sklearn import linear_model
model = linear_model.LinearRegression()
model.fit(X, y)
print(model.intercept_) #截距
print(model.coef_) #线性模型的系数
a = model.predict([[150]])
# a[0][0]
print('预测当房屋面积为150m2时的销售价格:{:.2f}'.format(model.predict([[150]])[0][0]))
plt = runplt()
plt.plot(X, y, 'k.')
X2 = [[0], [10], [14], [25]]
model = linear_model.LinearRegression()
model.fit(X,y)
y2 = model.predict(X2)
plt.plot(X2, y2, 'g-')
plt.show()
##带成本函数的多条拟合曲线,如何取最佳曲线?
plt = runplt(size=(10,10))
plt.plot(X, y, 'k.')
y3 = [14.25, 14.25, 14.25, 14.25]
y4 = y2*0.5 + 5
model.fit(X[1:-1], y[1:-1])
y5 = model.predict(X2)
plt.plot(X, y, 'k.', label='X, y')
plt.plot(X2, y2, 'g-.', label='X2 y2')
plt.plot(X2, y3, 'r-.',label='X2, y3')
plt.plot(X2, y4, 'y-.',label='X2, y4')
plt.plot(X2, y5, 'o-', label='X2, y5')
plt.legend()
plt.show()
plt = runplt()
plt.plot(X, y, 'k.')
X2 = [[0], [10], [14], [25]]
model = linear_model.LinearRegression()
model.fit(X, y)
y2 = model.predict(X2)
plt.plot(X, y, 'k.')
plt.plot(X2, y2, 'g-')
# 残差预测值
yr = model.predict(X)
# enumerate 函数可以把一个 list 变成索引-元素对
for idx, x in enumerate(X):
plt.plot([x, x], [y[idx], yr[idx]], 'r-')
plt.show()
import numpy as np
print('残差平方和:{:.2f}'.format(np.mean((model.predict(X) - y) ** 2)))
残差平方和: 6.11
原文地址: https://www.cveoy.top/t/topic/pk1o 著作权归作者所有。请勿转载和采集!