Menu
CoddyTech

Menemukan yang Berbeda

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

Bab ini mencari baris yang tidak biasa. Di akhir bab ini, kamu akan menandai menit-menit aneh pada sebuah server:

Menit-menit pada server web di malam hari, jumlah permintaan per detik pada sumbu mendatar dan latensi pada sumbu tegak: kumpulan titik rapat yang menanjak, serta empat menit terpencil yang dilingkari merah saat dua detektor sepakat

Anomali adalah baris langka yang berbeda dari yang lain: gangguan, penipuan, atau salah ketik. Setiap anomali baru berbeda, jadi tidak ada yang bisa melabelinya sebelumnya.

Mulai dengan skor-z. StandardScaler mengubah setiap kolom menjadi skor-z, jadi satu baris menandai baris yang memiliki nilai apa pun di atas 3:

z = StandardScaler().fit_transform(X)
odd = (np.abs(z) > 3).sum(axis=1) > 0

Regangan sensor jembatan meningkat seiring suhu. Satu pembacaan jauh di atas yang lain dilingkari merah, ditandai karena skor-z regangannya di atas 3. Satu pembacaan di bawah tren pada 27 derajat dilingkari oranye: terlewat

Namun, sebuah baris bisa tampak biasa di setiap kolom dan hanya tampak ganjil saat dipadukan. Skor-z kolom tidak dapat mendeteksinya.

challenge icon

Tantangan

Sedang

Sebuah supermarket mencatat rata-rata harian untuk 80 freezer-nya. Freezer mana yang perlu diperiksa teknisi? Program membaca batas.

  1. Ubah setiap kolom X menjadi z-score.
  2. Untuk setiap kolom, cetak jumlah freezer yang ditandai: z-score yang jaraknya dari 0 lebih besar daripada batas.
  3. Cetak setiap freezer yang ditandai oleh kolom mana pun, sesuai urutan tabel.

Untuk toko lain dan 3:

temp_c: 1 flagged
power_kw: 2 flagged
door_openings: 0 flagged
defrost_min: 0 flagged
Freezers to check:
  F05
  F13
  F51

Coba sendiri

import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler

# Satu baris per unit freezer: nilai rata-rata harian
freezers = pd.read_csv("freezers.csv")
columns = ["temp_c", "power_kw", "door_openings", "defrost_min"]
X = freezers[columns]
cutoff = float(input())

# 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