実現したいこと
ハガキの郵便番号の数字を手書き文字判定したい
試したこと(コード)
- 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
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/30 04:53 編集
2021/01/30 05:35
2021/01/30 05:40
退会済みユーザー
2021/01/30 05:47
2021/01/30 22:58
2021/01/30 23:22
2021/01/30 23:50