### Scikit-learn随机森林fit方法中的值错误

我正在尝试使用Python和Scikit-learn对存储为特征向量的一组数据进行训练(拟合)随机森林分类器。我可以读取数据,但由于值错误,我无法运行分类器的训练。我使用的源代码如下:

from sklearn.ensemble import RandomForestClassifierfrom numpy import genfromtxt my_training_data = genfromtxt('csv-data.txt', delimiter=',') X_train = my_training_data[:,0] Y_train = my_training_data[:,1:my_training_data.shape[1]] clf = RandomForestClassifier(n_estimators=50) clf = clf.fit(X_train.tolist(), Y_train.tolist())

返回给我的错误如下:

Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/usr/lib/python2.7/dist-packages/sklearn/ensemble/forest.py",  line 260, in fitn_samples, self.n_features_ = X.shapeValueError: need more than 1 value to unpack

csv-data.txt 是一个逗号分隔值文件,包含3996个用于训练分类器的向量。我使用第一维来标记向量,其余为浮点值。这些是分类器中使用的特征向量的维度。

我在这里错过了某些转换吗?


回答:

训练示例按行存储在"csv-data.txt"中,每行的第一个数字包含类别标签。因此,您应该有:

X_train = my_training_data[:,1:]Y_train = my_training_data[:,0]

请注意,在X_train的第二个索引中,您可以省略结束索引,索引会自动运行到末尾(当然,为了清晰起见,您可以明确指出,但这只是供参考)。

另外,在调用fit()时没有必要调用tolist(),因为这些已经是numpyndarray,如果参数是列表,fit()函数会将它们转换回numpyndarray

clf.fit(X_train.tolist(), Y_train.tolist())

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注