我正在加载train.csv文件以使其与RandomForestClassifier匹配。
.csv文件的加载和处理过程进行得很好。我可以随意使用我的数据帧。
当我尝试:
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=150, min_samples_split=2, n_jobs=-1)
rf.fit(train, target)
我明白了:
ValueError: could not convert string to float: 'D'
我试过:
train=train.astype(float)
用另一个值替换所有“D”。
train.convert_objects(convert_numeric=True)
但问题仍然存在。
我还尝试打印csv文件中的所有valueErrors,但找不到对“D”的引用。
这是我的踪迹:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-20-9d8e309c06b6> in <module>()
----> 1 rf.fit(train, target)
\Anaconda3\lib\site-packages\sklearn\ensemble\forest.py in fit(self, X, y, sample_weight)
222
223 # Convert data
--> 224 X, = check_arrays(X, dtype=DTYPE, sparse_format="dense")
225
226 # Remap output
\Anaconda3\lib\site-packages\sklearn\utils\validation.py in check_arrays(*arrays, **options)
279 array = np.ascontiguousarray(array, dtype=dtype)
280 else:
--> 281 array = np.asarray(array, dtype=dtype)
282 if not allow_nans:
283 _assert_all_finite(array)
\Anaconda3\lib\site-packages\numpy\core\numeric.py in asarray(a, dtype, order)
460
461 """
--> 462 return array(a, dtype, copy=False, order=order)
463
464 def asanyarray(a, dtype=None, order=None):
ValueError: could not convert string to float: 'D'
我应该如何处理这个问题?
最佳答案
如果没有RandomForestClassifier(就我所能找到的)就不是一个python库(包括在python中),那么很难知道在您的案例中发生了什么。然而,真正发生的是,在某个时刻,您试图将字符串“D”转换为浮点。
我可以重复你的错误:
float('D')
现在,为了能够调试此问题,我建议您捕获异常:
try:
rf.fit(train, target)
except ValueError as e:
print(e)
#do something clever with train and target like pprint them or something.
然后你就可以调查到底发生了什么。我找不到关于随机森林分类器的更多信息,除了这个可能有帮助:
https://www.npmjs.com/package/random-forest-classifier