Ich versuche, einige grundlegende Machine Learning-Algorithmen auf numerische Daten (floats) zu laufen und habe Probleme, die Daten einzulesen. Ich benutze Python 2.7, Sklearn, Pandas und arbeite durch Jupyter (Ipython Notebook). Als ersten Durchlauf habe ich versucht, eine einfache zufällige Gesamtstruktursuche zu verwenden, aber wenn ich die Funktionen verwende, bekomme ich immer ValueError.Ich kann nicht einen Weg finden, einen Wert Fehler mit Daten aus Datenrahmen in Sklearn Pandas zu umgehen
Die Daten wurden in einen Datenrahmen gelesen
df = pd.read_table("p12.dat", delim_whitespace=True)
df.dtypes zeigt, dass alle Werte von Interesse float64 sind.
einen grundlegenden Ausdruck verwenden:
def classification_model(model, data, predictors, outcome):
model.fit(data[predictors],data[outcome])
predictions = model.predict(data[predictors])
accuracy = metrics.accuracy_score(predictions,data[outcome])
print "Accuracy : %s" % "{0:.3%}".format(accuracy)
print "Cross-Validation Score : %s" % "{0:.3%}".format(np.mean(error))
model.fit(data[predictors],data[outcome])
und dann die Variablen Einstellung und Ausführung:
outcome_var = 'ki'
predictor_var = ['Etot','TSs','Eww-nbr']
model = RandomForestClassifier(n_estimators=100)
classification_model(model, df,predictor_var,outcome_var)
Der Fehler ist:
ValueError Traceback (most recent call last)
<ipython-input-9-7dd611cce611> in <module>()
----> 1 classification_model(model, df,predictor_var,outcome_var)
<ipython-input-8-956e572db2f4> in classification_model(model, data, predictors, outcome)
1 def classification_model(model, data, predictors, outcome):
2 #Fit the model:
----> 3 model.fit(data[predictors],data[outcome].values)
4
5 #Make predictions on training set:
/Users/jonathangough/anaconda/lib/python2.7/site-packages/sklearn/ensemble/forest.pyc in fit(self, X, y, sample_weight)
233 self.n_outputs_ = y.shape[1]
234
--> 235 y, expanded_class_weight = self._validate_y_class_weight(y)
236
237 if getattr(y, "dtype", None) != DOUBLE or not y.flags.contiguous:
/Users/jonathangough/anaconda/lib/python2.7/site-packages/sklearn/ensemble/forest.pyc in _validate_y_class_weight(self, y)
419
420 def _validate_y_class_weight(self, y):
--> 421 check_classification_targets(y)
422
423 y = np.copy(y)
/Users/jonathangough/anaconda/lib/python2.7/site-packages/sklearn/utils/multiclass.pyc in check_classification_targets(y)
171 if y_type not in ['binary', 'multiclass', 'multiclass-multioutput',
172 'multilabel-indicator', 'multilabel-sequences']:
--> 173 raise ValueError("Unknown label type: %r" % y)
174
175
ValueError: Unknown label type: array([[ 2.72000000e+00],
[ 4.60000000e+00],
[ 6.70000000e+00],
[ 2.30000000e+00],
[ 1.70000000e+00],
[ 2.20000000e+00],
[ 3.60000000e+00],
[ 9.10000000e+00],
ich gesucht und gegoogelt, aber ich kann nicht herausfinden, was zu tun ist. Mein Verständnis war, dass man Gleitkommazahlen in einem zufälligen Waldalgorithmus verwenden könnte (also glaubte ich nicht, dass das der Fehler war).
Jeder Einblick wäre willkommen.
Sie können versuchen, die numpy Arrays zu verwenden, die Pandas als Eingabe für das Sklearn-Modell zugrunde liegen. Ich sehe in Ihrem Code nicht. Werte für Daten [Prädiktoren], Daten [Ergebnis], während in Ihrem Stacktrace haben Sie Daten [Ergebnis] .Values. Stellen Sie sicher, dass alle Eingaben '.values' enthalten. – DataSwede