簡體   English   中英

sklearn:你需要為每組數據創建一個新的transformer實例嗎?

[英]sklearn: Do you need to create a new instance of a transformer for each set of data?

我是數據科學和 scikit-learn 的新手,所以如果這是一個基本問題,我深表歉意。 當我們想在新數據集上進行訓練時,是否需要創建 sklearn class 的新實例? 例如,我目前正在做:

transformer = PowerTransformer()
transformed1 = transformer.fit_transform(data1.to_numpy())

transformer = PowerTransformer()
transformed2 = transformer.fit_transform(data2.to_numpy()) 
...

我有多個要轉換的數據集,以便可以運行KNNImputer (再次使用這種重復聲明性方法)。

我讀到.fit方法在內部存儲了用於擬合傳入數據的 lambda,但是存儲的 lambda 是否會被每次調用.fit覆蓋,或者它們是否受到新數據擬合的影響?

這樣做會不會錯:

transformer = PowerTransformer()
transformed1 = transformer.fit_transform(data1.to_numpy())
transformed2 = transformer.fit_transform(data2.to_numpy())
...

先感謝您!

不,這不會錯,在這兩種情況下,您首先要適應數據,然后再對其進行轉換。 每次使用 fit 它都會覆蓋現有的。 這是一個例子:

a = np.array([[1, 3], 
              [np.nan, 2], 
              [5, 9]])

c = np.array([[3, 4], 
              [6, 12], 
              [8, np.nan]])

imp = SimpleImputer(strategy="mean")
a1 = imp.fit_transform(a)
c1 = imp.fit_transform(c)

現在讓我們看看輸出:

a1: array([[1., 3.],
           [3., 2.],
           [5., 9.]])

c1: array([[ 3.,  4.],
           [ 6., 12.],
           [ 8.,  8.]])

取兩列的平均值(如 sklearn 文檔所說)並估算平均值。 這在 KNNImputer 中也應該同樣有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM