возвращает массив (a, dtype, copy=False, order= order) ValueError: не удалось преобразовать строку в float: ‘STRING’ при построении машинной модели

#python #pandas #scikit-learn #one-hot-encoding #label-encoding

#python #панды #scikit-learn #one-hot-encoding #кодировка метки

Вопрос:

Я получаю следующую ошибку: return array(a, dtype, copy=False, order=order)
ValueError: could not convert string to float: 'BOX72' (BOX72 — это значение в столбце 5).

Ошибка, похоже, возникает в строке с кодом impute_knn.fit_transform(X)

Вот код до сих пор:

 import pandas as pd
from sklearn.preprocessing import LabelEncoder
import numpy as np

dataframe = pd.read_csv('file.csv', delimiter=',')

le = LabelEncoder()
dfle = dataframe

dfle2 = dfle.apply(lambda col: le.fit_transform(col.astype(str)), axis=0, result_type='expand')

newdf = dfle2[['column1', 'column2', 'column3', 'column4', 'column5', 'column6', 'column7']]

X = dataframe[['column1', 'column2', 'column4', 'column5', 'column6', 'column7']].values

y = dfle.column3

from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
ohe = OneHotEncoder()

impute_knn = KNNImputer(n_neighbors=2)
impute_knn.fit_transform(X)

ColumnTransformer([('encoder', OneHotEncoder(), [0])], remainder='passthrough')
X = ohe.fit_transform(X).toarray()
 

Я знаю, что, вероятно, могу использовать что-то вроде strip() , но, похоже, я не могу понять, как я использую его для удаления любого пробела до или после строки для всех ячеек (на случай, если есть другие аналогичные записи значений). Я также не знаю, действительно ли это решение. Любые указания или помощь будут оценены. Спасибо.

Комментарии:

1. Большинство моделей / методов / функций sklearn не могут принимать какие-либо строки в качестве входных данных. Преобразуйте строки в ваших данных в числовые, прежде чем пытаться передать их с помощью fit методов. lebelencoder Могут быть полезны такие вещи, как или статья sklearn «Работа с текстовыми данными»