zadanie-k-średnie

This commit is contained in:
Vojtaz 2021-04-24 21:08:04 +02:00
parent e4adfb04dc
commit 08abda0e74
5 changed files with 850 additions and 0 deletions

32
clusters.py Normal file
View File

@ -0,0 +1,32 @@
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.preprocessing import MaxAbsScaler
K = range(1, 87)
W = range(1, 683)
mms = MaxAbsScaler()
with open("test-A/in.tsv") as file:
corpus = file.readlines()
vectorizer = TfidfVectorizer(ngram_range=(1,2), use_idf = True)
vectorizer = TfidfVectorizer()
vectors = vectorizer.fit_transform(corpus)
mms.fit(vectors)
transformed = mms.transform(vectors)
Sum_of_squered_distances = []
for k in W:
km = KMeans(n_clusters=k)
km = km.fit(transformed)
Sum_of_squered_distances.append(km.inertia_)
plt.plot(W, Sum_of_squered_distances, 'bx-')
plt.xlabel('k')
plt.ylabel('Sum_of_squered_distances')
plt.show()

87
dev-0/out.tsv Normal file
View File

@ -0,0 +1,87 @@
18
4
6
12
24
22
27
3
4
8
26
22
0
13
25
15
33
24
23
24
16
11
7
10
20
11
21
7
34
32
27
27
17
5
25
17
13
1
21
12
4
30
17
12
18
29
31
24
3
17
20
6
27
11
14
10
24
24
27
28
17
19
30
24
22
11
2
18
5
31
16
23
18
9
24
3
20
14
12
3
8
3
8
24
9
1
24
1 18
2 4
3 6
4 12
5 24
6 22
7 27
8 3
9 4
10 8
11 26
12 22
13 0
14 13
15 25
16 15
17 33
18 24
19 23
20 24
21 16
22 11
23 7
24 10
25 20
26 11
27 21
28 7
29 34
30 32
31 27
32 27
33 17
34 5
35 25
36 17
37 13
38 1
39 21
40 12
41 4
42 30
43 17
44 12
45 18
46 29
47 31
48 24
49 3
50 17
51 20
52 6
53 27
54 11
55 14
56 10
57 24
58 24
59 27
60 28
61 17
62 19
63 30
64 24
65 22
66 11
67 2
68 18
69 5
70 31
71 16
72 23
73 18
74 9
75 24
76 3
77 20
78 14
79 12
80 3
81 8
82 3
83 8
84 24
85 9
86 1
87 24

20
skrypt-dev-0.py Normal file
View File

@ -0,0 +1,20 @@
from sklearn.cluster import KMeans
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
import matplotlib.pyplot as plt
with open("dev-0/in.tsv") as file:
corpus = file.readlines()
vectorizer = TfidfVectorizer(ngram_range=(1,2), use_idf = True)
vectors = vectorizer.fit_transform(corpus)
kmeans = KMeans(n_clusters=35, random_state = 0).fit(vectors)
prediction = kmeans.fit_predict(vectors)
labels = kmeans.labels_
labels = np.array2string(labels, precision=2, separator='\n', suppress_small=True)
file = open("dev-0/out.tsv", "w")
file.write(labels[1:-1])

20
skrypt-test-A.py Normal file
View File

@ -0,0 +1,20 @@
from sklearn.cluster import KMeans
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
import matplotlib.pyplot as plt
with open("test-A/in.tsv") as file:
corpus = file.readlines()
vectorizer = TfidfVectorizer(ngram_range=(1,2), use_idf = True)
vectors = vectorizer.fit_transform(corpus)
kmeans = KMeans(n_clusters=255, random_state = 0).fit(vectors)
prediction = kmeans.fit_predict(vectors)
labels = kmeans.labels_
labels = np.array2string(labels, precision=2, separator='\n', suppress_small=True)
file = open("test-A/out.tsv", "w")
file.write(labels[1:-1])

691
test-A/out.tsv Normal file
View File

@ -0,0 +1,691 @@
63
130
223
128
113
107
227
27
70
129
203
73
174
160
17
244
93
205
93
17
185
38
20
117
165
53
111
78
194
98
147
254
20
97
68
58
73
77
143
125
51
14
186
4
48
204
164
9
223
17
223
155
209
117
46
95
131
156
218
240
105
166
111
52
17
43
80
107
108
139
35
68
140
145
132
227
252
235
211
8
184
13
44
136
110
57
209
235
228
51
119
106
68
92
103
166
63
48
193
200
151
86
47
26
218
172
135
39
74
65
50
156
70
142
69
92
177
33
79
176
12
82
26
144
157
143
247
15
84
9
106
67
105
77
224
68
127
8
44
29
89
59
12
29
53
131
65
29
170
95
93
103
177
17
137
73
18
30
145
38
41
104
71
21
35
92
44
220
68
68
146
85
217
14
140
44
243
83
176
149
10
9
88
171
53
138
82
22
27
210
63
5
73
133
196
30
209
223
176
63
175
112
63
40
129
103
223
9
130
6
106
91
104
6
30
73
101
20
36
70
17
126
106
193
23
67
41
234
96
73
131
87
95
173
16
70
67
117
169
131
57
70
43
87
207
32
102
102
40
21
62
33
13
64
112
23
57
204
41
12
95
101
242
168
127
75
131
146
112
91
206
185
210
152
187
180
40
50
12
215
148
61
132
8
64
11
114
156
161
20
74
164
233
79
159
102
103
11
186
78
40
74
2
210
126
83
211
181
19
57
130
54
76
174
96
146
135
150
179
98
166
44
38
177
231
122
177
132
158
40
85
167
213
15
182
223
8
76
17
56
104
105
64
17
137
12
222
31
62
158
72
66
54
241
129
251
102
161
162
166
229
195
79
152
102
212
223
174
21
41
130
232
73
154
101
56
15
28
45
251
53
201
239
249
6
50
124
73
123
107
163
43
111
223
219
157
57
113
18
120
40
209
95
81
45
17
246
86
24
34
99
11
101
8
15
61
21
210
139
198
39
114
72
20
41
112
142
113
154
17
133
80
21
14
10
170
14
57
117
20
32
223
99
191
93
33
244
10
194
40
7
14
185
75
25
77
253
21
175
210
79
144
237
226
125
103
142
225
192
51
122
118
51
134
215
40
112
104
208
36
41
23
99
245
178
171
182
102
112
19
123
223
9
197
84
77
64
29
110
7
230
1
57
77
71
76
42
76
86
48
16
119
20
2
169
94
149
93
2
9
4
135
41
49
228
216
183
199
236
174
10
214
51
97
100
34
184
238
61
172
142
29
113
25
81
16
0
254
39
64
215
175
37
78
67
13
39
57
68
43
16
223
132
27
141
161
77
85
27
3
223
223
135
58
211
31
64
162
31
136
95
87
189
16
169
57
13
95
202
102
33
69
72
100
42
250
63
105
24
192
223
17
61
17
95
132
90
109
25
160
73
86
63
26
73
5
7
21
2
19
116
38
188
142
105
22
195
135
47
153
94
21
60
115
77
39
44
80
36
121
17
57
240
95
229
220
100
45
78
58
210
171
13
31
70
126
55
112
31
221
132
16
190
65
77
248
81
14
53
150
86
103
165
41
118
199
183
133
79
20
32
3
202
41
254
223
17
26
63
134
41
1 63
2 130
3 223
4 128
5 113
6 107
7 227
8 27
9 70
10 129
11 203
12 73
13 174
14 160
15 17
16 244
17 93
18 205
19 93
20 17
21 185
22 38
23 20
24 117
25 165
26 53
27 111
28 78
29 194
30 98
31 147
32 254
33 20
34 97
35 68
36 58
37 73
38 77
39 143
40 125
41 51
42 14
43 186
44 4
45 48
46 204
47 164
48 9
49 223
50 17
51 223
52 155
53 209
54 117
55 46
56 95
57 131
58 156
59 218
60 240
61 105
62 166
63 111
64 52
65 17
66 43
67 80
68 107
69 108
70 139
71 35
72 68
73 140
74 145
75 132
76 227
77 252
78 235
79 211
80 8
81 184
82 13
83 44
84 136
85 110
86 57
87 209
88 235
89 228
90 51
91 119
92 106
93 68
94 92
95 103
96 166
97 63
98 48
99 193
100 200
101 151
102 86
103 47
104 26
105 218
106 172
107 135
108 39
109 74
110 65
111 50
112 156
113 70
114 142
115 69
116 92
117 177
118 33
119 79
120 176
121 12
122 82
123 26
124 144
125 157
126 143
127 247
128 15
129 84
130 9
131 106
132 67
133 105
134 77
135 224
136 68
137 127
138 8
139 44
140 29
141 89
142 59
143 12
144 29
145 53
146 131
147 65
148 29
149 170
150 95
151 93
152 103
153 177
154 17
155 137
156 73
157 18
158 30
159 145
160 38
161 41
162 104
163 71
164 21
165 35
166 92
167 44
168 220
169 68
170 68
171 146
172 85
173 217
174 14
175 140
176 44
177 243
178 83
179 176
180 149
181 10
182 9
183 88
184 171
185 53
186 138
187 82
188 22
189 27
190 210
191 63
192 5
193 73
194 133
195 196
196 30
197 209
198 223
199 176
200 63
201 175
202 112
203 63
204 40
205 129
206 103
207 223
208 9
209 130
210 6
211 106
212 91
213 104
214 6
215 30
216 73
217 101
218 20
219 36
220 70
221 17
222 126
223 106
224 193
225 23
226 67
227 41
228 234
229 96
230 73
231 131
232 87
233 95
234 173
235 16
236 70
237 67
238 117
239 169
240 131
241 57
242 70
243 43
244 87
245 207
246 32
247 102
248 102
249 40
250 21
251 62
252 33
253 13
254 64
255 112
256 23
257 57
258 204
259 41
260 12
261 95
262 101
263 242
264 168
265 127
266 75
267 131
268 146
269 112
270 91
271 206
272 185
273 210
274 152
275 187
276 180
277 40
278 50
279 12
280 215
281 148
282 61
283 132
284 8
285 64
286 11
287 114
288 156
289 161
290 20
291 74
292 164
293 233
294 79
295 159
296 102
297 103
298 11
299 186
300 78
301 40
302 74
303 2
304 210
305 126
306 83
307 211
308 181
309 19
310 57
311 130
312 54
313 76
314 174
315 96
316 146
317 135
318 150
319 179
320 98
321 166
322 44
323 38
324 177
325 231
326 122
327 177
328 132
329 158
330 40
331 85
332 167
333 213
334 15
335 182
336 223
337 8
338 76
339 17
340 56
341 104
342 105
343 64
344 17
345 137
346 12
347 222
348 31
349 62
350 158
351 72
352 66
353 54
354 241
355 129
356 251
357 102
358 161
359 162
360 166
361 229
362 195
363 79
364 152
365 102
366 212
367 223
368 174
369 21
370 41
371 130
372 232
373 73
374 154
375 101
376 56
377 15
378 28
379 45
380 251
381 53
382 201
383 239
384 249
385 6
386 50
387 124
388 73
389 123
390 107
391 163
392 43
393 111
394 223
395 219
396 157
397 57
398 113
399 18
400 120
401 40
402 209
403 95
404 81
405 45
406 17
407 246
408 86
409 24
410 34
411 99
412 11
413 101
414 8
415 15
416 61
417 21
418 210
419 139
420 198
421 39
422 114
423 72
424 20
425 41
426 112
427 142
428 113
429 154
430 17
431 133
432 80
433 21
434 14
435 10
436 170
437 14
438 57
439 117
440 20
441 32
442 223
443 99
444 191
445 93
446 33
447 244
448 10
449 194
450 40
451 7
452 14
453 185
454 75
455 25
456 77
457 253
458 21
459 175
460 210
461 79
462 144
463 237
464 226
465 125
466 103
467 142
468 225
469 192
470 51
471 122
472 118
473 51
474 134
475 215
476 40
477 112
478 104
479 208
480 36
481 41
482 23
483 99
484 245
485 178
486 171
487 182
488 102
489 112
490 19
491 123
492 223
493 9
494 197
495 84
496 77
497 64
498 29
499 110
500 7
501 230
502 1
503 57
504 77
505 71
506 76
507 42
508 76
509 86
510 48
511 16
512 119
513 20
514 2
515 169
516 94
517 149
518 93
519 2
520 9
521 4
522 135
523 41
524 49
525 228
526 216
527 183
528 199
529 236
530 174
531 10
532 214
533 51
534 97
535 100
536 34
537 184
538 238
539 61
540 172
541 142
542 29
543 113
544 25
545 81
546 16
547 0
548 254
549 39
550 64
551 215
552 175
553 37
554 78
555 67
556 13
557 39
558 57
559 68
560 43
561 16
562 223
563 132
564 27
565 141
566 161
567 77
568 85
569 27
570 3
571 223
572 223
573 135
574 58
575 211
576 31
577 64
578 162
579 31
580 136
581 95
582 87
583 189
584 16
585 169
586 57
587 13
588 95
589 202
590 102
591 33
592 69
593 72
594 100
595 42
596 250
597 63
598 105
599 24
600 192
601 223
602 17
603 61
604 17
605 95
606 132
607 90
608 109
609 25
610 160
611 73
612 86
613 63
614 26
615 73
616 5
617 7
618 21
619 2
620 19
621 116
622 38
623 188
624 142
625 105
626 22
627 195
628 135
629 47
630 153
631 94
632 21
633 60
634 115
635 77
636 39
637 44
638 80
639 36
640 121
641 17
642 57
643 240
644 95
645 229
646 220
647 100
648 45
649 78
650 58
651 210
652 171
653 13
654 31
655 70
656 126
657 55
658 112
659 31
660 221
661 132
662 16
663 190
664 65
665 77
666 248
667 81
668 14
669 53
670 150
671 86
672 103
673 165
674 41
675 118
676 199
677 183
678 133
679 79
680 20
681 32
682 3
683 202
684 41
685 254
686 223
687 17
688 26
689 63
690 134
691 41