2016-04-11 4 views
0

У меня есть этот набор данных, которые мне нужно использовать для тренировки (fit) в мой machine learning алгоритм:Какой лучший алгоритм обучения машинам для изучения scikit-learn для разных размеров данных обучения?

data= [ 
    {'timestamp': '1406025645732', 'datatype': 'mass', 'fat': '0.348', 'lean': '0.06'}, 

    {'timestamp': '1406025645776', 'datatype': 'body', 'value': 122.0, 'location': 'nose'}, 

    {'timestamp': '1406025645793', 'datatype': 'mass', 'fat': '0.32', 'lean': '0.04'}, 
    {'timestamp': '1406025645810', 'datatype': 'mass', 'fat': '0.308', 'lean': '0.1'}, 

    {'timestamp': '1406027645916', 'datatype': 'body', 'value': 6.0, 'location': 'eye'}, 

    {'timestamp': '1406025645949', 'datatype': 'mass', 'fat': '0.312', 'lean': '0.052'}, 
    {'timestamp': '1406025645966', 'datatype': 'mass', 'fat': '0.32', 'lean': '0.032'}, 
    {'timestamp': '1406025645983', 'datatype': 'mass', 'fat': '0.28', 'lean': '0.06'}, 

    {'timestamp': '1406025646000', 'datatype': 'gender', 'value': '0.3096', 'size': '7.0'} 
] 

У меня есть образец данных, который содержит 3 типа данных:

  • body
  • mass
  • gender

Число выборок на типы данных является случайным (т.е. , иногда может иметь 10 образцов mass и 1 из gender. Или у меня могло бы быть 300 образцов mass и 20 из body).

В любом случае, я хотел бы иметь тренировочный набор с такими несогласованными данными.

Возможно ли это?

Какой должен быть лучший алгоритм обучения scikit-learn для этого?

  • Логистическая регрессия?
  • Наивный Байес?
  • k-Nearest Neighbor?
  • Классификация и деревья регрессии?
  • Поддержка векторных машин?

Вот пример кода, но я не знаю следующий путь для достижения этого.

Просьба сообщить мне, какой шаг я должен выполнить, или, может быть, какой-то учебник, где я могу узнать и вставить здесь решение для этого.

from sklearn import tree 
from sklearn.externals import joblib 
import pandas 
import numpy 
import pylab 

# this is one traning set for Abel 
features = [ 
    {'timestamp': '1406025645732', 'datatype': 'mass', 'fat': '0.348', 'lean': '0.06'}, 

    {'timestamp': '1406025645776', 'datatype': 'body', 'value': 122.0, 'location': 'nose'}, 

    {'timestamp': '1406025645793', 'datatype': 'mass', 'fat': '0.32', 'lean': '0.04'}, 
    {'timestamp': '1406025645810', 'datatype': 'mass', 'fat': '0.308', 'lean': '0.1'}, 

    {'timestamp': '1406027645916', 'datatype': 'body', 'value': 6.0, 'location': 'eye'}, 

    {'timestamp': '1406025645949', 'datatype': 'mass', 'fat': '0.312', 'lean': '0.052'}, 
    {'timestamp': '1406025645966', 'datatype': 'mass', 'fat': '0.32', 'lean': '0.032'}, 
    {'timestamp': '1406025645983', 'datatype': 'mass', 'fat': '0.28', 'lean': '0.06'}, 

    {'timestamp': '1406025646000', 'datatype': 'gender', 'value': '0.3096', 'size': '7.0'} 
] 

# 0 for Abel, 1 for Jasminne 
labels = [0] 

# Here I train the model with the above arrays 
clf = tree.DecisionTreeClassifier() 
clf = clf.fit(features, labels) # crashes here due to the use of a dict, instead of an array 
joblib.dump(clf, 'model.pkl') 

Большое спасибо.

+0

Какая ваша цель? вы пытаетесь предсказать тип данных из функций? или заданный тип данных, пытаетесь ли вы предсказать переменную (например, учитывая, что 'dataype =" mass "', предсказывать 'fat')? – tttthomasssss

ответ

0

Логистическая регрессия применяется, когда ваш набор данных может быть положен как линейный граф. Поскольку ваш набор данных содержит несколько функций, вы можете продолжить работу с KNN, деревьями принятия решений, Naive Bayes. KNN прост, но является исчерпывающим. Решение Деревья [CART] - лучший выбор, поскольку алгоритм будет понимать данные в отличие от KNN. Если вы знакомы с концепциями SVM, вы можете попробовать, но это требует глубокого понимания.

+0

вы говорите, что невозможно использовать логистическую регрессию, потому что есть несколько функций? зачем ему нужно глубокое понимание SVM, чтобы использовать библиотеку, такую ​​как 'scikit-learn'? – tttthomasssss

+0

Применение регрессии не зависит от количества функций. – s111

+1

Нет смысла применять SVM, используя Scikit-learn, когда вы не знаете, как работает алгоритм. – s111

Смежные вопросы