接受为scikit-earn.predict方法参数的类型



我正在进行一个项目,使用机器学习算法(即scikit-learn RandomForestClassifier类(对一些数据进行分类。我已经使用RandomForestClassifier.fit()来拟合训练数据,现在我正尝试使用它来预测我的数据。

我的问题是,我不确定需要将什么类型的数据传递到RandomForestClassifier.predict()方法中才能进行预测。我已经使用predict()方法来使用测试集进行预测,但我正在努力了解如何将我训练的算法应用于更通用的问题。

也就是说,我的主要问题是我试图对我的数据帧的单行进行预测。在我用来训练算法的数据帧中定位一行,并对其进行单一预测。这是我使用的代码的许多变体之一:

Xnew = productMarketResearch.loc[50]
Xnew = np.array(Xnew.values.tolist())
Xnew = sc.transform(Xnew)
ynew = rfc.predict(Xnew)

我尝试的每件事都会抛出相同的错误:

ValueError: Expected 2D array, got 1D array instead:
array=[3.63360000e+04 1.55639455e+12 0.00000000e+00].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

我尝试过使用array.reform和其他方法将其转换为2D数组,但都没有成功。这个问题有什么解决方案,以及在使用数据帧的同时使用predict()方法的一些一般建议?

大多数sklearn模型都需要2D阵列。尝试:

# difference here
Xnew = productMarketResearch.loc[[50]]
# usually you don't need this
# Xnew = np.array(Xnew.values.tolist())
Xnew = sc.transform(Xnew)
ynew = rfc.predict(Xnew)

相关内容

最新更新