StandardScaler Ne Zaman ve Nasıl Kullanılır?
Verilen veri setinin özellikleri kendi aralıkları içerisinde önemli ölçüde dalgalandığında veya çeşitli ölçüm birimlerinde kaydedildiğinde, StandardScaler devreye girer.
Veriler, StandardScaler aracılığıyla ortalama 0'a düşürüldükten sonra 1 varyansına ölçeklendirilir. Ancak verilerin ampirik ortalamasını ve standart sapmayı belirlerken, verilerde bulunan aykırı değerlerin, karakteristik değerlerin spektrumunu azaltan önemli bir etkisi vardır.
Birçok makine öğrenimi algoritması, başlangıç özelliklerindeki bu farklılıklar nedeniyle sorunlarla karşılaşabilir. Mesafeyi hesaplayan algoritmalar için, örneğin veri kümesinin özelliklerinden herhangi birinin büyük veya tamamen farklı aralıklara sahip değerleri varsa, veri kümesinin bu belirli özelliği mesafe hesaplamasını kontrol edecektir.
Sklearn'in StandardScaler fonksiyonu, değerleri farklı aralıklarda bulunan veri seti değişkenlerinin, modelin uyum parametrelerine ve eğitim fonksiyonuna eşit katkı sağlamadığı ve hatta o modelle yapılan tahminlerde yanlılığa yol açabileceği teorisine dayanmaktadır.
Bu nedenle özellikleri makine öğrenme modeline dahil etmeden önce verileri normalleştirmemiz gerekir (μ = 0, σ = 1). Özellik mühendisliğinde standardizasyon, bu potansiyel sorunu çözmek için yaygın olarak kullanılır.
Sklearn kullanarak standartlaştırma
sklearn.preprocessing.StandardScaler(*, copy = True, with_mean = True, with_std = True)
Özelliklerden ortalamayı çıkararak ve bunları birim varyansa ölçeklendirerek, özellikler bu fonksiyon kullanılarak standartlaştırılır.
aşk ve hoşlanma arasındaki fark
Bir özelliğin standart puanını hesaplama formülü z = (x - u) / s'dir; burada u, eğitim özelliğinin ortalamasıdır (veya with_mean = False ise sıfırdır) ve s, numunenin standart sapmasıdır (veya with_std = False ise birdir) ).
Eğitim setindeki özelliklere ilişkin istatistikler hesaplanarak her özelliğe bağımsız olarak merkezleme ve ölçeklendirme uygulanır. Daha sonra, transform() kullanılarak daha sonraki örneklerde kullanılmak üzere fit() yöntemi, ortalamayı ve standart sapmayı saklar.
Parametreler:
Öznitellikler:
StandardScaler Sınıfının Yöntemleri
fit(X[, y, örnek_ağırlık]) | Bu yöntem, daha sonra verileri ölçeklendirmek için kullanılacak ortalamayı ve standart sapmayı hesaplar. |
fit_transform(X[, y]) | Bu yöntem, verinin parametrelerine uyar ve ardından onu dönüştürür. |
get_feature_names_out([input_features]) | Bu yöntem, dönüşüm için özellik adlarını elde eder. |
get_params([derin]) | Bu yöntem belirli bir tahmincinin parametrelerini verir. |
inverse_transform(X[, kopyala]) | Verinin boyutunu orijinal formuna uyacak şekilde küçültür. |
kısmi_fit(X[, y, örnek_ağırlık]) | X'in ortalama ve standart sapması daha sonraki ölçeklendirme için çevrimiçi olarak hesaplanır. |
set_params(**paramlar) | Bu yöntem tahmincinin parametrelerinin değerini ayarlamak için kullanılır. |
transform(X[, kopyala]) | Bu yöntem, sınıfta önceden depolanan parametreleri kullanarak verileri dönüştürür. |
StandardScaler örneği
Öncelikle gerekli kütüphaneleri import edeceğiz. StandardScaler fonksiyonunu kullanmak için Sklearn kütüphanesini içe aktarmamız gerekiyor.
Daha sonra iris veri setini yükleyeceğiz. IRIS veri setini sklearn.datasets kütüphanesinden içe aktarabiliriz.
StandardScaler sınıfından bir nesne yaratacağız.
Bağımsız ve hedef özelliklerin ayrılması.
Dönüşümü veri kümesine uygulamak için fit transform() yöntemini kullanacağız.
Sözdizimi:
object_ = StandardScaler() object_.fit_transform(features)
Yukarıda belirtilen sözdizimini izleyerek başlangıçta StandardScaler() yönteminin bir örneğini oluşturduk. Ek olarak, sağlanan nesneyle birlikte fit_transform() işlevini kullanarak verileri standartlaştırıyoruz.
Kod
# Python program to standardize the data # Importing the required library from sklearn.preprocessing import StandardScaler from sklearn.datasets import load_iris # Loading the dataset X, Y = load_iris(return_X_y = True) # Printing 3 rows of original data print(X[:3, :]) # Creating an object of the StandardScaler class std_scaler = StandardScaler() # Printing 3 rows of the transformed data print(std_scaler.fit_transform(X)[:3, :]) print(std_scaler.mean_)
Çıktı
[[5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2]] [[-0.90068117 1.01900435 -1.34022653 -1.3154443 ] [-1.14301691 -0.13197948 -1.34022653 -1.3154443 ] [-1.38535265 0.32841405 -1.39706395 -1.3154443 ]] [5.84333333 3.05733333 3.758 1.19933333]