Ошибка получения значения при выполнении scaler.fit_transform (X_train) - PullRequest
0 голосов
/ 03 июля 2019

Я новичок в машинном обучении и пытаюсь практиковаться с scikit-learn в простом случае использования задачи классификации, т.е. на основе имени и национальности, система должна предложить, должен ли пол быть 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>

Я получаю ошибку 'ValueError: не удалось преобразовать строку в число с плавающей точкой:' John '' при выполнении 'X_train = scaler.fit_transform (X_train)' Я знаю, что это очень распространенная проблема, и алгоритмы работают с числами, а не с текстом. Я попытался просмотреть несколько постов и нашел людей, которые рекомендуют 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'

1 Ответ

0 голосов
/ 03 июля 2019

Итак, как говорится в коде, вы передаете строку вместо числа в функцию.Когда вы получаете X = data[feature_names], столбец 'FIRST_NAME_EN' является строкой, и его нельзя использовать в качестве функции для модели.Вам нужно конвертировать это для числа.

Я не знаю вашей проблемы, и не похоже на использование имени в качестве функции.Но, если вы хотите продолжать использовать это, попробуйте преобразовать все имена в числа, например, John = 0, Sue = 1 и так далее.Вы можете использовать dict или list для достижения этой цели.Вы также можете преобразовать его в one_hot_encode, чтобы получить имена в виде списка 0-1.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...