繁体   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