Fonction de sélection à l'aide de scikit-learn
Je suis nouveau dans l'apprentissage de la machine. Je suis en train de préparer mes données à des fins de classification à l'aide de Scikit Learn SVM. Afin de sélectionner les meilleurs caractéristiques que j'ai utilisé la méthode suivante:
SelectKBest(chi2, k=10).fit_transform(A1, A2)
Depuis mon dataset consistent en des valeurs négatives, j'obtiens l'erreur suivante:
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.
Quelqu'un peut me dire comment je peux transformer mes données ?
Vous pourrait normaliser les valeurs entre 0 et 1, ou prendre des valeurs absolues, peut-être
Si vos données n'est pas non négatif, peut-être chi2 n'est pas une bonne méthode. Vous pouvez utiliser f_score. Quelle est la nature de vos données?
Merci EdChum et Andreas. Mes données consistent en de min, max, moyenne, médiane et de la FFT du signal de l'accéléromètre
Si vos données n'est pas non négatif, peut-être chi2 n'est pas une bonne méthode. Vous pouvez utiliser f_score. Quelle est la nature de vos données?
Merci EdChum et Andreas. Mes données consistent en de min, max, moyenne, médiane et de la FFT du signal de l'accéléromètre
OriginalL'auteur sara | 2014-09-11
Vous devez vous connecter pour publier un commentaire.
Le message d'erreur
Input X must be non-negative
dit tout: Pearson, le test de chi carré (la qualité de l'ajustement) ne s'applique pas aux valeurs négatives. C'est logique parce que le test de chi carré suppose fréquences de la distribution et de la fréquence ne peut pas être un nombre négatif. Par conséquent,sklearn.feature_selection.chi2
affirme l'entrée est non-négative.Vous dites que vos traits sont "min, max, moyenne, médiane et de la FFT du signal de l'accéléromètre". Dans de nombreux cas, il peut être tout à fait sûr de il suffit de passer chaque fonctionnalité pour en faire du positif, ou même de les normaliser à
[0, 1]
intervalle tel que suggéré par EdChum.Si la transformation de données est pour une raison pas possible (par exemple, une valeur négative est un facteur important de), vous devez en choisir une autre statistique pour marquer vos caractéristiques:
sklearn.feature_selection.f_classif
calcule ANOVA f-valeursklearn.feature_selection.mutual_info_classif
de calcul de l'information mutuelleDepuis le point de l'ensemble de cette procédure est de préparer les fonctionnalités pour une autre méthode, c'est pas un gros problème pour chercher quelqu'un, le résultat final généralement la même ou très proche.
OriginalL'auteur Maxim