Verileri bölmeden önce ve sonra StandardScaler


20

Kullanırken hakkında okurken StandardScaler, önerilerin çoğu tren / teste veri bölmeden StandardScaler önce kullanmanız gerektiğini söylüyorlardı , ancak çevrimiçi (sklearn kullanarak) yayınlanan bazı kodları kontrol ederken iki büyük kullanım vardı.

1- StandardScalerTüm verilerin kullanılması. Örneğin

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_fit = sc.fit(X)
X_std = X_fit.transform(X)

Veya

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X = sc.fit(X)
X = sc.transform(X)

Ya da sadece

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_std = sc.fit_transform(X)

2- StandardScalerAyrık verilerde kullanma .

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform (X_test)

Verilerimi standartlaştırmak istiyorum, ancak hangi yöntemin en iyisi olduğu konusunda kafam karıştı!

Yanıtlar:


25

Sızan test setinin modelinize dağıtılması hakkındaki bilgileri önlemek amacıyla , # 2 seçeneğine gitmeli ve ölçekleyiciyi yalnızca egzersiz verilerinize takmalı, ardından hem eğitim hem de test setlerini bu ölçekleyiciyle standartlaştırmalısınız. Bölücüyü ayırmadan önce ölçekleyiciyi tam veri kümesine takarak (seçenek # 1), test seti hakkında bilgi, eğitim setini dönüştürmek için kullanılır ve bu da aşağı doğru iletilir.

Örnek olarak, tüm veri kümesinin dağılımını bilmek, aykırı değerleri algılama ve işleme biçiminizi ve modelinizi nasıl parametrelendirdiğinizi etkileyebilir. Verilerin kendisi açıklanmamasına rağmen, verilerin dağılımı hakkında bilgi verilir. Sonuç olarak, test seti performansınız görünmeyen verilerdeki performansın gerçek bir tahmini değildir. Yararlı bulabileceğiniz bazı diğer tartışmalar Çapraz Onaylı hakkındadır .


Aynı şey bir doğrulama seti için de geçerli midir? Başka bir deyişle, Eğitim Setimi Tren ve Doğrulama setlerine ayırırsam, sadece trene uygunluğu öğrenir ve daha sonra hem Doğrulama hem de Test setlerine başvurur muyum? ya da hem Doğrulama hem de Eğitim örneklerini içeren veri kümesinin tamamının uygunluğunu öğreniyor muyum ve bunu yalnızca daha sonra Test kümesine uygulama konusunda endişeleniyorum.
Phil Glau

merhaba - bu doğru, sadece trene uygun - doğrulama veya test değil
redhqs

0

Aşağıdakiler nasıl olur:

from sklearn.preprocessing import StandardScaler

sc = StandardScaler()

X_train = sc.fit_transform(X_train)

X_test = sc.fit_transform (X_test)

Çünkü eğer X_test = sc.transform(X_test), X_testhenüz döndürülmemiş hata döndürür . Yoksa burada bir şey mi kaçırdım?


2
X_test'ten uygunluğu kaldır
tsumaranaina

0

Test verilerinde fit_transform (X_test) yapmamalısınız.
Fit zaten yukarıda meydana geldi.

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform (X_test)

Üzgünüz, bu aşağıda ne bir cevap anlamına geliyordu :)
starsini
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.