Materi
Model pembelajaran mesin di scikit-learn menerima data berbentuk (banyak sampel, banyak fitur). Citra punya dua sumbu, jadi cara paling sederhana memakainya adalah meratakan: setiap piksel menjadi satu fitur. Contoh "Recognizing hand-written digits" di scikit-learn meratakan setiap citra berbentuk (8, 8) menjadi (64,) dengan reshape((banyak_citra, -1)); −1 berarti ukuran sumbu itu dihitung numpy sendiri.
Dokumentasi load_digits menyebut dataset ini berisi 1797 citra angka tulisan tangan berukuran 8 × 8, sepuluh kelas, dan fitur berupa bilangan bulat 0–16, bukan 0–255. digits.images menyimpan versi citra, digits.data versi yang sudah diratakan, dan digits.target labelnya. Membagi 16 menskalakan fitur ke 0–1.
KNeighborsClassifier menebak kelas sebuah citra dari kelas mayoritas n_neighbors citra latih yang jaraknya paling dekat. Karena jaraknya dihitung dari selisih piksel, skala fitur harus sama antara data latih dan data yang ditebak. Model ini tidak tahu bahwa piksel bertetangga saling berhubungan; pengetahuan itu yang ditambahkan jaringan konvolusi.
import numpy as np
tumpukan = np.arange(2 * 3 * 3).reshape(2, 3, 3) # 2 citra 3 x 3
rata = tumpukan.reshape((len(tumpukan), -1))
print(rata.shape) # (2, 9): setiap citra jadi 9 fitur