sklearn中的transformer和estimator有什么区别?

Son*_*Son 14 scikit-learn

我看到sklearn 文档中提到了Transformerestimator

这两个词有什么区别吗?

Viv*_*mar 15

基本的区别在于:

  • TransformerX以某种方式转换输入数据 ( )。
  • Estimatory使用输入数据 ( X)预测一个新值 (或多个值) ( )。

两者TransformerEstimator应具有fit()可用于训练他们的方法(它们学习数据的某些特性)。签名是:

fit(X, y)
Run Code Online (Sandbox Code Playgroud)

fit() 不返回任何值,只是将学习到的数据存储在对象中。

这里X代表样本(特征向量),y是目标向量(每个对应样本可能有一个或多个值X)。请注意,y在某些不需要它的转换器中可以是可选的,但对于大多数估计器(监督估计器)来说它是强制性的。看看StandardScaler例子。它需要初始数据X来查找数据的均值和标准差(它学习 的特征Xy不需要)。

每个都Transformer应该有一个transform(X, y)函数,它fit()接收输入X并返回一个新的转换版本X(通常应该具有相同数量的样本,但可能具有或可能不具有相同的特征)。

另一方面,Estimator应该有一个predict(X)方法应该y从给定的输出预测值X

scikit-learn 中将有一些类同时实现transform()predict(),例如KMeans,在这种情况下,仔细阅读文档应该可以解决您的疑虑。

  • @VivekKumar ..我刚刚在探索 sklearn 代码后回答了这个问题。你几乎是正确的。但是,不完全是 (2认同)