2014-09-11 2 views
11

저는 기계 학습을 처음 사용했습니다. Scikit Learn SVM을 사용하여 분류 데이터를 준비 중입니다. 최고의 기능을 선택하기 위해 나는 다음과 같은 방법을 사용했다 : 내 데이터 세트가 음의 값으로 구성되어 있기 때문에, 나는 다음과 같은 오류 얻을scikit-learn을 사용한 기능 선택

SelectKBest(chi2, k=10).fit_transform(A1, A2) 

:

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. 

누군가가 말해 줄래을 어떻게 할 수 내 데이터를 변환합니까?

미리 감사드립니다.

+1

0에서 1 사이의 값으로 정규화하거나 아마도 절대 값을 취할 수 있습니다. – EdChum

+3

데이터가 음수가 아닌 경우 chi2는 좋은 방법이 아닙니다. f_score를 사용할 수 있습니다. 데이터의 특성은 무엇입니까? –

+0

EdChum 및 Andreas에 감사드립니다. 내 데이터는 가속도계 신호의 최소, 최대, 평균, 중앙값 및 FFT로 구성됩니다. – sara

답변

3

오류 메시지 Input X must be non-negative에 모두 표시됩니다. 음수 값에는 Pearson's chi square test (goodness of fit)이 적용되지 않습니다. 카이 제곱 검정은 주파수 분포를 가정하고 주파수는 음수가 될 수 없기 때문에 논리적입니다. 결과적으로 sklearn.feature_selection.chi2은 입력이 음수가 아니라고 주장합니다.

귀하의 기능은 "가속도계 신호의 최소, 최대, 평균, 중앙값 및 FFT"입니다. 대부분의 경우, 각 기능을 모두 양수로 변경하거나 EdChum에서 제안한대로 [0, 1] 간격으로 표준화하기 만하면됩니다. 데이터 변환 (예 : 음의 값은 중요한 요소이다) 수없는 어떤 이유로 경우

, 당신은 당신의 기능 점수 다른 통계를 선택해야합니다 :

이 절차의 요점은 다른 방법의 기능을 준비하는 것이므로 아무도 선택하지 않는 것이 일반적이므로 최종 결과는 대개 동일하거나 동일합니다 가까이에.