【问题标题】:How to fix this error: ValueError: could not convert string to float: 'A'如何修复此错误:ValueError:无法将字符串转换为浮点数:'A'
【发布时间】:2020-09-12 19:09:52
【问题描述】:

我不知道如何摆脱这个错误。下面是我的示例数据集。我还缺少另一个步骤吗?

Code below: 
from sklearn.model_selection import train_test_split 
from sklearn.ensemble import RandomForestClassifier 
models = RandomForestClassifier(n_estimators=100) 
np.random.seed(42)

X = re_arrange.drop('Gender',axis=1) 
y = re_arrange['Gender']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

models.fit(X_train,y_train)
models.score(X_test, y_test)

【问题讨论】:

  • RandomForestClassifier 要求特征为数字(floatint)。 Branch 是字符串,不能转换为 float。您应该查看分类编码器或单热编码器。
  • @QuangHoang 感谢快速响应。会调查这个

标签: python pandas machine-learning sklearn-pandas


【解决方案1】:

您的“分支”列有字母,而 RandomForestClassifier 需要数字。 我相信它是分类类型的。因此,您可以在训练测试拆分之前使用如下所示的一些分类编码对“分支”列进行编码

X["Branch"] = pd.get_dummies(X["Branch"])

它将用数字映射字母“A”、“B”等。它不会更改您的数据,而只是将它们转换为计算友好的状态

【讨论】:

  • 欣赏快速响应。从来不知道 get_dummies 是什么。也会玩这个。
【解决方案2】:

RandomForestClassifier 只能处理其任何特征中的数值。如您所见,几乎所有功能中都有文本/对象数据。所以第一个: 执行 X.info() 以了解您的功能的数据类型。如果您找到“字符串”和“对象”,请使用 One-Hot-Encoder 或 LabelEncoding 将所有这些特征编码为数字。

One-Hot-Encoding

LabelEncoding

【讨论】:

    猜你喜欢
    • 2017-02-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 2018-06-13
    相关资源
    最近更新 更多