#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. Большое вам спасибо за ваше время и усилия! Очень признателен.