小编典典

RandomForestClassfier.fit():ValueError:无法将字符串转换为浮点型

python

给出的是一个简单的CSV文件:

A,B,C
Hello,Hi,0
Hola,Bueno,1

显然,实际数据集比这要复杂得多,但是这一数据再现了错误。我正在尝试为其构建一个随机森林分类器,如下所示:

cols = ['A','B','C']
col_types = {'A': str, 'B': str, 'C': int}
test = pd.read_csv('test.csv', dtype=col_types)

train_y = test['C'] == 1
train_x = test[cols]

clf_rf = RandomForestClassifier(n_estimators=50)
clf_rf.fit(train_x, train_y)

但是当我调用fit()时,我只是得到了这个追溯:

ValueError: could not convert string to float: 'Bueno'

scikit-learn版本为0.16.1。


阅读 300

收藏
2021-01-20

共1个答案

小编典典

在使用fit之前,您必须进行一些编码。如前所述,fit()不接受字符串,但是您可以解决此问题。

有几种可以使用的类:

就个人而言,前段时间我在StackOverflow上发布了几乎相同的问题。我想拥有一个可扩展的解决方案,但没有得到任何答案。我选择了将所有字符串二值化的OneHotEncoder。这是非常有效的,但是如果您有很多不同的字符串,矩阵将非常快地增长并且将需要内存。

2021-01-20