Как исправить эту ошибку: ValueError: не удалось преобразовать строку в float: 'A' - PullRequest
0 голосов
/ 26 мая 2020

Не знаю, как избавиться от этой ошибки. Ниже приведены мои примеры наборов данных. Есть еще один шаг, который мне не хватает?

enter image description here

Code below: 
from sklearn.model_selection import train_test_split 
from sklearn.ensemble import RandomForestClassifier 
models = RandomForestClassifier(n_estimators=100) 
np.random.seed(42)

X = re_arrange.drop('Gender',axis=1) 
y = re_arrange['Gender']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

models.fit(X_train,y_train)
models.score(X_test, y_test)

Ответы [ 2 ]

1 голос
/ 26 мая 2020

В столбце «Branch» есть буквы, тогда как RandomForestClassifier ожидает числа. Я считаю, что это категоричный тип. Таким образом, вы можете закодировать столбец «Ветвь», используя некоторую категориальную кодировку, как показано ниже, прежде чем выполнять тестовое разбиение

X["Branch"] = pd.get_dummies(X["Branch"])

. Он отобразит буквы 'A', 'B' и c в числах. Он не изменяет ваши данные, а просто преобразует их в удобное для вычислений состояние

0 голосов
/ 26 мая 2020

RandomForestClassifier может обрабатывать только числовые значения в любой из своих функций. Как видите, у вас есть текстовые / объектные данные почти во всех ваших функциях. Итак, во-первых: сделайте X.info (), чтобы узнать тип данных ваших функций. Если вы найдете «строку» и «объект», закодируйте все эти функции в числах с помощью One-Hot-Encoder или LabelEncoding.

One-Hot-Encoding

LabelEncoding

...