Sklearn-python araç kutusunda, iki işlev vardır transform
ve fit_transform
hakkında sklearn.decomposition.RandomizedPCA
. İki işlevin açıklaması aşağıdaki gibidir
Ama aralarındaki fark nedir?
Sklearn-python araç kutusunda, iki işlev vardır transform
ve fit_transform
hakkında sklearn.decomposition.RandomizedPCA
. İki işlevin açıklaması aşağıdaki gibidir
Ama aralarındaki fark nedir?
Yanıtlar:
Burada, pca.transform'u yalnızca bir matriste PCA'yı zaten hesapladıysanız kullanabilirsiniz.
In [12]: pc2 = RandomizedPCA(n_components=3)
In [13]: pc2.transform(X) # can't transform because it does not know how to do it.
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-13-e3b6b8ea2aff> in <module>()
----> 1 pc2.transform(X)
/usr/local/lib/python3.4/dist-packages/sklearn/decomposition/pca.py in transform(self, X, y)
714 # XXX remove scipy.sparse support here in 0.16
715 X = atleast2d_or_csr(X)
--> 716 if self.mean_ is not None:
717 X = X - self.mean_
718
AttributeError: 'RandomizedPCA' object has no attribute 'mean_'
In [14]: pc2.ftransform(X)
pc2.fit pc2.fit_transform
In [14]: pc2.fit_transform(X)
Out[14]:
array([[-1.38340578, -0.2935787 ],
[-2.22189802, 0.25133484],
[-3.6053038 , -0.04224385],
[ 1.38340578, 0.2935787 ],
[ 2.22189802, -0.25133484],
[ 3.6053038 , 0.04224385]])
kullanmak .transform
istiyorsanız, dönüşüm kuralını PC'nize öğretmeniz gerekir.
In [20]: pca = RandomizedPCA(n_components=3)
In [21]: pca.fit(X)
Out[21]:
RandomizedPCA(copy=True, iterated_power=3, n_components=3, random_state=None,
whiten=False)
In [22]: pca.transform(z)
Out[22]:
array([[ 2.76681156, 0.58715739],
[ 1.92831932, 1.13207093],
[ 0.54491354, 0.83849224],
[ 5.53362311, 1.17431479],
[ 6.37211535, 0.62940125],
[ 7.75552113, 0.92297994]])
In [23]:
Özellikle PCA dönüşümü, X matrisinin PCA ayrışması ile elde edilen temel değişikliğini Z matrisine uygular.
fit_transform
iki fonksiyonların birleşimidir fit
ve transform
?
Gelen tahmincisi api scikit-öğrenme ,
fit()
: eğitim verilerinden öğrenme modeli parametreleri oluşturmak için kullanılır
transform()
: fit()
yöntemden üretilen, dönüştürülmüş veri kümesi oluşturmak için modele uygulanan parametreler .
fit_transform()
: Kombinasyonu fit()
ve transform()
aynı veri kümesi üzerinde API
Ödeme Bölüm-4 bundan kitaptan gelen ve cevap Stack Exchange fazla netlik için
Bu yöntemler, belirli bir verinin ölçeğini ortalamak / özellik ölçeğini oluşturmak için kullanılır. Temel olarak, belirli bir aralıktaki verileri normalleştirmeye yardımcı olur
Bunun için Z-skor yöntemini kullanıyoruz.
Bunu eğitim veri setinde yapıyoruz.
1. Fit (): Yöntem, μ ve σ parametrelerini hesaplar ve bunları dahili nesneler olarak kaydeder.
2. Dönüştür (): Bu hesaplanan parametreleri kullanan yöntem, dönüşümü belirli bir veri kümesine uygular.
3. Fit_transform (): veri kümesinin dönüşümü için fit () ve transform () yöntemini birleştirir.
Özellik Ölçeklendirme / Standardizasyon için kod pasajı (train_test_split'ten sonra).
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit_transform(X_train)
sc.transform(X_test)
Test setimize aynı (eğitim seti aynı iki parametre μ ve σ (değerler)) parametre dönüşümünü uygularız.
Yöntemler arasındaki genel fark:
Hem fit_transform hem de transform, aynı Belge terimli matrisi döndürür.
İşte .fit()
& arasındaki temel fark .fit_transform()
:
Modele uyacak iki nesne / parametreye (x, y) sahip olan ve neyi tahmin edeceğimizi bildiğimiz yerde çalıştırmak için model yapmaktır.
Denetimsiz Öğrenmede, neyi tahmin edeceğimizi bilmediğimiz bir yerde tek bir nesneye / parametreye (x) sahip olmaktır.
Layman'ın terimleriyle, fit_transform, bir miktar hesaplama yapmak ve sonra dönüştürme yapmak anlamına gelir (örneğin, bazı verilerden sütunların araçlarını hesaplamak ve ardından eksik değerleri değiştirmek). Yani eğitim seti için hem hesaplamanız hem de dönüşüm yapmanız gerekir.
Ancak test seti için Makine öğrenimi, eğitim seti sırasında öğrenilenlere dayalı olarak tahmin uygular ve bu nedenle hesaplamaya gerek kalmaz, yalnızca dönüşümü gerçekleştirir.
Tüm yanıtlar oldukça iyi, ancak her yöntemi NEDEN ve NE ZAMAN kullandığına vurgu yapacağım.
fit (), dönüştür (), fit_transform ()
Genellikle veri kümesi olarak (X, y) ile denetlenen bir öğrenme sorunumuz vardır ve bunu eğitim verilerine ve test verilerine böleriz:
import numpy as np
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y)
X_train_vectorized = model.fit_transform(X_train)
X_test_vectorized = model.transform(X_test)
Bir jetonlaştırıcı yerleştirdiğimizi hayal edin, eğer X'i sığdırırsak, test verilerini jetonlaştırıcıya dahil ediyoruz, ancak bu hatayı birçok kez gördüm!
Doğru olan YALNIZCA X_train'e uymaktır , çünkü "gelecekteki verilerinizi" bilmediğiniz için X_test verilerini hiçbir şeyi sığdırmak için kullanamazsınız!
Daha sonra test verilerinizi dönüştürebilirsiniz, ancak ayrı ayrı, bu yüzden farklı yöntemler vardır.
Son ipucu: X_train_transformed = model.fit_transform(X_train)
eşdeğerdir:
X_train_transformed = model.fit(X_train).transform(X_train)
ancak ilki daha hızlıdır.
"Model" dediğim şeyin genellikle bir ölçekleyici, bir tfidf transformatörü, başka tür bir vektörleştirici, bir jetonlaştırıcı olacağını unutmayın ...
est.fit_transform(X)
her zaman eşdeğerdirest.fit(X).transform(X)
, ancak genellikle daha hızlıdır.