2016-09-24 2 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の形状は(1786, 28382)

次である私は、モデルを訓練し、coef_形状

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配列のこの内部属性を使うべきではないということです。低レベルのメソッドで公開されているだけではなく、読み込み専用ではありません

関連する問題