我是机器学习的新手,并尝试通过简单的分类问题用例(即基于名称和国籍)使用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'
答案 0 :(得分:0)
因此,如代码所示,您正在向函数传递字符串而不是数字。当您获得X = data[feature_names]
时,列'FIRST_NAME_EN'
是一个字符串,并且不允许将其用作模型的功能。您需要将其转换为数字。
我不知道您的问题,并且看起来也不会使用名称作为功能。但是,如果要继续使用该名称,请尝试将所有名称转换为数字,例如John = 0,Sue = 1等等。您可以使用dict
或list
来实现。您还可以将其转换为one_hot_encode
,以便将名称显示为0-1列表。
我希望对您有帮助