ValueError: не удалось преобразовать строку в число с плавающей точкой: sklearn, numpy, panda - PullRequest
0 голосов
/ 19 января 2020

Я пытаюсь преобразовать имена автомобилей из массива NumPy в числа c, чтобы использовать их для линейного регрессора. Кодировщик меток выдает предупреждение: ValueError: не удалось преобразовать строку в число с плавающей точкой: 'porsche' Может кто-нибудь помочь, пожалуйста?

Вот код:

 from sklearn.preprocessing import StandardScaler
 from sklearn.preprocessing import LabelEncoder, OneHotEncoder
 enc = LabelEncoder()
 enc.fit_transform(Z[:,0:1])
 onehotencoder = OneHotEncoder(categorical_features = [0])
 Z = onehotencoder.fit_transform(Z).toarray()`

и outoput: ValueError: не удалось преобразовать строку в число с плавающей точкой: 'porsche'

А вот массив: Имя массива = Z, тип str416,

1 Ответ

1 голос
/ 19 января 2020

Для одного горячего кодирования я бы посоветовал вам использовать pd.get_dummies, гораздо проще в использовании:

# make sure Z is a dataframe
X = pd.get_dummies(Z).values

Если вы хотите использовать OHE от sklearn, вы можете обратиться к следующему примеру:

from sklearn.preprocessing import StandardScaler, LabelEncoder, OneHotEncoder

df = pd.DataFrame({'a':['audi','porsche','audi'], 'b':[1,2,3]})
ohe = OneHotEncoder()

mat = ohe.fit_transform(df[['a']])

# view the contents of array
mat.todense()

matrix([[1., 0.],
        [0., 1.],
        [1., 0.]])

# get feature names
ohe.get_feature_names()
array(['x0_audi', 'x0_porsche'], dtype=object)
...