実現したいこと
sklearnを使用したプログラムを動かしたいです。
前提
・sklearn は「pip3 install sklearn」でインストール済みです。
PS D:\selfpy> pip3 install sklearn Requirement already satisfied: sklearn in c:\users\81904\appdata\local\programs\python\python38-32\lib\site-packages
発生している問題・エラーメッセージ
Traceback (most recent call last): File "d:/selfpy/ch02/count_method_big.py", line 19, in <module> from sklearn.utils.extmath import randomized_svd ModuleNotFoundError: No module named 'sklearn' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "d:/selfpy/ch02/count_method_big.py", line 22, in <module> U,S,V=np.linalg.svd(W) File "<__array_function__ internals>", line 200, in svd File "C:\Users\81904\AppData\Local\Programs\Python\Python38-32\lib\site-packages\numpy\linalg\linalg.py", line 1642, in svd u, s, vh = gufunc(a, signature=signature, extobj=extobj) numpy.core._exceptions.MemoryError: Unable to allocate 763. MiB for an array with shape (10000, 10000) and data type float64 PS D:\selfpy>
該当のソースコード
Python3
1import sys 2sys.path.append("./") 3import numpy as np 4from common.util import most_similar, create_co_matrix, ppmi 5from dataset import ptb 6 7window_size=2 8wordvec_size=100 9 10corpus, word_to_id, id_to_word =ptb.load_data("train") 11vocab_size=len(word_to_id) 12print("counting co-occurrence...") 13C=create_co_matrix(corpus, vocab_size, window_size) 14print("calculating PPMI...") 15W=ppmi(C,verbose=True) 16 17print("calculating SVD...") 18try: 19 from sklearn.utils.extmath import randomized_svd 20 U,S,V=randomized_svd(W,n_components=wordvec_size,n_iter=5,random_state=None) 21except ImportError: 22 U,S,V=np.linalg.svd(W) 23 24word_vecs=U[:, :wordvec_size] 25 26querys=["you", "year", "car", "toyota"] 27for query in querys: 28 most_similar(query, word_to_id, id_to_word, word_vecs, top=5) 29
試したこと
- すでに、リストで「sklearn」があることは確認。
補足情報(FW/ツールのバージョンなど)
- 『ゼロから作る Deep Learning 2』のPTBデータセットのとこです。
pythonで
> ModuleNotFoundError: No module named 'sklearn'
となる状態で、下記のpythonコードを実行して、使ってるpythonの絶対パスを調べてください
import sys
print(sys.executable)
上記で調べた絶対パスが、たとえば
C:\aaa\bbb\python.exe
だとしたら、コマンドプロンプトで(pythonが起動してない状態で)下記を実行したら、インポートできるようになると思います
(実行する際は、調べた実際のpythonの絶対パスに置き換えてください)
C:\aaa\bbb\python.exe -m pip install scikit-learn
ご返信ありがとうございます。
実行したところ、以下のようになりました。
Collecting scikit-learn
Using cached scikit-learn-1.2.2.tar.gz (7.3 MB)
Installing build dependencies ... \
ここでしばらく固まってしまうのですが、このあとは「done」などを進める感じなのでしょうか...
> Using cached scikit-learn-1.2.2.tar.gz (7.3 MB)
wheelではなくソースからインストールしようとしてますね
pythonで下記を実行した結果を教えてください
import platform
print(platform.python_version())
print(platform.platform())
> Requirement already satisfied: sklearn in c:\users\81904\appdata\local\programs\python\python38-32\lib\site-packages
パス中に「python38-32」とあることから、質問者さんが使ってるのは、おそらく「32bit版のpython 3.8」だと思います
scikit-learn 1.1.2では「32bit版のpython 3.8」用のwheel(*.whl)が用意されてます
https://pypi.org/project/scikit-learn/1.1.2/#files
が、scikit-learn 1.1.3では用意されてません
https://pypi.org/project/scikit-learn/1.1.3/#files
し、それよりも新しいscikit-learn-1.2.2でも用意されてません
https://pypi.org/project/scikit-learn/1.2.2/#files
ので、
> Using cached scikit-learn-1.2.2.tar.gz (7.3 MB)
と、wheelではなくソースからインストールしようとして、
> ここでしばらく固まってしまう
となってるのだと思います
C:\aaa\bbb\python.exe -m pip install scikit-learn==1.1.2
のように、「32bit版のpython 3.8」用のwheelが用意されてるバージョンを指定してインストールしたら、すんなりとインストールできるのではないですかね
あるいは、もし、32bit版のpythonを使う理由が特に無いのなら、64bit版のpythonを使えばいいと思います
64にしたらすんなりと受け入れてくれました!
ありがとうございます。また、お願いいたします。

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