Ваш язык не разъясняет должным образом, что на самом деле у вас есть то, что вы хотите?
Как я понимаю из вашего вопроса, что вы хотите?
В модели машинного обучения более 90% модели, которая работает только на числовые данные, если ваш набор данных содержит категориальные значения, то вам необходимо преобразовать их в числовой формат
. Существует несколько методов преобразования категориальных-> числовых c формат
- LabelEncoder
- Один горячий кодер (вы также можете использовать pd.get_dummies ())
- Taregt Encoder
- порядковый кодер
A cc для вашего кода :
Содержит 3 категориальных цвета -> преобразовать их в OHE:
При горячем кодировании ¶
Наш второй метод - это кодирование каждой категории в одно горячее кодирование (OHE) вектор (или фиктивные переменные). OHE - это метод представления, который берет каждое значение категории и превращает его в двоичный вектор размера | i | (количество значений в категории i), где все столбцы равны нулю, кроме столбца категории. Вот небольшой пример:
Теперь перейдем к вашему коду
from sklearn.preprocessing import OneHotEncoder
one=OneHotEncoder()
X=one.fit_transform(X) # it will return scipy.sparse.csr.csr_matrix ->>> numpy array for feeding into model
Вместо использования один горячий кодер использует get_dummies:
new_data=pd.get_dummies(["Cat V 1"],prefix='Cat V 1',drop_first=True)
df=pd.concat([df,new_data],axis=1)
new_data=pd.get_dummies(["Cat V 2"],prefix='Cat V 2',drop_first=True)
df=pd.concat([df,new_data],axis=1)
new_data=pd.get_dummies(["Cat V 3"],prefix='Cat V 3',drop_first=True)
df=pd.concat([df,new_data],axis=1)
Теперь вы можете развернуть свою модель