2016-09-24 4 views
1

입니다. 데이터를 다운로드했습니다. SVC.coef_에서 다른 수의 기능이 있으며 샘플은

news = datasets.fetch_20newsgroups(subset='all', categories=['alt.atheism', 'sci.space']) 
vectorizer = TfidfVectorizer() 
X = vectorizer.fit_transform(newsgroups.data) 
y = news.target 
print(X.shape) 

X의 모양은 내가 모델을 훈련하고 coef_ 모양

있어 (1786, 28382)

다음이다

clf = svm.SVC(kernel='linear', random_state=241, C = 1.0000000000000001e-05) 
clf.fit(X, y) 
data = clf.coef_[0].data 
print(data.shape) 

기능의 숫자가 다른 이유는 모양이 (27189,)

입니까?

+1

왜 clf.coef_ [0] .data를 수행합니까? 귀하의 데이터가 아닌 ** 버퍼 **로 간주됩니다. print clf.coef_.shape – lejlot

+0

@lejlot 맞습니다. coef_의 모양은 (1, 28382)입니다. 그러나 clf.coef_.data의 모양도 (27189)입니다. 모든 데이터를 어떻게 얻을 수 있습니까? –

+1

coef_ **는 ** 귀하의 데이터입니다. 데이터 필드 만 남겨둔다 :-) _coef [0] [i] – lejlot

답변

1

모든 것이 짧아서 체중 매트릭스가 clf.coef_에 있습니다. 그리고 그것은 유효한 모양을 가지고 있습니다, 그것은 보통의 numpy 배열 (또는 데이터가 드문 경우 scipy 스파 스 배열)입니다. 당신은 그것에 필요한 모든 작업을 수행 할 수 있습니다. 색인을 붙이십시오. 시도한 것은 .data 필드는 내부의 배열을 저장하는 속성이며 다른 모양 일 수 있습니다 (중복 등을 무시할 수 있기 때문에). 하지만 요점은 당신이 목적을 위해 numpy 배열의 내부 속성을 사용하지 않아야한다는 것입니다. 그냥 읽는 것이 아니라 낮은 수준의 메소드에 노출됩니다.