Ошибка значения: не удалось преобразовать строку в float: ‘FLANG Group’

#python #numpy #scikit-learn #neural-network #one-hot-encoding

#python #numpy #scikit-learn #нейронная сеть #one-hot-encoding

Вопрос:

Я пытаюсь выполнить OneHotEncoding для списка компаний в моем наборе данных для нейронной сети, которую я создаю.

 from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])], remainder='passthrough')
X = np.array(ct.fit_transform(X))
  

И я получил это сообщение об ошибке

 ---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/Applications/anaconda3/envs/tenserflowReal/lib/python3.7/site-packages/sklearn/compose/_column_transformer.py in _hstack(self, Xs)
    630                                             force_all_finite=False)
--> 631                                 for X in Xs]
    632             except ValueError:

/Applications/anaconda3/envs/tenserflowReal/lib/python3.7/site-packages/sklearn/compose/_column_transformer.py in <listcomp>(.0)
    630                                             force_all_finite=False)
--> 631                                 for X in Xs]
    632             except ValueError:

/Applications/anaconda3/envs/tenserflowReal/lib/python3.7/site-packages/sklearn/utils/validation.py in inner_f(*args, **kwargs)
     72         kwargs.update({k: arg for k, arg in zip(sig.parameters, args)})
---> 73         return f(**kwargs)
     74     return inner_f

/Applications/anaconda3/envs/tenserflowReal/lib/python3.7/site-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, estimator)
    598                 else:
--> 599                     array = np.asarray(array, order=order, dtype=dtype)
    600             except ComplexWarning:

/Applications/anaconda3/envs/tenserflowReal/lib/python3.7/site-packages/numpy/core/_asarray.py in asarray(a, dtype, order)
     84     """
---> 85     return array(a, dtype, copy=False, order=order)
     86 

ValueError: could not convert string to float: 'FLANG Group'

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-21-86f247aff9da> in <module>
      3 from sklearn.preprocessing import OneHotEncoder
      4 ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])], remainder='passthrough')
----> 5 X = np.array(ct.fit_transform(X))

/Applications/anaconda3/envs/tenserflowReal/lib/python3.7/site-packages/sklearn/compose/_column_transformer.py in fit_transform(self, X, y)
    551         self._validate_output(Xs)
    552 
--> 553         return self._hstack(list(Xs))
    554 
    555     def transform(self, X):

/Applications/anaconda3/envs/tenserflowReal/lib/python3.7/site-packages/sklearn/compose/_column_transformer.py in _hstack(self, Xs)
    631                                 for X in Xs]
    632             except ValueError:
--> 633                 raise ValueError("For a sparse output, all columns should"
    634                                  " be a numeric or convertible to a numeric.")
    635 

ValueError: For a sparse output, all columns should be a numeric or convertible to a numeric.
  

‘FLANG Group’ — это одно из названий компании, которое я пытаюсь OneHotEncode.

что означают эти сообщения об ошибке?

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

1. Не могли бы вы предоставить свои данные ‘X’ или их фиктивную копию, пожалуйста, чтобы ваша ошибка могла быть воспроизведена в вашем коде?

2. Конечно. Как мне это точно сделать?

3. Взгляните на пример здесь scikit-learn.org/stable/modules/generated /… , где код может быть запущен с данными, которые они предоставляют в одной строке.

4. На самом деле у меня возникли некоторые трудности с созданием воспроизводимого кода с минимальным набором данных (я новичок в кодировании), поэтому я решил создать ссылку на мой мини-набор данных. Я надеюсь, что это приемлемо, и я приношу извинения за любые неудобства, которые это вызывает. drive.google.com/file/d/1LGObkzIDFrkWS5A6g4w2PQfa84-6cjj7 /… X, в данном случае, из столбца 2 (название компании) — предпоследний столбец.

Ответ №1:

Я попробовал ваш код с набором данных, и он отлично работает для меня:

 from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
import numpy as np
import pandas as pd

X = pd.read_csv("Updated_Set.csv", sep=';' ) 
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])], remainder='passthrough')
X = np.array(ct.fit_transform(X))
  

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

1. Ах. Спасибо за ваши усилия. Возможно, у вас есть какие-либо идеи, почему у меня может возникнуть эта проблема?

2. Возможно, проблема не в этом фрагменте кода, а в моем предыдущем? Пожалуйста, примите эту ссылку на мой предыдущий фрагмент кода. Извините, что я придираюсь к этому, но мне действительно нужна помощь. drive.google.com/file/d/1QbOBjp6CFFfSC8za0BQsPHwJaC6JZoXt /…

3. В вашем коде «X_train» и «Y_train» не определены. Не могли бы вы добавить код, в котором вы его определяете? В настоящее время я не могу ее запустить.

4. Ой, извините за это. Пожалуйста, игнорируйте эти строки кода. Вот код без этого последнего блока кода. drive.google.com/file/d/1bkQRIQBTfJPPxeQ6MJFg-94c0jaCrRPQ /…

5. Кажется, я знаю, где я ошибся. Я ввел неправильный номер индекса. Кажется, это сработало, когда я ввел индекс 0. Большое вам спасибо за ваше время и усилия! Очень признателен.