我是數據科學和 scikit-learn 的新手,所以如果這是一個基本問題,我深表歉意。當我們想在新數據集上訓練時,是否需要創建 sklearn 類的新實例?例如,我目前正在做: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())...先感謝您!
1 回答

慕哥9229398
TA貢獻1877條經驗 獲得超6個贊
不,那不會錯,在這兩種情況下,您首先要適應數據而不是轉換數據。每次使用 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 doc. 所說)并估算平均值。這在 KNNImputer 中也應該同樣有效。
添加回答
舉報
0/150
提交
取消