2013-07-06 4 views
1

scikit에서 SVM을 학습하려고합니다. 나는이 예제를 따라 3D 피쳐 벡터로 조정하려고 시도했다. 나는 페이지 http://scikit-learn.org/stable/modules/svm.html 에서 예제를 시도해 보았다. 버그를 수정하는 동안 나는 다시 튜토리얼 설정에 와서이 발견 ValueError: X.shape[1] = 2 should be equal to 3, the number of features at training timeScikit - SVM 용 3D 피쳐 배열

여기에 잘못된 것입니다 :

X = [[0, 0,0], [1, 1,1],[2,2,2]] 
y = [0, 1,1] 
clf = svm.SVC() 
clf.fit(X, y) 

이 실패하면서

X = [[0, 0], [1, 1],[2,2]] 
y = [0, 1,1] 
clf = svm.SVC() 
clf.fit(X, y) 

작품을? 그것은 단지 하나의 추가 차원 ... 감사합니다, 엘의

답변

2

하여 후자의 코드를 실행하면 나를 위해 작동 :

>>> X = [[0,0,0], [1,1,1], [2,2,2]] 
>>> y = [0,1,1] 
>>> clf = svm.SVC() 
>>> clf.fit(X, y) 
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0, 
    kernel='rbf', max_iter=-1, probability=False, shrinking=True, tol=0.001, 
    verbose=False) 

그 오류 메시지가 당신이 SVM에 .predict()를 호출 할 때 실제로 발생해야 그것을 것 같다 오브젝트는 kernel="precomputed"입니다. 그럴까요?

+0

불행히도, 또는 적어도 나는 그런 것을 추가하고 있지 않습니다. 어떤 Scikit 버전을 사용하고 있습니까? Mac 용 macport 패키지가 여기에서 실행됩니다. py27-scikit-learn @ 0.13.1 (python, science) 당신이 생각하기에는 너무 오래 되었습니까? –

+0

0.13.1은 내가 실행중인 버전 (그리고 가장 최근의 버전)입니다. 파이썬 세션에서이 코드를 실행하는 출력을 복사 할 수 있습니까? – Dougal

+0

내 내기, 내가 오류를 발견했다. 우선 의자와 키보드 사이에 앉아있었습니다. 실제로 오류는. 예측에서였습니다. 예측 호출에서 차원 벡터를 조정하는 것을 잊었고 3D 훈련 된 SVM에 2D 벡터를 제공했습니다. 미안 해요.하지만 혼자 일할 때 일어나는 것 같아요. :피 –