Menu
CoddyTech

Temukan yang Tidak Biasa

Termasuk bagian Pembelajaran Tanpa Pengawasan dalam perjalanan Machine Learning di Coddy. Pelajaran 47 dari 51.

Satu pertanyaan terakhir: pemindaian mana yang tidak biasa? Isolation forest memberi skor pada setiap pemindaian, dan semakin rendah skornya, semakin aneh pemindaian itu. Pertama, skor tertinggi, yang paling biasa:

Sepuluh hasil pemindaian tulisan tangan yang rapi dalam dua baris, yang paling biasa dalam kumpulan ini: lima angka 0 bulat, tiga angka 9, satu angka 8, dan satu angka 2

iso = IsolationForest(contamination=0.02, random_state=0)
flags = iso.fit_predict(X_small)
scores = iso.score_samples(X_small)
typical = np.argsort(scores)[::-1][:10]

np.argsort mencantumkan nomor baris dari skor terendah ke tertinggi, jadi jika dibalik, data yang paling biasa muncul lebih dulu. Tampilkan data tersebut dari X: semua 64 piksel.

challenge icon

Tantangan

Sedang

Bagian penutup. Kode awal mencakup semua yang sudah dipelajari, dan guess, nama cluster untuk setiap pemindaian.

  1. Latih isolation forest pada X_small (contamination=0.02, random_state=0). Cetak jumlah pemindaian yang ditandainya, digit yang paling sering ditandai, dan jumlah pemindaian yang digitnya dinamai dengan benar oleh clusternya.
  2. Gambar 10 pemindaian paling aneh, mulai dari yang paling aneh: galeri 2 kali 5 dalam gray_r, dengan judul berupa digitnya.

Dengan contamination=0.01:

Flagged as odd: 18 of 1797 scans
Most often odd: 7 (10 scans)
Named right by their cluster: 11 of 18 odd scans

Galeri angka 7 yang paling biasa terlihat seperti ini:

Sepuluh angka 7 tulisan tangan dalam galeri 2 kali 5, masing-masing berjudul 7, semuanya mirip: garis atas, garis silang pendek, dan goresan ke bawah

Hasilmu menampilkan pemindaian yang paling aneh. Cluster menamai 79.2% dari semua pemindaian dengan benar: bagaimana perbandingan pemindaian yang aneh? Kamu menjelajahi 1,797 pemindaian dan tidak pernah melatih model menggunakan label.

Coba sendiri

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
from sklearn.ensemble import IsolationForest

# Dari Look at the Digits: 1,797 hasil pemindaian dengan 64 piksel, nilai tinta dari 0 hingga 16
digits = load_digits()
X = digits.data
y = digits.target

# Dari Shrink with PCA: 80% variasi dalam 13 angka per hasil pemindaian
pca = PCA(n_components=0.8)
X_small = pca.fit_transform(X)

# Dari Cluster the Digits: 10 klaster, ditemukan tanpa label
km = KMeans(n_clusters=10, n_init=10, random_state=0).fit(X_small)

# Dari Name the Clusters: angka yang menjadi nama klaster setiap hasil pemindaian (79.2% cocok dengan y)
names = pd.crosstab(km.labels_, y).idxmax(axis=1)
guess = names.to_numpy()[km.labels_]

# Tulis kodemu di bawah ini
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Tanpa Pengawasan

Latihan sendiri: Compiler Python online