【问题标题】:Parameters of sklearn class methodssklearn类方法的参数
【发布时间】:2020-07-08 14:57:55
【问题描述】:

我有两个小问题。因此,在浏览了大量 sklearn 的文档后,我注意到许多 sklearn 预处理类(例如标准缩放器)都有一个 .transform 方法,该方法采用 X 值并对其进行缩放。但是,为了确保可以在管道中执行此操作,该方法还确保将 y 值也作为输入(尽管需要时忽略)

所以,问题 1:这些方法的文档如下所示:

fit_transform(self, X[, y]).

为什么括号里的y跟前面的逗号一样。是否表示该值不需要作为输入?

问题 2:如果我对问题一的想法是正确的,SelectKBest 的 fit_transform 文档如下所示:

fit_transform(self, X[, y])

在这种情况下,如果没有 y 值作为目标就无法选择 K 个特征,那么 y 怎么可能是可选输入?

【问题讨论】:

  • 关于SelectKBest的第二个问题我无法回答,但是对于第一个问题,是的,通常括号表示参数是可选的。

标签: python scikit-learn


【解决方案1】:

如果您查看文档的explanation

def fit_transform(self, X, y=None, **fit_params):
        """
        Fit to data, then transform it.
        Fits transformer to X and y with optional parameters fit_params
        and returns a transformed version of X.
        Parameters
        ----------
        X : {array-like, sparse matrix, dataframe} of shape \
                (n_samples, n_features)
        y : ndarray of shape (n_samples,), default=None
            Target values.
        **fit_params : dict
            Additional fit parameters.
        Returns
        -------
        X_new : ndarray array of shape (n_samples, n_features_new)
            Transformed array.
        """
        # non-optimized default implementation; override when a better
        # method is possible for a given clustering algorithm
        if y is None:
            # fit method of arity 1 (unsupervised transformation)
            return self.fit(X, **fit_params).transform(X)
        else:
            # fit method of arity 2 (supervised transformation)
            return self.fit(X, y, **fit_params).transform(X)

1 和 2 的答案在最后几行:if y is none,因此它基本上用于无监督转换,例如,如果您在没有目标值 y 的情况下运行“k-means”。

【讨论】:

  • 有道理!谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-08-24
  • 2018-02-08
  • 1970-01-01
  • 2019-12-22
  • 1970-01-01
  • 2021-09-16
  • 2018-07-15
  • 2020-02-05
相关资源
最近更新 更多