繁体   English   中英

Sklearn - 使用交叉验证进行价格预测

[英]Sklearn - price prediction using cross validation

这是我的代码:

from sklearn.datasets import load_boston
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_predict
from sklearn.model_selection import train_test_split

%matplotlib inline

boston_properties = load_boston()

l_distance = boston_properties['data'][:, np.newaxis, 7]
linreg = LinearRegression()

X_train, X_test, y_train, y_test = train_test_split(l_distance, boston_properties['target'], test_size = 0.3)
y_pred = cross_val_predict(linreg, l_distance, boston_properties.target, cv=5)

plt.scatter(X_test, y_test, color='black')
plt.plot(X_test, y_pred, color='blue', linewidth=2)
plt.show()
print(y_pred.shape)

我收到的错误如下:

ValueError: x 和 y 必须具有相同的第一维,但具有形状 (152, 1) 和 (506,)

我怎样才能使这项工作?

你做了一个train_test_split ,但你没有用它来训练模型。 然后您对整个训练数据进行预测,并将其与y_test进行比较。 这没有任何意义。 改用这些行:

l_distance = boston_properties['data'][:, np.newaxis, 7]
linreg = LinearRegression()

X_train, X_test, y_train, y_test = train_test_split(l_distance,
    boston_properties['target'], test_size = 0.3) # now you have a train/test set
y_pred = cross_val_predict(linreg, X_train, y_train, cv=5) 

plt.scatter(X_train, y_train, color='black')
plt.plot(X_train, y_pred, color='blue', linewidth=2)
plt.show()

在此处输入图片说明

编辑:您也可以使用这条线通过您的点制作一条直线:

plt.scatter(X_train, y_train, color='black')
plt.plot([X_train[np.argmin(X_train)], X_train[np.argmax(X_train)]],
         [y_pred[np.argmin(X_train)], y_pred[np.argmax(X_train)]],
         color='blue')
plt.show()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM