質問編集履歴
4
ライブラリ追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -178,4 +178,10 @@
|
|
178
178
|
# print("PREDICT: ", pred)
|
179
179
|
return pred
|
180
180
|
|
181
|
-
```
|
181
|
+
```
|
182
|
+
|
183
|
+
### ライブラリなど
|
184
|
+
windows10
|
185
|
+
python3.6
|
186
|
+
pyxel
|
187
|
+
scikit-learn 0.22
|
3
エラーとコードの追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -17,13 +17,39 @@
|
|
17
17
|
今回分からないエラーは
|
18
18
|
|
19
19
|
```エラー
|
20
|
-
|
20
|
+
Image has saved correctly.
|
21
|
+
C:\Users\ユーザー名\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\utils\deprecation.py:144: FutureWarning: The sklearn.neighbors.classification module is deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.neighbors. Anything that cannot be imported from sklearn.neighbors is now part of the private API.
|
22
|
+
warnings.warn(message, FutureWarning)
|
23
|
+
C:\Users\ユーザー名\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\utils\deprecation.py:144: FutureWarning: The sklearn.neighbors.kd_tree module is deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.neighbors. Anything that cannot be imported from sklearn.neighbors is now part of the private API.
|
24
|
+
warnings.warn(message, FutureWarning)
|
25
|
+
C:\Users\ユーザー名\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\utils\deprecation.py:144: FutureWarning: The sklearn.neighbors.dist_metrics module is deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.neighbors. Anything that cannot be imported from sklearn.neighbors is now part of the private API.
|
26
|
+
warnings.warn(message, FutureWarning)
|
27
|
+
C:\Users\ユーザー名\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\base.py:318: UserWarning: Trying to unpickle estimator KNeighborsClassifier from version 0.21.3 when using version 0.22.1. This might lead to breaking code or invalid results. Use at your own risk.
|
28
|
+
UserWarning)
|
29
|
+
Traceback (most recent call last):
|
30
|
+
File "paint.py", line 87, in <module>
|
31
|
+
App()
|
32
|
+
File "paint.py", line 31, in __init__
|
33
|
+
pyxel.run(self.update, self.draw)
|
34
|
+
File "C:\Users\ユーザー名\AppData\Local\Programs\Python\Python36\lib\site-packages\pyxel\app.py", line 255, in run
|
35
|
+
main_loop()
|
36
|
+
File "C:\Users\ユーザー名\AppData\Local\Programs\Python\Python36\lib\site-packages\pyxel\app.py", line 247, in main_loop
|
37
|
+
self._update_frame()
|
38
|
+
File "C:\Users\ユーザー名\AppData\Local\Programs\Python\Python36\lib\site-packages\pyxel\app.py", line 438, in _update_frame
|
39
|
+
self._update()
|
40
|
+
File "paint.py", line 57, in update
|
41
|
+
self.pred_digit = model.load_predict()
|
42
|
+
File "C:\Users\ユーザー名\Desktop\AI\pyxelDigitRecognition\model.py", line 43, in load_predict
|
43
|
+
pred = loaded_model.predict(img)[0] # np.array to int
|
44
|
+
File "C:\Users\ユーザー名\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\neighbors\_classification.py", line 173, in predict
|
45
|
+
neigh_dist, neigh_ind = self.kneighbors(X)
|
46
|
+
File "C:\Users\ユーザー名\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\neighbors\_base.py", line 580, in kneighbors
|
21
47
|
n_samples_fit = self.n_samples_fit_
|
22
48
|
AttributeError: 'KNeighborsClassifier' object has no attribute 'n_samples_fit_'
|
23
49
|
```
|
24
50
|
|
25
51
|
コード
|
26
|
-
```
|
52
|
+
```paint.py
|
27
53
|
# 3rd party
|
28
54
|
import numpy as np
|
29
55
|
from PIL import Image
|
@@ -104,4 +130,52 @@
|
|
104
130
|
|
105
131
|
App()
|
106
132
|
|
133
|
+
```
|
134
|
+
```model.py
|
135
|
+
import numpy as np
|
136
|
+
import pickle
|
137
|
+
from PIL import Image
|
138
|
+
from sklearn.datasets import load_digits
|
139
|
+
from sklearn.model_selection import train_test_split
|
140
|
+
from sklearn.neighbors import KNeighborsClassifier
|
141
|
+
|
142
|
+
|
143
|
+
def train():
|
144
|
+
"""Train k-nearest neighbors model with Digits dataset
|
145
|
+
"""
|
146
|
+
digits = load_digits()
|
147
|
+
X = digits.data
|
148
|
+
y = digits.target
|
149
|
+
|
150
|
+
# print(X.shape) # (1797, 64)
|
151
|
+
# print(y.shape) # (1797,)
|
152
|
+
|
153
|
+
X_train,X_test,y_train,y_test = train_test_split(X, y)
|
154
|
+
|
155
|
+
knn = KNeighborsClassifier()
|
156
|
+
knn.fit(X_train, y_train)
|
157
|
+
# print(knn.score(X_test, y_test)) # 0.98 lol
|
158
|
+
|
159
|
+
# save model
|
160
|
+
with open('knn_digit.pkl', 'wb') as f:
|
161
|
+
pickle.dump(knn, f)
|
162
|
+
|
163
|
+
|
164
|
+
def load_predict() -> int:
|
165
|
+
"""load a trained model and predict
|
166
|
+
"""
|
167
|
+
|
168
|
+
with open('knn_digit.pkl', 'rb') as f:
|
169
|
+
loaded_model = pickle.load(f)
|
170
|
+
|
171
|
+
# Open image and extract features
|
172
|
+
img = Image.open("images/screen_shot.png")
|
173
|
+
img = img.convert('L') # convert (r,g,b) to gray scale (0-255)
|
174
|
+
img = (255 - np.array(img))//16 + 1 # convert to 0-15
|
175
|
+
img = img.reshape(1, 64)
|
176
|
+
|
177
|
+
pred = loaded_model.predict(img)[0] # np.array to int
|
178
|
+
# print("PREDICT: ", pred)
|
179
|
+
return pred
|
180
|
+
|
107
181
|
```
|
2
エラー
title
CHANGED
File without changes
|
body
CHANGED
@@ -17,6 +17,8 @@
|
|
17
17
|
今回分からないエラーは
|
18
18
|
|
19
19
|
```エラー
|
20
|
+
File "C:\Users\ユーザー名\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\neighbors\_base.py", line 612, in kneighbors
|
21
|
+
n_samples_fit = self.n_samples_fit_
|
20
22
|
AttributeError: 'KNeighborsClassifier' object has no attribute 'n_samples_fit_'
|
21
23
|
```
|
22
24
|
|
1
リンク
title
CHANGED
File without changes
|
body
CHANGED
@@ -7,7 +7,8 @@
|
|
7
7
|
4.数字を学習したAIがその画像を認識する
|
8
8
|
5.結果を出力
|
9
9
|
|
10
|
+
今回の参考サイトは
|
10
|
-
|
11
|
+
[ペイントソフトを作って、ついでに手書き数字認識もする](https://qiita.com/odanny/items/eee3d99522bb01fdd111?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items)
|
11
12
|
|
12
13
|
基本的にサイトに書かれていることしかしていないので、以下のエラーが一体何なのかわからず困っています。
|
13
14
|
K近傍法とやらのエラーっぽい感じなのはわかるのですが・・・。
|