【发布时间】:2019-11-14 05:07:18
【问题描述】:
我是机器学习的新手,并试图在一个简单的分类问题用例上动手实践 scikit-learn,即基于姓名和国籍,系统应该建议 Gender 应该是 1 还是 2。我拥有的数据是:
<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>
在执行“X_train = scaler.fit_transform(X_train)”时出现错误“ValueError: could not convert string to float: 'John'' 我知道这是一个非常普遍的问题,算法适用于数字而不是文本。我尝试浏览了许多帖子,发现有人推荐 LabelEncoder 或 One Hot Encoder,但无法理解它如何适合这里并获得可以解决此问题的简单代码行。帮助表示赞赏。
import sklearn
import pandas as pd
from sklearn.model_selection import train_test_split
data=pd.read_csv("D:\profile_gender_data.csv")
feature_names = ['FIRST_NAME_EN', 'PRS_NATIONALITY_ID']
X = data[feature_names]
y = data['GENDER_ID']
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
错误:ValueError:无法将字符串转换为浮点数:'John'
【问题讨论】:
-
你能告诉我们X的值吗,你可能必须做X.values
-
@MatteoPeluso 我认为这不是问题所在。
train_test_split接受dataframe作为参数。问题是FIRST_NAME_EN是一个字符串。所以,如果你得到 X.values,它仍然是一个字符串。明白了吗? -
@AndréPacheco 是的,我只是想看看 X 的值 :)
-
没关系。我说的是基于发布的大量数据。
标签: python machine-learning scikit-learn