Menu
CoddyTech

StandardScaler

Coddy'nin Machine Learning Journey'sinin Makine Öğrenimi için İstatistik bölümünün bir parçası. Ders 50 / 64.

Bir model, her yeni örneği eğitim verilerini ölçeklendirdiği şekilde ölçeklendirmelidir. scikit-learn'ün StandardScaler aracı verileri standartlaştırır ve nasıl yaptığını hatırlar:

Bir diyagram: Bir cam temizleyicinin geçmişteki 4 işi, X_train, fit işleminden geçerek mean_ 8 ve 22 ile scale_ 4.47 ve 9.72 değerlerini hatırlayan bir ölçekleyiciye ulaşır. Yeni bir iş, 8 ve 30, bu sayıları kullanan transform işleminden geçer ve sonuç 0.00 ve 0.82 olur

Kodda her iş için temizlenen pencere sayısı ve harcanan dakika bulunur:

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]])  # bir örnek: tek satırlı bir tablo
print(np.round(scaler.transform(X_new), 2))

Bu, şunu yazdırır:

[[0.   0.82]]

fit her sütunun ortalamasını ve standart sapmasını (np.std gibi n'ye bölerek) öğrenir; bunlar scaler.mean_ ve scaler.scale_ içinde saklanır. transform bunları uygular.

Yeni verilere asla fit uygulamayın: verinin ortalaması kendisi olur ve [[0. 0.]] değerine dönüşür. Eğitim verilerinde fit_transform ikisini tek bir çağrıda yapar.

challenge icon

Görev

Orta

Bir sınıflandırıcı, X_train içindeki avokadolardan öğrendi: ağırlık, sertlik ve hasattan bu yana geçen gün sayısı. Program yeni bir avokadoyu tek satırlık new_avocado tablosuna okuyor, ancak başlangıç kodunun ölçeklendirmesi her avokado için [[0. 0. 0.]] yazdırıyor.

  1. Düzelt: yeni avokadoyu eğitim ortalamaları ve standart sapmalarıyla ölçeklendir.
  2. Ölçümlerinden eğitim ortalamasından her iki yönde de 2 standart sapmadan fazla olanları say ve aşağıdaki gibi yazdır.

Başka bir parti için:

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

Kendin dene

import numpy as np
from sklearn.preprocessing import StandardScaler

# Eğitim avokadoları, her biri bir satırda: gram cinsinden ağırlık, 1 ile 10 arasında sertlik, hasattan bu yana geçen gün sayısı
X_train = np.array([[210, 8, 2],
                    [185, 5, 6],
                    [240, 7, 3],
                    [170, 3, 9],
                    [225, 6, 5],
                    [195, 4, 7]])
# Bant üzerindeki yeni bir avokado
weight = float(input())
firmness = float(input())
days = float(input())
new_avocado = np.array([[weight, firmness, days]])

# Bu, her avokado için [[0. 0. 0.]] yazdırıyor: düzeltin
scaler = StandardScaler()
scaled = scaler.fit_transform(new_avocado)
print("New avocado:", np.round(scaled, 2))

# Kodunuzu aşağıya yazın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Makine Öğrenimi için İstatistik bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi