2016-09-03 3 views
1

Я хотел бы обучить программу, чтобы дать dicts различные теги в зависимости от числовых значений, которые они содержат - с scikit. Моя проблема в том, что я только понимаю, как классифицировать текст (предложения) или просто числовые переменные (а не переменные, содержащие многословные числа).многоклассовая классификация с двойными значениями и scikit

Вот что я пытаюсь сделать:

# available classes: 
# hot, cold, wet, sticky 

first_sample = {} 
first_sample["temp"] = 30 
first_sample["airpressure"] = 104 
first_sample["airmoisture"] = 70 

second_sample = {} 
second_sample["temp"] = 2 
second_sample["airpressure"] = 100 
second_sample["airmoisture"] = 40 

# do this manually X times 
train(first_sample, ['sticky', 'hot']) 
train(second_sample, ['wet', 'cold']) 
train(...) 

# then do it on a bunch of data by programme 
classify(bunch_of_data) 
+0

Это будет пример (в терминах sci-kit) многоклассовой классификации или классификации с несколькими задачами. Эта [страница] (http://scikit-learn.org/stable/modules/multiclass.html) содержит больше информации. Если dict должен иметь ярлык (должен быть «горячим» или «холодным», должен быть «липким» или «влажным»), то его вероятная более многозадачная классификация. Если у него может быть присвоено определенное количество меток, это, вероятно, классификация с несколькими метками. Преобразование информации в dicts в кадр данных будет первым шагом в построении такого типа классификатора. –

ответ

0

Вы должны обучить двух классификаторов и подогнать их к данным в два раза. Предположим, что ваши данные (вы можете конвертировать dicts в dataframe с помощью Pandas):

| "temp" | "airpressure" | "airmoisture"| "target1" | "target2" | 
|:------:|:-------------:|:------------:|:---------:|:---------:| 
| 30 |  104  |  70  | 'sticky' | 'hot' | 
| 2 |  100  |  40  | 'wet' | 'cold' | 
| . |  .  |  .  |  . |  .  | 
| . |  .  |  .  |  . |  .  | 
| . |  .  |  .  |  . |  .  | 

Во-первых, вы подходите первый классификатор (clf1) для всех образцов (позволяет называть их X) и первый столбец из ваших целей target1 (назовем его y1)

clf1.fit(X,y1) 

, а затем второй классификатор (clf2) на X и втором столбце вашей цели target2 (или y2).

clf2.fit(X,y2) 
Смежные вопросы