【问题标题】:Getting value error when doing scaler.fit_transform(X_train)执行 scaler.fit_transform(X_train) 时出现值错误
【发布时间】: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


【解决方案1】:

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

我不知道您的问题,并且它看起来不使用名称作为功能。但是,如果想继续使用它,请尝试将所有名称转换为数字,例如 John = 0、Sue = 1 等等。您可以使用dictlist 来实现这一目标。您也可以将其转换为 one_hot_encode 以获取名称为 0-1 的列表。

【讨论】:

  • OP 可以使用label_encoder 而不是字典。将节省时间。
  • @rajatkabra 是真的。好电话。
  • 请注意,我将拥有数十万个唯一值。这仍然是解决方案吗?
  • 是的!您需要将其转换为数字。使用建议的功能@rajatkabra,你会没事的
  • @Maarab 这取决于您使用的机器学习模型。有些模型可以很好地解决这个问题,但有些模型会下降,因为与映射到 0 的特征相比,它们最终可能会或多或少地对映射到 1000 的特征给予或多或少的重视。
猜你喜欢
  • 2018-07-06
  • 1970-01-01
  • 2020-03-06
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多