4

私はこのデータを持っています:

print training_data
print labels

# prints

[[1, 0, 1, 1], [1, 1, 1, 1], [1, 0, 1, 1], [1, 1, 1, 0], [1, 1, 0, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 0,0], [1, 1, 1, 1], [1, 0, 1, 1]]
['a', 'b', 'a', 'b', 'a', 'b', 'b', 'a', 'a', 'a', 'b']

そして、sklearn python ライブラリから RandomForestClassifier にフィードしようとしています。

classifier = RandomForestClassifier(n_estimators=10)
classifier.fit(training_data, labels)

しかし、このエラーを受け取ります:

Traceback (most recent call last):
  File "learn.py", line 52, in <module>
    main()
  File "learn.py", line 48, in main
    classifier = train_classifier()
  File "learn.py", line 33, in train_classifier
    classifier.fit(training_data, labels)
  File "/Library/Python/2.7/site-packages/scikit_learn-0.14_git-py2.7-macosx-10.8-intel.egg/sklearn/ensemble/forest.py", line 348, in fit
    y = np.ascontiguousarray(y, dtype=DOUBLE)
  File "/Library/Python/2.7/site-packages/numpy-1.8.0.dev_bbcfcf6_20130307-py2.7-macosx-10.8-intel.egg/numpy/core/numeric.py", line 419, in ascontiguousarray
    return array(a, dtype, copy=False, order='C', ndmin=1)
ValueError: could not convert string to float: a

私の推測では、このデータをフィッティングのために正しくフォーマットしていません。しかし、ドキュメントから理由がわかりません

これはかなり基本的で単純な問題のようです。誰も答えを知っていますか?

4

2 に答える 2

7

LabelEncoderを使用して事前にラベルを変換してみてください。

于 2013-04-07T19:44:47.827 に答える
0

以下のように、分類子によって自動的に認識される numpy 配列を使用できます。

import numpy as np
from sklearn.ensemble import RandomForestClassifier
np_training = np.array(training_data)
np_labels = np.array(labels)

clf = RandomForestClassifier(n_estimators=20, max_depth=5)
clf.fit(np_training, np_labels)

それはうまくいくはずです

于 2015-05-27T16:01:30.667 に答える