🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

4631閲覧

ModuleNotFoundError: No module named 'sklearn.svm._classes' ってエラーが消えません。

yo-Beginner03

総合スコア0

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/01/29 06:58

編集2021/01/30 05:19

実現したいこと

ハガキの郵便番号の数字を手書き文字判定したい

試したこと(コード)

  • sklearnのダウングレード(0.24.0, 0.23.0)

→0.23.0では AttributeErrorあり

  • sklearnのアップグレード

python

1from detect_zip import * 2import matplotlib.pyplot as plt 3 4from sklearn.externals import joblib 5 6# 学習済み手書き数字のデータを読み込む 7clf = joblib.load("digits.pkl") 8 9# 画像から領域を読み込む 10cnts, img = detect_zipno("hagaki1.png") 11 12# 読み込んだデータをプロット 13for i, pt in enumerate(cnts): 14 x, y, w, h = pt 15 # 枠線の輪郭分だけ小さくする 16 x += 8 17 y += 8 18 w -= 16 19 h -= 16 20 # 画像データを取り出す 21 im2 = img[y:y+h, x:x+w] 22 # データを学習済みデータに合わせる 23 im2gray = cv2.cvtColor(im2, cv2.COLOR_BGR2GRAY) # グレイスケールに 24 im2gray = cv2.resize(im2gray, (8, 8)) # リサイズ 25 im2gray = 15 - im2gray // 16 # 白黒反転 26 im2gray = im2gray.reshape((-1, 64)) # 一次元に変換 27 # データ予測する 28 res = clf.predict(im2gray) 29 # 画面に出力 30 plt.subplot(1, 7, i + 1) 31   plt.imshow(im2) 32 plt.axis("off") 33 plt.title(str(res)) 34 35plt.show()

##エラー内容


ModuleNotFoundError Traceback (most recent call last)
<ipython-input-2-f74d3ecb9332> in <module>()
5
6 # 学習済み手書き数字のデータを読み込む
----> 7 clf = joblib.load("digits.pkl")
8
9 # 画像から領域を読み込む

~/.pyenv/versions/anaconda3-5.0.0/lib/python3.6/site-packages/sklearn/externals/joblib/numpy_pickle.py in load(filename, mmap_mode)
576 return load_compatibility(fobj)
577
--> 578 obj = _unpickle(fobj, filename, mmap_mode)
579
580 return obj

~/.pyenv/versions/anaconda3-5.0.0/lib/python3.6/site-packages/sklearn/externals/joblib/numpy_pickle.py in _unpickle(fobj, filename, mmap_mode)
506 obj = None
507 try:
--> 508 obj = unpickler.load()
509 if unpickler.compat_mode:
510 warnings.warn("The file '%s' has been generated with a "

~/.pyenv/versions/anaconda3-5.0.0/lib/python3.6/pickle.py in load(self)
1048 raise EOFError
1049 assert isinstance(key, bytes_types)
-> 1050 dispatchkey[0]
1051 except _Stop as stopinst:
1052 return stopinst.value

~/.pyenv/versions/anaconda3-5.0.0/lib/python3.6/pickle.py in load_global(self)
1336 module = self.readline()[:-1].decode("utf-8")
1337 name = self.readline()[:-1].decode("utf-8")
-> 1338 klass = self.find_class(module, name)
1339 self.append(klass)
1340 dispatch[GLOBAL[0]] = load_global

~/.pyenv/versions/anaconda3-5.0.0/lib/python3.6/pickle.py in find_class(self, module, name)
1386 elif module in _compat_pickle.IMPORT_MAPPING:
1387 module = _compat_pickle.IMPORT_MAPPING[module]
-> 1388 import(module, level=0)
1389 if self.proto >= 4:
1390 return _getattribute(sys.modules[module], name)[0]

ModuleNotFoundError: No module named 'sklearn.svm._classes'

環境

pythonバージョン:python3.9.1
PC:Mac(macOS Big sur 11.1)
参考書籍:「pythonによるAI・機械学習・深層学習アプリの作り方 クジラ飛行机
Annaconda3-5.0
Jupyter notebook

% pip freeze
absl-py==0.11.0
astor==0.8.1
astroid==2.4.2
cycler==0.10.0
decorator==4.4.2
gast==0.4.0
grpcio==1.35.0
h5py==3.1.0
imageio==2.9.0
isort==5.6.4
joblib==1.0.0
Keras-Applications==1.0.8
Keras-Preprocessing==1.1.2
kiwisolver==1.3.1
lazy-object-proxy==1.4.3
Markdown==3.3.3
matplotlib==3.3.3
mccabe==0.6.1
mecab-python3==1.0.3
networkx==2.5
numpy==1.19.5
opencv-python==4.5.1.48
pandas==1.2.0
Pillow==8.1.0
protobuf==3.14.0
pylint==2.6.0
pyparsing==2.4.7
python-dateutil==2.8.1
pytz==2020.5
PyWavelets==1.1.1
scikit-image==0.18.1
scikit-learn==0.24.1
scipy==1.6.0
six==1.15.0
tensorboard==1.11.0
tensorflow @ https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.11.0-py3-none-any.whl
termcolor==1.1.0
threadpoolctl==2.1.0
tifffile==2020.12.8
toml==0.10.2
Werkzeug==1.0.1
wrapt==1.12.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

No module named 'sklearn.svm._classes' when loading model from colab
がほとんど同じ質問だと思うのですが、scikit-learnのアップグレードなどは試しましたか?

投稿2021/01/29 12:19

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/01/30 04:53 編集

質問者さんへ バージョンを下げないといけないかもしれません digits.pklを保存した(学習させた)時と全く同じバージョンにしないといけません
yo-Beginner03

2021/01/30 05:35

jbpb0様 回答いただきありがとうございます https://github.com/kujirahand/book-mlearn-gyomu/issues/8 アドバイスを参考に下記のサイトを見つけて試しましたが下記のようなエラーが出ます ERROR: No matching distribution found for scikit-learn==0.18.2 記述の仕方が悪いのでしょうか。教えていただければ幸いです。
yo-Beginner03

2021/01/30 05:40

DaikiSuyama様 ご丁寧にミスの訂正までご指摘いただきありがとうございます。 間違えて回答したものは消去したのでこちらで返信致します ご指摘の通りコードを変更いたしました。 pythonのバージョンですが ↓下記で確認しましたが3.9.1でした。 % python3 -VV Python 3.9.1 (v3.9.1:1e5d33e9b9, Dec 7 2020, 12:10:52) お手数おかけしますがよろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2021/01/30 05:47

anacondaの仮想環境のpython3.6にてpip installを行えているかを確認してください。今はpython3.9.1の方のpipを動かしている気がします。 あと、anacondaでscikit-learnを用いるにはcondaコマンドでのインストールが通常だと思うのですが、そちらは試しましたか?
jbpb0

2021/01/30 22:58

> ERROR: No matching distribution found for scikit-learn==0.18.2 https://pypi.org/project/scikit-learn/0.18.2/#files を見ると、scikit-learn 0.18.2のpipインストール用ファイルは、python 3.9用はありませんので、3.9に入れようとしたら、上記エラーが出ます ファイル名の「cp数字」の「数字」が、インストールできるpythonのバージョンです また、 https://anaconda.org/anaconda/scikit-learn/files を見ると、scikit-learn のcondaインストール用ファイルは、0.19.0より古いのは無いようです 「Filters」の「Version:」の「All」をクリックしてみてください 上のコメントにも書きましたが、digits.pklを保存した(学習させた)時に使ったscikit-learnのバージョンに合わせないといけませんが、学習時に0.18.2を使ったのですか? もし違うなら、0.18.2を入れても解決しません 学習時に使ったscikit-learnのバージョンを正しく把握して、それと同じものを入れてください
jbpb0

2021/01/30 23:22

エラーメッセージに > ~/.pyenv/versions/anaconda3-5.0.0/lib/python3.6/site-packages/sklearn/externals/joblib/numpy_pickle.py in load(filename, mmap_mode) みたいなのがいくつもありますよね DaikiSuyamaさんが指摘してるように、エラーを出してるのはpython 3.9ではなく、pyenvの仮想環境下のpython 3.6ですから、その仮想環境を有効にした状態でpipやcondaで必要なものをインストールしないといけません 仮想環境を有効にしてない状態でpipやcondaでインストールしたものはpython 3.9に入り、それはpyenv仮想環境下の3.6からは見えませんので
jbpb0

2021/01/30 23:50

conda list を実行すると、インストール済みのパッケージの一覧がずらーーーっと表示されます その中で、一番右に「pypi」が「付いてない」ものはcondaが管理してるので、よく分からないうちはpipで触らない方がいいですよ condaが管理してるものをpipで触ると環境が壊れることがありますので 参考 https://www.python.jp/install/anaconda/pip_and_conda.html
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問