2016-04-11 6 views
0

Ich habe diesen Datensatz, die ich brauche, um zu trainieren zu verwenden (fit) in meinen machine learning Algorithmus:Welches ist der beste Scikit-Learning-Algorithmus zum maschinellen Lernen für unterschiedliche Trainingsdaten?

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'} 
] 

ich eine Probe von Daten, die drei Datentypen enthalten:

  • body
  • mass
  • gender

Die Anzahl der Proben pro Datentyp ist zufällig (d.h., manchmal I 10 Proben von mass haben kann, und 1 von gender. Oder ich könnte 300 Proben von mass und 20 von body haben).

Wie auch immer, ich hätte gerne ein Training mit dieser Art von nicht konsistenten Daten.

Ist das möglich?

Was sollte der beste Scikit-Lern-Trainingsalgorithmus dafür sein?

  • Logistische Regression?
  • Naive Bayes?
  • k-Nächster Nachbar?
  • Klassifikations- und Regressionsbäume?
  • Unterstützung Vektor Maschinen?

Hier ist ein Beispielcode, aber ich kenne den nächsten Pfad nicht, um dies zu erreichen.

Bitte rate mir, welchen Schritt ich befolgen soll, oder vielleicht ein Tutorial, wo ich hier die Lösung dafür lernen und einfügen kann.

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') 

Vielen Dank.

+0

Was ist Ihr Ziel? Versuchen Sie, den Datentyp anhand der Features vorherzusagen? Oder versuchen Sie eine Variable vorherzusagen (z. B. dataype = "mass", fat)? – tttthomasssss

Antwort

0

Die logistische Regression wird angewendet, wenn Ihr Datensatz als lineares Diagramm angepasst werden kann. Da Ihr Datensatz mehrere Features enthält, können Sie mit KNN, Entscheidungsbäumen, Naiven Bayes fortfahren. KNN ist einfach, aber rechenintensiv. Entscheidungsbäume [CART] ist eine bessere Wahl, da der Algorithmus die Daten im Gegensatz zu KNN versteht. Wenn Sie mit den Konzepten von SVM vertraut sind, können Sie es ausprobieren, aber es erfordert ein gründliches Verständnis.

+0

Sie sagen, dass es nicht möglich ist, Logistische Regression zu verwenden, weil es mehrere Features gibt? Warum sollte er ein gründliches Verständnis von SVM brauchen, um eine Bibliothek wie "scikit-learn" zu benutzen? – tttthomasssss

+0

Die Anwendung der Regression hängt nicht von der Anzahl der Features ab. – s111

+1

Es macht keinen Sinn, SVM mit Scikit-learn anzuwenden, wenn Sie nicht wissen, wie der Algorithmus funktioniert. – s111

Verwandte Themen