Как использовать OneHotEncoding в scikit для кодирования категориальных данных в сочетании с DecisionTreeClassifier?

Прямо сейчас у меня есть следующий код, который получает некоторые функции и данные меток из CSV-файла и использует их для создания модели DecisionTreeClassifier и ее соответствия.

import csv
from sklearn import tree
from sklearn.externals import joblib

mycsv = csv.reader(open('postsBase2.csv'))

features = []
labels = []

for row in mycsv:
    features.append([row[2], row[3], row[6]])
    labels.append(row[8])


clf = tree.DecisionTreeClassifier()
clf = clf.fit(features, labels)

На самом деле у меня есть несколько других полей в CSV, которые я хотел бы загрузить, которые являются категориальными данными. Они находятся в индексах строк 7 и 8. Категориальные данные в индексе строки 7 могут быть одной из 4 категорий, а категориальные данные в индексе строки 8 могут быть одной из 5 категорий.

Я хочу добавить их к своим функциям, а затем каким-то образом передать их в класс OneHotEncoding, чтобы превратить их в категориальные данные, которыми может быть оснащена модель: Код обновления с некоторым псевдокодом для того, что я хочу сделать, приведен ниже:

import csv
from sklearn import tree
from sklearn.externals import joblib

mycsv = csv.reader(open('postsBase2.csv'))

features = []
labels = []
for row in mycsv:
    features.append([row[2], row[3], row[6], row[7], row[8]])
    labels.append(row[8])


//Here I now want to process the features from row index 7 and 8 via OneHotEncoding somehow to make them acceptable for the DecisionTreeClassifier

clf = tree.DecisionTreeClassifier()
clf = clf.fit(features, labels)

Как я могу это сделать?


person Mark Keane    schedule 13.04.2017    source источник
comment
Для этого следует использовать pandas.get_dummies(). . Это проще, чем использовать scikit. В scikit вы должны сначала преобразовать категориальные функции в целые числа, а затем вы можете использовать на нем горячий кодировщик, иначе вам нужно использовать DictVectorizer (но для этого требуется ввод формы dict)   -  person Vivek Kumar    schedule 13.04.2017
comment
Возможный дубликат scikit-learn: одно горячее кодирование строковых категориальных функций   -  person Vivek Kumar    schedule 13.04.2017
comment
Кроме того, если вы настаиваете на использовании scikit, см. обходной путь здесь: github.com/ scikit-learn/scikit-learn/issues/7493   -  person Vivek Kumar    schedule 13.04.2017