zep*_*lee 23 machine-learning scikit-learn
在scikit-learn中,所有估算器都有一个fit()方法,并且根据它们是受监督还是无监督,它们也有一个predict()或一个transform()方法.
我正在为无监督的学习任务编写变换器,并且想知道是否有经验法则在哪里放置哪种学习逻辑.官方文件在这方面不是很有帮助:
fit_transform(X, y=None, **fit_params)
适合数据,然后转换它.
在这种情况下,拟合数据和转换数据意味着什么?
inv*_*ion 39
拟合查找将用于转换数据的模型的内部参数.转换将参数应用于数据.您可以将模型拟合到一组数据,然后在完全不同的集合上对其进行转换.
例如,您将线性模型拟合到数据以获得斜率和截距.然后使用这些参数转换(即映射)xto的新值或现有值y.
fit_transform 只是对相同的数据执行这两个步骤.
一个scikit示例:您适合数据以查找主要组件.然后转换数据以查看它如何映射到这些组件:
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X = [[1,2],[2,4],[1,3]]
pca.fit(X)
# This is the model to map data
pca.components_
array([[ 0.47185791, 0.88167459],
[-0.88167459, 0.47185791]], dtype=float32)
# Now we actually map the data
pca.transform(X)
array([[-1.03896057, -0.17796634],
[ 1.19624651, -0.11592512],
[-0.15728599, 0.29389156]])
# Or we can do both "at once"
pca.fit_transform(X)
array([[-1.03896058, -0.1779664 ],
[ 1.19624662, -0.11592512],
[-0.15728603, 0.29389152]], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
正如其他答案所解释的那样,fit 不需要做任何事情(除了返回变压器对象之外)。在那里,所有变压器都具有相同的接口,并且可以很好地与管道之类的东西一起工作。
当然,某些变压器需要fit实际执行操作的方法(认为tf-idf,PCA ...)。
该transform方法需要返回转换后的数据。
fit_transform是链接拟合和变换操作的便捷方法。您可以免费获得(!),方法是从中派生自定义的转换器类TransformerMixin并实现fit和transform。
希望这可以澄清一下。
| 归档时间: |
|
| 查看次数: |
13066 次 |
| 最近记录: |