当前位置: 首页 > 面试题库 >

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

吴驰
2023-03-14
问题内容

给出的是一个简单的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。


问题答案:

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

有几种可以使用的类:

  • LabelEncoder:将字符串转换为增量值
  • OneHotEncoder:使用“千分之一”算法将您的字符串转换为整数

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



 类似资料:
  • 问题内容: 我正在运行以下python脚本: 但是我得到了类似的错误: 我对此感到困惑。当我在交互式部分中仅尝试一行时,而不是使用脚本进行for循环时: 它运作良好。 有人可以解释一下吗?谢谢。 问题答案: 显然,您的某些行没有有效的float数据,特别是某些行的文本无法转换为float。 当您在交互式提示中尝试它时,您仅尝试第一行,因此最好的方法是在出现此错误的地方打印行,您将知道错误的行,例如

  • 问题内容: 正如标题所说。我不认为有可能这样做,但如果可以告诉我。 这是我正在编写的bukkit(minecraft服务器)插件所必需的。我要执行一个命令:tnt [power]。电源是我想转换为浮点数的返回字符串。 谢谢 问题答案: 用于进行转换。 和之间的区别只是回报。如果需要(对象),请使用前者;如果要数字,请使用后者。

  • 例如,它不是返回2,而是返回“11” 我正在从该API收集数据:https://www.hatchways.io/api/assessment/students obs(为了检索数据,我创建了一个服务:export class StudentsService{ String="https://www.hatchways.io/api/assessment/students"; 构造函数(私有htt

  • ()中的ValueError回溯(最近一次调用)---- ~\Anaconda3\lib\site packages\sklearn\preprocessing\data.py in fit_transform(self,X,y)2017”““2018年返回所选的fit_transform(X,self.\u fit_transform- ~\Anaconda3\lib\site-包\skLear

  • 问题内容: http://golang.org/pkg/strconv/ http://play.golang.org/p/4VNRgW8WoB 如何将浮点数转换为字符串格式?这是google游乐场,但未获得预期的输出。(2e + 07)我想得到“ 21312421.213123” 请帮助我从浮点数中获取字符串。谢谢 问题答案: 试试这个 如果只想获得尽可能高的位数精度,则特殊精度-1使用所需的最

  • 所以上周我决定学习用python编写代码,因为我有C++和C#的经验,说实话,对我来说没什么。而Python却是。我决定做一个BMI计算器,因为我发现它很容易。问题出现在if部分。我添加了我找到的代码,但它只是将一个错误切换到另一个错误。如有任何提示,将不胜感激:) 旁注:这只是一个更大的代码的一部分,它告诉你EG有多少克。你应该吃的脂肪。但此刻我被困在这里。