2017-11-16 2 views
-2

데이터에 LinearSVC를 사용하려고합니다! 아래에 내 코드 : 다음과 같은 오류에Scikitlearn LinearSVC 잘못된 입력 모양

결과 : 나는 y_test 및 y_train로 분할하기 전에 내 y 값에 하나의 뜨거운 인코딩을 사용하고, 이것이 문제가 될 생각했습니다

ValueError: bad input shape (2190, 9) 

. 비슷한 수정 (sklearn (Bad Input Shape) ValueError)을 구현했지만 여전히 시도하고 다시 모양을 만들 때 오류가 발생했습니다.

핫 인코딩 한 후 9 개의 클래스가있는 대상 변수 (y)가 있고 총 2190 개의 샘플이 실행 중입니다. SVM에 맞추기 위해이 9 개의 클래스를 1 클래스로 줄여야 할 것 같습니다.

의견을 보내 주시면 대단히 감사하겠습니다.

+0

Google은 사용자의 데이터가 없으며이를 실행할 수 없으며이 스 니펫의 모든 모양을 추론 할 수 없습니다. 하지만이 잘못된 입력 모양이 y_train에 연결되어 있다면이 문서가 유효하지 않은지 확인하십시오! 응답을위한 – sascha

+0

감사합니다! 내 게시물을 편집하여 더 명확하게하려고 시도했습니다. – Ben

+0

모양이''(2,3)''''[[0,0,1], [1,0,0]]처럼 대상 벡터를 비교합니다. ''(2,)'''''[2,0]'''과 같은 형태의''''''로''' 이것은 문서를 읽는 것과 함께 문제를 해결해야합니다! – sascha

답변

0

어레이를 다시 형성해야합니다.

import numpy as np 
from sklearn import svm 

# 100 samples and 10 features 
x = np.random.rand(100, 10) 

#5 classes 
y = [1,2,3,4,5] * 20 

x = np.asarray(x) 
y = np.asarray(y) 

print(x.shape) 
print(y.shape) 

clf2 = svm.LinearSVC() 
clf2.fit(x, y) 

결과 :

(100, 10) 

(100,) 

LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True, 
    intercept_scaling=1, loss='squared_hinge', max_iter=1000, 
    multi_class='ovr', penalty='l2', random_state=None, tol=0.0001, 
    verbose=0) 
0

LinearSVC y가 2-D의 값을 수용 해달라고 여기서 랜덤 데이터 5 개 클래스를 포함 타겟으로서 변수 변수를 사용한 예이다. documented으로 :

매개 변수 :

y : array-like, shape = [n_samples] 

    Target vector relative to X 

그래서 당신은 하나의 뜨거운 인코딩 매트릭스로 변환 할 필요가 없습니다. 문자열을 사용하더라도 그대로 제공하십시오. 내부적으로 올바르게 처리됩니다.

관련 문제