我正在尝试使用scikit学习模块在学校进行机器学习练习我试图重建的练习已经在sklearn ICA文档中给出了一个例子,即使用ICA[http://scikit-learn.org/stable/auto_examples/decomposition/plot_ica_blind_source_separation.html#example-decomposition-plot-ica-blind-source-separation-py]进行盲源分离本例基本上生成3个信号(或声源),然后与添加的噪声合并,然后尝试使用ICA重建原始声源很简单,对吧?但是,我有以下困惑:
禁食到底是什么对于以下代码:
ica = FastICA(n_components=3)
S_rec = ica.fit_transform(X)
什么是“ica”我试着打印这个值,但什么也没有返回。我试图找出“ica”是什么,以便确切地了解ica.fit_transform(x)在做什么。这里对“x”应用了什么转换?
“FastICA”和“FastICA”有什么区别这两个功能也有不同的文档页面:
fastica:http://scikit learn.org/stable/modules/generated/sklearn.decomposition.fastica.html 35; sklearn.decomposition.fastica
空腹:http://ogrisel.github.io/scikit-learn.org/sklearn-tutorial/modules/generated/sklearn.decomposition.fastica.html
我的问题是,它们都为相同的输入数据返回不同的混合矩阵。据我所知,我没有做错任何事。
如果有人能解释或指出我做错了什么,那将是一个很大的帮助。
谢谢您!
最佳答案
禁食到底是什么对于以下代码:
[…]在这种情况下,“ica”是什么?
fastica是一个类,因此对它的调用返回一个oop包装over.fastica函数。换句话说,您将获得对fastica类实例的引用,该实例存储您的初始配置(例如组件数量),并可用于对任何数据执行ica(通过fit/transform)。
我试着打印这个值,但什么也没有返回。我试图找出“ica”是什么,以便确切地了解ica.fit_transform(x)在做什么。这里对“x”应用了什么转换?
ICA找到解矩阵W,然后将其应用于X,从而FITYOXT(x)=x.DOT(W)(+一些白化等,如果您在构造函数中请求它)
“FastICA”和“FastICA”有什么区别这两个功能也有不同的文档页面:
没有区别。FastICA是FastICA的面向对象包装器,仅此而已它实际上calls fastica during fit。
我的问题是,它们都为相同的输入数据返回不同的混合矩阵。据我所知,我没有做错任何事。
fastica不是一个确定性算法,因此每次都可以得到不同的解。