执行scaler.fit_transform(X_train)时获取值错误

时间:2019-07-03 13:29:04

标签: python machine-learning scikit-learn

我是机器学习的新手,并尝试通过简单的分类问题用例(即基于名称和国籍)使用scikit-learn,系统应建议性别应为1或2。我拥有的数据是:

func2

我在执行'X_train = scaler.fit_transform(X_train)'时收到错误'ValueError:无法将字符串转换为float:'John' 我知道这是一个非常普遍的问题,算法适用于数字而不是文字。我尝试过许多文章,并发现有人推荐LabelEncoder或One Hot Encoder,但无法理解它在这里的适用性,无法获得简单的代码行来解决此问题。帮助表示赞赏。

<br>
Name    Nationality Gender<br>
John    201           1<br>
Sue     401           2<br>
Smith   401           1<br>
.... Millions of rows (but to start I'm just picking 5000 records)
<br>

错误:ValueError:无法将字符串转换为float:'John'

1 个答案:

答案 0 :(得分:0)

因此,如代码所示,您正在向函数传递字符串而不是数字。当您获得X = data[feature_names]时,列'FIRST_NAME_EN'是一个字符串,并且不允许将其用作模型的功能。您需要将其转换为数字。

我不知道您的问题,并且看起来也不会使用名称作为功能。但是,如果要继续使用该名称,请尝试将所有名称转换为数字,例如John = 0,Sue = 1等等。您可以使用dictlist来实现。您还可以将其转换为one_hot_encode,以便将名称显示为0-1列表。

我希望对您有帮助