Feature-Auswahl mit scikit-learn
Ich bin neue in machine learning. Bereite ich meine Daten für die Einstufung verwenden Scikit Lernen SVM. Um die Auswahl der besten Funktionen, die ich haben verwendet die folgende Methode:
SelectKBest(chi2, k=10).fit_transform(A1, A2)
Da mein Datensatz besteht aus den negativen Werten, bekomme ich die folgende Fehlermeldung:
ValueError Traceback (most recent call last)
/media/5804B87404B856AA/TFM_UC3M/test2_v.py in <module>()
----> 1
2
3
4
5
/usr/local/lib/python2.6/dist-packages/sklearn/base.pyc in fit_transform(self, X, y, **fit_params)
427 else:
428 # fit method of arity 2 (supervised transformation)
--> 429 return self.fit(X, y, **fit_params).transform(X)
430
431
/usr/local/lib/python2.6/dist-packages/sklearn/feature_selection/univariate_selection.pyc in fit(self, X, y)
300 self._check_params(X, y)
301
--> 302 self.scores_, self.pvalues_ = self.score_func(X, y)
303 self.scores_ = np.asarray(self.scores_)
304 self.pvalues_ = np.asarray(self.pvalues_)
/usr/local/lib/python2.6/dist- packages/sklearn/feature_selection/univariate_selection.pyc in chi2(X, y)
190 X = atleast2d_or_csr(X)
191 if np.any((X.data if issparse(X) else X) < 0):
--> 192 raise ValueError("Input X must be non-negative.")
193
194 Y = LabelBinarizer().fit_transform(y)
ValueError: Input X must be non-negative.
Kann mir jemand sagen wie ich Verwandle meine Daten ?
Sie könne die Normalisierung der Werte zwischen 0 und 1 oder nehmen absolute Werte vielleicht
Wenn Ihre Daten nicht nicht-negativ, vielleicht chi2 ist nicht eine gute Methode. Sie können f_score. Was ist die Natur mit Ihren Daten?
Danke EdChum und Andreas. Meine Daten bestehen aus min, max, Mittelwert, median und FFT der accelerometer-signal
Wenn Ihre Daten nicht nicht-negativ, vielleicht chi2 ist nicht eine gute Methode. Sie können f_score. Was ist die Natur mit Ihren Daten?
Danke EdChum und Andreas. Meine Daten bestehen aus min, max, Mittelwert, median und FFT der accelerometer-signal
InformationsquelleAutor sara | 2014-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Fehlermeldung
Input X must be non-negative
sagt alles: Der Pearson-chi-Quadrat-test (goodness-of-fit) gilt nicht für negative Werte. Es ist logisch, denn der chi-Quadrat-test nimmt Frequenzen Verteilung und Häufigkeit kann keine negative Zahl sein. Folglichsklearn.feature_selection.chi2
behauptet der Eingang ist nicht-negativ.Sagen Sie, dass Sie Ihre Funktionen "min, max, Mittelwert, median und FFT der accelerometer-signal". In vielen Fällen kann es ziemlich sicher zu einfach shift jedes feature, um es positiver, oder sogar normalisieren zu
[0, 1]
Intervall vorgeschlagen von EdChum.Wenn data transformation ist aus irgendeinem Grund nicht möglich sein (z.B. ein negativer Wert ist ein wichtiger Faktor), sollten Sie wählen eine andere Statistik zu-score features:
sklearn.feature_selection.f_classif
berechnet ANOVA f-Wertsklearn.feature_selection.mutual_info_classif
berechnet die gegenseitige informationDa der ganze Punkt dieses Verfahrens ist die Vorbereitung der features für eine andere Methode, es ist keine große Sache zu Holen jedermann, das Endergebnis in der Regel die gleichen oder sehr nahe.
InformationsquelleAutor Maxim