sklearn:你需要为每组数据创建一个新的转换器实例吗?

我是数据科学和 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())

...

先感谢您!


鸿蒙传说
浏览 80回答 1
1回答

慕哥9229398

不,那不会错,在这两种情况下,您首先要适应数据而不是转换数据。每次使用 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 中也应该同样有效。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python