質問編集履歴
17
test
CHANGED
File without changes
|
test
CHANGED
@@ -40,6 +40,10 @@
|
|
40
40
|
|
41
41
|
```
|
42
42
|
|
43
|
+
module.py
|
44
|
+
|
45
|
+
————————————
|
46
|
+
|
43
47
|
from tkinter import *
|
44
48
|
|
45
49
|
from PIL improt Image ,ImageGrab
|
@@ -178,6 +182,18 @@
|
|
178
182
|
|
179
183
|
self.__label.config(text=‘判定結果: ?’)
|
180
184
|
|
185
|
+
————————————
|
186
|
+
|
187
|
+
start_up.py
|
188
|
+
|
189
|
+
————————————
|
190
|
+
|
191
|
+
from module import Drawing
|
192
|
+
|
193
|
+
draw = Drawing()
|
194
|
+
|
195
|
+
draw.run()
|
196
|
+
|
181
197
|
```
|
182
198
|
|
183
199
|
### 試したこと
|
16
test
CHANGED
File without changes
|
test
CHANGED
@@ -128,9 +128,9 @@
|
|
128
128
|
|
129
129
|
digits = ds.load_digits()
|
130
130
|
|
131
|
-
learn_data = digits.data
|
131
|
+
learn_data = digits.data #学習データ
|
132
132
|
|
133
|
-
result_data = digits.
|
133
|
+
result_data = digits.target #結果データ
|
134
134
|
|
135
135
|
model =SVC(gamma = 0.001)
|
136
136
|
|
@@ -144,13 +144,39 @@
|
|
144
144
|
|
145
145
|
#判定
|
146
146
|
|
147
|
-
def __
|
147
|
+
def __judge_digits(self):
|
148
148
|
|
149
|
-
|
149
|
+
x1 = self.__window.winfo_riootx() + self.__canvas.winfo_x()
|
150
150
|
|
151
|
-
|
151
|
+
y1 = self.__window.winfo_riooty() + self.__canvas.winfo_y()
|
152
152
|
|
153
|
+
x2 = x1 + self.__canvas.winfo_width()
|
154
|
+
|
155
|
+
y2 = y1 + self.__canvas.winfo_height()
|
156
|
+
|
157
|
+
img = ImageGrap.grap()
|
158
|
+
|
159
|
+
img = img.crop((x1,y1,x2,y2))
|
160
|
+
|
161
|
+
target_data = self.__convert_image(img)
|
162
|
+
|
153
|
-
|
163
|
+
self.__predict_digits(target_data)
|
164
|
+
|
165
|
+
#消去
|
166
|
+
|
167
|
+
def __clear(self):
|
168
|
+
|
169
|
+
x1= 0
|
170
|
+
|
171
|
+
y1= 0
|
172
|
+
|
173
|
+
x2= x1 + self.__canvas.winfo_width()
|
174
|
+
|
175
|
+
y2= y1 + self.__canvas.winfo_height()
|
176
|
+
|
177
|
+
self.__canvas.create_rectangle(x1,y1,x2,y2,fill=‘white’,width=0)
|
178
|
+
|
179
|
+
self.__label.config(text=‘判定結果: ?’)
|
154
180
|
|
155
181
|
```
|
156
182
|
|
15
test
CHANGED
File without changes
|
test
CHANGED
@@ -116,7 +116,41 @@
|
|
116
116
|
|
117
117
|
img_array = numpy.asarray(gray_image,dtype = float)
|
118
118
|
|
119
|
-
img_array = numpy.floor(16-16*(
|
119
|
+
img_array = numpy.floor(16-16*(img_array/256))
|
120
|
+
|
121
|
+
img_array = img_array.flatten()
|
122
|
+
|
123
|
+
return img_array
|
124
|
+
|
125
|
+
#数字判定予測
|
126
|
+
|
127
|
+
def __predict_digits(self,target_data):
|
128
|
+
|
129
|
+
digits = ds.load_digits()
|
130
|
+
|
131
|
+
learn_data = digits.data
|
132
|
+
|
133
|
+
result_data = digits.data
|
134
|
+
|
135
|
+
model =SVC(gamma = 0.001)
|
136
|
+
|
137
|
+
model.fit(learn_data,result_data)
|
138
|
+
|
139
|
+
n = model.predict([target_data])
|
140
|
+
|
141
|
+
self.__label.config(text = ‘判定結果: ‘ +str(n[0]))
|
142
|
+
|
143
|
+
print(n)
|
144
|
+
|
145
|
+
#判定
|
146
|
+
|
147
|
+
def __predict_digits(self,target_data):
|
148
|
+
|
149
|
+
digits = ds.load_digits()
|
150
|
+
|
151
|
+
learn_data = digits.data #学習データ
|
152
|
+
|
153
|
+
result_data = digits.target #結果データ
|
120
154
|
|
121
155
|
```
|
122
156
|
|
14
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
13
test
CHANGED
File without changes
|
test
CHANGED
@@ -52,13 +52,13 @@
|
|
52
52
|
|
53
53
|
class Drawing:
|
54
54
|
|
55
|
-
|
55
|
+
#コンストラクタ
|
56
56
|
|
57
57
|
def __init__(self):
|
58
58
|
|
59
59
|
self.__window = self.__create_window()
|
60
60
|
|
61
|
-
#
|
61
|
+
#画面を構成
|
62
62
|
|
63
63
|
def __create_window(self):
|
64
64
|
|
@@ -90,11 +90,33 @@
|
|
90
90
|
|
91
91
|
|
92
92
|
|
93
|
-
#
|
93
|
+
#実行
|
94
94
|
|
95
95
|
def run(self):
|
96
96
|
|
97
|
+
self.__window.mainloop()
|
98
|
+
|
99
|
+
#マウスを押す
|
100
|
+
|
101
|
+
def __on_pressed(self,e):
|
102
|
+
|
97
|
-
|
103
|
+
x = e.x
|
104
|
+
|
105
|
+
y = e.y
|
106
|
+
|
107
|
+
self.__canvas.create_oval(x-15,y-15,x+15,y+15,fill=‘black’
|
108
|
+
|
109
|
+
#画像データを数値リストに変換
|
110
|
+
|
111
|
+
def __convert_image(self,img):
|
112
|
+
|
113
|
+
gray_image = img.convert(‘L’)
|
114
|
+
|
115
|
+
gray_imgae = gray_image.resize((8,8),Image.ANTIALIAS)
|
116
|
+
|
117
|
+
img_array = numpy.asarray(gray_image,dtype = float)
|
118
|
+
|
119
|
+
img_array = numpy.floor(16-16*(
|
98
120
|
|
99
121
|
```
|
100
122
|
|
12
test
CHANGED
File without changes
|
test
CHANGED
@@ -31,6 +31,8 @@
|
|
31
31
|
|
32
32
|
|
33
33
|
### 該当のソースコード
|
34
|
+
|
35
|
+
g
|
34
36
|
|
35
37
|
```
|
36
38
|
|
11
test
CHANGED
File without changes
|
test
CHANGED
@@ -31,6 +31,10 @@
|
|
31
31
|
|
32
32
|
|
33
33
|
### 該当のソースコード
|
34
|
+
|
35
|
+
```
|
36
|
+
|
37
|
+
コード
|
34
38
|
|
35
39
|
```
|
36
40
|
|
@@ -105,9 +109,3 @@
|
|
105
109
|
|
106
110
|
|
107
111
|
ここにより詳細な情報を記載してください。
|
108
|
-
|
109
|
-
```ああああ
|
110
|
-
|
111
|
-
コード
|
112
|
-
|
113
|
-
```
|
10
test
CHANGED
File without changes
|
test
CHANGED
@@ -105,3 +105,9 @@
|
|
105
105
|
|
106
106
|
|
107
107
|
ここにより詳細な情報を記載してください。
|
108
|
+
|
109
|
+
```ああああ
|
110
|
+
|
111
|
+
コード
|
112
|
+
|
113
|
+
```
|
9
test
CHANGED
File without changes
|
test
CHANGED
@@ -31,6 +31,8 @@
|
|
31
31
|
|
32
32
|
|
33
33
|
### 該当のソースコード
|
34
|
+
|
35
|
+
```
|
34
36
|
|
35
37
|
from tkinter import *
|
36
38
|
|
@@ -88,6 +90,8 @@
|
|
88
90
|
|
89
91
|
self.
|
90
92
|
|
93
|
+
```
|
94
|
+
|
91
95
|
### 試したこと
|
92
96
|
|
93
97
|
・学習モデルに使用する手書き数字画像(0〜9)を各70枚ほど用意
|
8
test
CHANGED
File without changes
|
test
CHANGED
@@ -32,9 +32,7 @@
|
|
32
32
|
|
33
33
|
### 該当のソースコード
|
34
34
|
|
35
|
-
ソースコード
|
36
|
-
|
37
|
-
|
35
|
+
from tkinter import *
|
38
36
|
|
39
37
|
from PIL improt Image ,ImageGrab
|
40
38
|
|
7
test
CHANGED
File without changes
|
test
CHANGED
@@ -32,11 +32,9 @@
|
|
32
32
|
|
33
33
|
### 該当のソースコード
|
34
34
|
|
35
|
-
```
|
36
|
-
|
37
35
|
ソースコード
|
38
36
|
|
39
|
-
from tkinter import *
|
37
|
+
```from tkinter import *
|
40
38
|
|
41
39
|
from PIL improt Image ,ImageGrab
|
42
40
|
|
6
test
CHANGED
File without changes
|
test
CHANGED
@@ -48,7 +48,7 @@
|
|
48
48
|
|
49
49
|
class Drawing:
|
50
50
|
|
51
|
-
|
51
|
+
画面描画
|
52
52
|
|
53
53
|
def __init__(self):
|
54
54
|
|
5
test
CHANGED
File without changes
|
test
CHANGED
@@ -32,15 +32,65 @@
|
|
32
32
|
|
33
33
|
### 該当のソースコード
|
34
34
|
|
35
|
-
|
36
|
-
|
37
35
|
```
|
38
36
|
|
39
37
|
ソースコード
|
40
38
|
|
39
|
+
from tkinter import *
|
40
|
+
|
41
|
+
from PIL improt Image ,ImageGrab
|
42
|
+
|
43
|
+
import tkinter.filedialog as fd
|
44
|
+
|
45
|
+
import sklearn.svm import SVC
|
46
|
+
|
47
|
+
import numpy
|
48
|
+
|
49
|
+
class Drawing:
|
50
|
+
|
41
|
-
|
51
|
+
#画面描画
|
52
|
+
|
53
|
+
def __init__(self):
|
54
|
+
|
55
|
+
self.__window = self.__create_window()
|
56
|
+
|
57
|
+
#
|
58
|
+
|
59
|
+
def __create_window(self):
|
60
|
+
|
61
|
+
window = Tk()
|
62
|
+
|
63
|
+
window.geometry(‘400x400’)
|
64
|
+
|
65
|
+
window.tilte(‘数字判断アプリ’)
|
66
|
+
|
67
|
+
self.__label = Label(text = ‘判断結果:?’)
|
68
|
+
|
69
|
+
self.__label = Label.pack()
|
70
|
+
|
71
|
+
self.__canvas = Canvas(width = 200, bg = ‘white’)
|
72
|
+
|
73
|
+
self.__canvas.bind(‘<ButtonPress-1>’,self__.on_pressed)
|
74
|
+
|
75
|
+
self.__canvas.bind(‘<B1-Motion>’,self.__on_dragged
|
76
|
+
|
77
|
+
self.__canvas.pack()
|
78
|
+
|
79
|
+
judge_button= Button(text =‘判定’, command = self.__judge_digit)
|
80
|
+
|
81
|
+
judge_button.pack()
|
82
|
+
|
83
|
+
clear_button = Button(text =‘消去’, command = self.__clear)
|
84
|
+
|
85
|
+
return window
|
42
86
|
|
43
87
|
|
88
|
+
|
89
|
+
#
|
90
|
+
|
91
|
+
def run(self):
|
92
|
+
|
93
|
+
self.
|
44
94
|
|
45
95
|
### 試したこと
|
46
96
|
|
4
test
CHANGED
File without changes
|
test
CHANGED
@@ -46,6 +46,8 @@
|
|
46
46
|
|
47
47
|
・学習モデルに使用する手書き数字画像(0〜9)を各70枚ほど用意
|
48
48
|
|
49
|
+
・画像を8×8ピクセルにリサイズ
|
50
|
+
|
49
51
|
|
50
52
|
|
51
53
|
### 補足情報(FW/ツールのバージョンなど)
|
3
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,13 +2,13 @@
|
|
2
2
|
|
3
3
|
前提として
|
4
4
|
|
5
|
-
・インターネットからデータは取れない。
|
5
|
+
・インターネットから既存の手書きデータは取れない。
|
6
6
|
|
7
7
|
・手書きのみ
|
8
8
|
|
9
9
|
・キャンバスに描画した数字を画像⇨文字列に変換して学習モデルと比較
|
10
10
|
|
11
|
-
・scikit-learn で学習モデルを作成
|
11
|
+
・scikit-learn で教師あり学習モデルを作成
|
12
12
|
|
13
13
|
|
14
14
|
|
2
test
CHANGED
File without changes
|
test
CHANGED
@@ -7,6 +7,8 @@
|
|
7
7
|
・手書きのみ
|
8
8
|
|
9
9
|
・キャンバスに描画した数字を画像⇨文字列に変換して学習モデルと比較
|
10
|
+
|
11
|
+
・scikit-learn で学習モデルを作成
|
10
12
|
|
11
13
|
|
12
14
|
|
@@ -42,7 +44,7 @@
|
|
42
44
|
|
43
45
|
### 試したこと
|
44
46
|
|
45
|
-
学習モデルに使用する手書き数字画像(0〜9)を各70枚ほど用意
|
47
|
+
・学習モデルに使用する手書き数字画像(0〜9)を各70枚ほど用意
|
46
48
|
|
47
49
|
|
48
50
|
|
1
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,14 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
|
+
|
3
|
+
前提として
|
4
|
+
|
5
|
+
・インターネットからデータは取れない。
|
6
|
+
|
7
|
+
・手書きのみ
|
8
|
+
|
9
|
+
・キャンバスに描画した数字を画像⇨文字列に変換して学習モデルと比較
|
10
|
+
|
11
|
+
|
2
12
|
|
3
13
|
現在キャンバス上に描画した数字を判定して予測結果を出力するプログラムを作成してしています。
|
4
14
|
|
@@ -8,15 +18,13 @@
|
|
8
18
|
|
9
19
|
|
10
20
|
|
21
|
+
|
22
|
+
|
11
23
|
### 発生している問題・エラーメッセージ
|
12
24
|
|
13
|
-
正
|
25
|
+
```正解率をあげるには、学習するための画像を増やせばいいでしょうか
|
14
26
|
|
15
|
-
```
|
16
27
|
|
17
|
-
エラーメッセージ
|
18
|
-
|
19
|
-
```
|
20
28
|
|
21
29
|
|
22
30
|
|
@@ -24,7 +32,7 @@
|
|
24
32
|
|
25
33
|
|
26
34
|
|
27
|
-
```
|
35
|
+
```
|
28
36
|
|
29
37
|
ソースコード
|
30
38
|
|
@@ -34,7 +42,7 @@
|
|
34
42
|
|
35
43
|
### 試したこと
|
36
44
|
|
37
|
-
手書き数字(0〜9)を各70枚ほど用意
|
45
|
+
学習モデルに使用する手書き数字画像(0〜9)を各70枚ほど用意
|
38
46
|
|
39
47
|
|
40
48
|
|