Scikit-learn 随机森林拟合方法中的值错误
Value Error in Scikit-learn Random forest fit method
我正在尝试使用 python 和 scikit-learn 训练(拟合)随机森林分类器以获取一组存储为特征向量的数据。我可以读取数据,但由于 Value Erros,我无法 运行 分类器的训练。我使用的源代码如下:
from sklearn.ensemble import RandomForestClassifier
from 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 fit
n_samples, self.n_features_ = X.shape
ValueError: need more than 1 value to unpack
csv-data.txt 是一个逗号分隔值文件,包含 3996 个用于训练分类器的向量。我用
标记向量的第一个维度,其余维度是浮点值。这些是分类器中使用的特征向量的维度。
我在这里错过了一些转换吗?
训练示例按行存储在 "csv-data.txt"
中,每行的第一个数字包含 class 标签。因此你应该:
X_train = my_training_data[:,1:]
Y_train = my_training_data[:,0]
请注意,在 X_train
中的第二个索引中,您可以省略结束索引,索引将自动 运行 结束(当然,为了清楚起见,您可以明确表示,但这仅供参考。
此外,在调用 fit()
时无需调用 tolist()
,因为它们已经是 numpy
ndarray
,并且 fit()
函数如果参数是列表,会将它们转换回 numpy
ndarray
。
clf.fit(X_train.tolist(), Y_train.tolist())
我正在尝试使用 python 和 scikit-learn 训练(拟合)随机森林分类器以获取一组存储为特征向量的数据。我可以读取数据,但由于 Value Erros,我无法 运行 分类器的训练。我使用的源代码如下:
from sklearn.ensemble import RandomForestClassifier
from 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 fit
n_samples, self.n_features_ = X.shape
ValueError: need more than 1 value to unpack
csv-data.txt 是一个逗号分隔值文件,包含 3996 个用于训练分类器的向量。我用 标记向量的第一个维度,其余维度是浮点值。这些是分类器中使用的特征向量的维度。
我在这里错过了一些转换吗?
训练示例按行存储在 "csv-data.txt"
中,每行的第一个数字包含 class 标签。因此你应该:
X_train = my_training_data[:,1:]
Y_train = my_training_data[:,0]
请注意,在 X_train
中的第二个索引中,您可以省略结束索引,索引将自动 运行 结束(当然,为了清楚起见,您可以明确表示,但这仅供参考。
此外,在调用 fit()
时无需调用 tolist()
,因为它们已经是 numpy
ndarray
,并且 fit()
函数如果参数是列表,会将它们转换回 numpy
ndarray
。
clf.fit(X_train.tolist(), Y_train.tolist())