toarray()で出力される要素を、省略せずに保管したいです。
python
1from sklearn.feature_extraction.text import TfidfVectorizer 2corpus = ['I go to the park .', 3 'I will go shopping .'] 4vectorizer = TfidfVectorizer() 5vectorizer.fit(corpus) 6X = vectorizer.transform(corpus) 7print('type ->',type(X)) 8print('shape ->',X.shape) 9print(X) 10print(X.toarray()) 11''' 12出力: 13type -> <class 'scipy.sparse.csr.csr_matrix'> 14shape -> (2, 6) 15 (0, 4) 0.0534046329052269 16 (0, 3) 0.0534046329052269 17 (0, 1) 0.0534046329052269 18 (0, 0) 0.037997836159100784 19 (1, 5) 0.06316672017376245 20 (1, 2) 0.06316672017376245 21 (1, 0) 0.04494364165239821 22[[0.037997836 0.053404633 0. 0.053404633 0.053404633 0. ] 23 [0.044943642 0. 0.06316672 0. 0. 0.06316672 ]]
一番下のマトリックスを期待しているのですが、実際には
python
1[[0. 0. 0 0. 0. 0.] 2 [0. 0. 0. 0. 0. 0.]]
となってしまいます。
toarray()はnumpyではないので、np.set_printoptions()を試してみたのですが、関係ありませんでした。どうすれば良いでしょうか。。
どなたか、ご教示いただけるとありがたいです。よろしくお願い致します。
> np.set_printoptions()を試してみたのですが、関係ありませんでした。
https://lib-arts.hatenablog.com/entry/nlp_tutorial2
の「3. tf-idfの実装」の「・tf-idfの計算」に、
表示を綺麗にするために、np.set_printoptions(precision=3)を用いて桁数を落としました
と書かれてます
「print(X.toarray())」のすぐ上に「np.set_printoptions(precision=3)」を追加して実行したら、表示される桁数が変わりませんでしょうか?
> toarray()はnumpyではない
print(type(X.toarray()))
を実行したら、何て表示されますでしょうか?
質問ありがとうございます<(_ _)>
調べてみたら、numpy.ndarrayとなっていました。。
importの部分が色薄くなっていたので、埋め込みのメソッドなのかと思っていました。
ですが、仰っていただいたようにやってみても結果は変わりませんでした。。
Google Colabで、質問のコードを全くそのまま実行したら、下記のように表示されました
type -> <class 'scipy.sparse.csr.csr_matrix'>
shape -> (2, 6)
(0, 4) 0.534046329052269
(0, 3) 0.534046329052269
(0, 1) 0.534046329052269
(0, 0) 0.37997836159100784
(1, 5) 0.6316672017376245
(1, 2) 0.6316672017376245
(1, 0) 0.4494364165239821
[[0.37997836 0.53404633 0. 0.53404633 0.53404633 0. ]
[0.44943642 0. 0.6316672 0. 0. 0.6316672 ]]
表示される桁数の問題以前に、質問に記載の「出力:」の数値と1桁違います
質問者さんも、Google Colabでも実行して、確認してみてください
なお、Google Colabに今日時点で入ってるバージョンは、「!pip list」で確認したら、
scikit-learn 1.0.2
でした
質問者さんがお使いのバージョンが、もし上記よりもかなり古いものなら、バージョンアップしてみたらいいかもしれません

回答2件
あなたの回答
tips
プレビュー