使用线性回归模型预测单个值时出错

时间:2019-07-18 01:44:34

标签: machine-learning scikit-learn anaconda sklearn-pandas

我是一个初学者,正在建立线性回归模型,当我根据测试集进行预测时,它可以正常工作。但是,当我尝试预测某个特定值时。它给出了一个错误。我正在观看的教程没有任何错误。

dataset = pd.read_csv('Position_Salaries.csv')
X = dataset.iloc[:, 1:2].values
y = dataset.iloc[:, 2].values

# Fitting Linear Regression to the dataset
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X, y)

# Visualising the Linear Regression results
plt.scatter(X, y, color = 'red')
plt.plot(X, lin_reg.predict(X), color = 'blue')
plt.title('Truth or Bluff (Linear Regression)')
plt.xlabel('Position level')
plt.ylabel('Salary')
plt.show()

# Predicting a new result with Linear Regression
lin_reg.predict(6.5)

ValueError:预期的2D数组,而是标量数组: 数组= 6.5。 如果数据具有单个功能,则使用array.reshape(-1,1)来重塑数据;如果包含单个样本,则使用array.reshape(1,-1)来重塑数据。

1 个答案:

答案 0 :(得分:0)

根据Scikit-learn documentation,输入数组应具有形状(n_samples, n_features)。这样,如果您希望单个示例具有单个值,则应该期望输入的形状为(1,1)

这可以通过以下操作来完成:

import numpy as np
test_X = np.array(6.5).reshape(-1, 1)
lin_reg.predict(test_X)

您可以通过以下方式检查形状:

test_X.shape

这样做的原因是因为输入可以有很多样本(即您想一次预测多个数据点),或者/并且每个样本都可以具有许多功能。

注意:Numpy是一个Python库,用于支持大型数组和矩阵。 When scikit-learn is installed, Numpy should be installed as well