我是一个初学者,正在建立线性回归模型,当我根据测试集进行预测时,它可以正常工作。但是,当我尝试预测某个特定值时。它给出了一个错误。我正在观看的教程没有任何错误。
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)来重塑数据。
答案 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。