画图时 看到书上加了plt.plot(reg.predict(X),np.ones(len(y)))
将np.ones(len(y))这段删了以后拟合值图的区域和形状都不一样了,请问这句话是做什么用呢?
我将np.ones(len(y))换为np.zeros(len(y)),区别就是横线处于0,
为什么书上要设置 为 1的横线呢?
不太明白,请大家帮我看看~
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import scipy.stats as stats
w=pd.read_csv("Concrete_Data.csv")
wn=w.columns
print(wn)
#各个变量散点图
f=plt.figure(figsize=(16,8))
k=0
for i in range(len(wn)):
for j in range(len(wn)):
k=k+1
if i!=j:
f.add_subplot(len(wn),len(wn),k)
plt.scatter(w[wn[i]],w[wn[j]])
plt.axis('off')
else:
f.add_subplot(len(wn),len(wn),k)
plt.scatter([0,1],[0,1])
plt.text(.5,.5,wn[i],ha='center',va='center',size=10)
plt.axis('off')
#plt.show()
#线性回归
from sklearn import linear_model
y=np.array(w[wn[-1]])[:,np.newaxis]
X=np.array(w[wn[:-1]])
#print(y)
#print(w[wn[-1]])
reg=linear_model.LinearRegression()
reg.fit(X,y)
res=y-reg.predict(X)
import pylab
res.shape=res.shape[0]
f.add_subplot(121)#一行两列,数到第一个
plt.scatter(reg.predict(X),res)
plt.plot(reg.predict(X),np.ones(len(y)))#就是这里!!!!!
print(len(y))
print(np.ones(len(y)))
plt.xlabel('Fitted values')
plt.ylabel('Residuals')
f.add_subplot(122)
stats.probplot(res,dist='norm',plot=pylab)
plt.show()