sklearn:您是否需要为每组数据创建一个新的transformer实例?

2024-10-08 18:31:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我对数据科学和scikit是新手,如果这是一个基本问题,我很抱歉。当我们想在一个新的数据集上进行训练时,是否需要创建一个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())
...

提前谢谢你


Tags: to数据方法lambdanumpytransform科学scikit
1条回答
网友
1楼 · 发布于 2024-10-08 18:31:40

不,这不会错,在这两种情况下,你都是先拟合数据,然后转换数据。每次使用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.所述)并估算平均值。这在KNIMPUTER中也应该是一样的

相关问题 更多 >

    热门问题