Menu
CoddyTech

StandardScaler

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

Model harus menskalakan setiap sampel baru dengan cara yang sama seperti saat menskalakan data latihnya. StandardScaler dari scikit-learn menstandarkan data dan mengingat caranya:

Diagram: 4 pekerjaan sebelumnya seorang pembersih jendela, X_train, melalui fit ke scaler yang mengingat mean_ 8 dan 22 serta scale_ 4.47 dan 9.72. Pekerjaan baru, 8 dan 30, melalui transform menggunakan angka-angka tersebut, lalu menghasilkan 0.00 dan 0.82

Dalam kode, setiap pekerjaan memiliki jumlah jendela yang dibersihkan dan waktu yang dibutuhkan dalam menit:

from sklearn.preprocessing import StandardScaler

X_train = np.array([[2, 8], [10, 25], [6, 20], [14, 35]])
scaler = StandardScaler()
scaler.fit(X_train)
X_new = np.array([[8, 30]])  # satu sampel: tabel dengan satu baris
print(np.round(scaler.transform(X_new), 2))

Ini mencetak:

[[0.   0.82]]

fit mempelajari rata-rata dan simpangan baku setiap kolom (dibagi dengan n, seperti np.std), yang disimpan di scaler.mean_ dan scaler.scale_. transform menerapkannya.

Jangan pernah melakukan fit pada data baru: data itu akan menjadi rata-ratanya sendiri dan menghasilkan [[0. 0.]]. Pada data training, fit_transform melakukan keduanya dalam satu pemanggilan.

challenge icon

Tantangan

Sedang

Penyortir belajar dari avokad dalam X_train: berat, tingkat kekerasan, dan jumlah hari sejak panen. Program membaca avokad baru ke dalam tabel satu baris new_avocado, tetapi penskalaan awal mencetak [[0. 0. 0.]] untuk setiap avokad.

  1. Perbaiki: skalakan avokad baru menggunakan rerata dan std data pelatihan.
  2. Hitung pengukurannya yang berjarak lebih dari 2 std dari rerata data pelatihan, ke arah mana pun, lalu cetak seperti di bawah ini.

Untuk batch lain:

New avocado: [[2.98 0.   0.09]]
1 of 3 measurements are more than 2 std from the training avocados

Coba sendiri

import numpy as np
from sklearn.preprocessing import StandardScaler

# Alpukat untuk pelatihan, satu baris per alpukat: berat dalam gram, tingkat kekerasan dari 1 hingga 10, jumlah hari sejak panen
X_train = np.array([[210, 8, 2],
                    [185, 5, 6],
                    [240, 7, 3],
                    [170, 3, 9],
                    [225, 6, 5],
                    [195, 4, 7]])
# Alpukat baru di ban berjalan
weight = float(input())
firmness = float(input())
days = float(input())
new_avocado = np.array([[weight, firmness, days]])

# Ini mencetak [[0. 0. 0.]] untuk setiap alpukat: perbaiki
scaler = StandardScaler()
scaled = scaler.fit_transform(new_avocado)
print("New avocado:", np.round(scaled, 2))

# Tulis kodemu di bawah ini
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