Menu
CoddyTech

Standardisasi

Termasuk bagian Statistik untuk ML dalam perjalanan Machine Learning di Coddy. Pelajaran 49 dari 64.

Banyak model belajar paling baik ketika setiap fitur berpusat di 0 dengan sebaran 1. Standardisasi melakukan hal itu: setiap nilai menjadi z-score dalam kolomnya.

Lima labu, berat dalam kg dan lebar dalam cm:

Dua baris titik pada satu penggaris dalam satuan simpangan baku: lima berat labu dari 8 hingga 40 kg dan lima lebar dari 30 hingga 65 cm, masing-masing berpusat pada rata-ratanya sendiri di 0, semuanya berada antara -1.6 dan 1.6

Broadcasting menstandarkan setiap kolom sekaligus:

pumpkins = np.array([[30, 60],
                     [8, 30],
                     [22, 55],
                     [40, 65],
                     [15, 40]])
z = (pumpkins - pumpkins.mean(axis=0)) / pumpkins.std(axis=0)
print(np.round(z.mean(axis=0), 2))
print(np.round(z.std(axis=0), 2))

Hasilnya:

[0. 0.]
[1. 1.]

Bulatkan sebelum kamu memeriksa: tanpa pembulatan, mean 0 dapat tercetak sebagai 2.22044605e-17, sedikit kesalahan pembulatan.

Berbeda dengan min-max, tidak ada rentang tetap: sebagian besar nilai berada di antara -2 dan 2.

challenge icon

Tantangan

Sedang

Sebuah peternakan sapi perah menemukan sapi yang tidak biasa. Setiap baris pada cows mewakili seekor sapi: produksi susu (liter per hari), berat (kg), dan usia (tahun), yang namanya tercantum dalam features. Program membaca posisi sapi k.

  1. Lengkapi standardize(X). Baris pemeriksaan kemudian mencetak [0. 0. 0.] dan [1. 1. 1.].
  2. Temukan skor-z sapi k yang paling jauh dari 0, abaikan tandanya, lalu cetak seperti di bawah, dengan 2 angka desimal.

Untuk sapi di peternakan lain:

Column means: [0. 0. 0.]
Column stds: [1. 1. 1.]
Cow 2 stands out by weight: 1.76 std above the herd

Coba sendiri

import numpy as np

features = ["milk", "weight", "age"]
# Satu baris untuk setiap sapi: susu dalam liter per hari, berat dalam kg, usia dalam tahun
cows = np.array([[28, 610, 6],
                 [22, 540, 3],
                 [35, 680, 6],
                 [31, 590, 9],
                 [19, 650, 4],
                 [26, 520, 2],
                 [30, 600, 7]])
k = int(input())


# Mengembalikan X dengan setiap kolom distandardisasi: rata-rata 0 dan simpangan baku 1
def standardize(X):
    # Ganti baris di bawah ini dengan kode standardisasi
    return X


# Jangan ubah tiga baris di bawah ini: baris-baris itu memeriksa fungsimu
z = standardize(cows)
print("Column means:", np.round(z.mean(axis=0), 2))
print("Column stds:", np.round(z.std(axis=0), 2))

# Tulis kodemu di bawah ini: apa yang menonjol dari sapi k
quiz iconUji dirimu

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

Semua pelajaran di Statistik untuk ML

Latihan sendiri: Compiler Python online