SciKit FastICA 返回什么?FastICA 和 fastica 有什么区别(它们返回不同的值)?

我在学校的机器学习练习中尝试使用 scikit learn 模块。我正在尝试重建的练习已经在 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 重建原始源。很简单,对吗?然而,我有以下困惑:

  1. FastICA 到底返回什么?对于以下代码片段:

    ica = FastICA(n_components=3)S_rec = ica.fit_transform(X)

    在这种情况下,’ica’ 是什么?我尝试打印其值,但什么也没返回。我正在尝试找出 ‘ica’ 是什么,以便理解 ica.fit_transform(X) 到底在做什么。这里对 ‘X’ 应用了什么变换?

  2. ‘FastICA’ 和 ‘fastica’ 有什么区别?这两个函数也有不同的文档页面:

    我的问题是,对于相同的数据输入,它们返回不同的混合矩阵。我认为我没有做错什么,至少在我理解的范围内是这样。

如果有人能解释这些,或者指出我是否做错了什么,将会对我有很大帮助。谢谢!


回答:

FastICA 到底返回什么?对于以下代码片段:[…] 在这种情况下,’ica’ 是什么?

FastICA 是一个类,因此调用它会返回一个对 .fastica 函数的 OOP 封装。换句话说,你得到的是 FastICA 类的一个实例的引用,它存储了你的初始配置(如组件数量),并可以通过 fit/transform 在任何数据上执行 ICA。

我尝试打印其值,但什么也没返回。我正在尝试找出 ‘ica’ 是什么,以便理解 ica.fit_transform(X) 到底在做什么。这里对 ‘X’ 应用了什么变换?

ICA 找到解混矩阵 W,然后将其应用于 X,因此 fit_transform(X) == X.dot(W)(+ 一些白化等,如果你在构造函数中请求了的话)。

‘FastICA’ 和 ‘fastica’ 有什么区别?这两个函数也有不同的文档页面:

没有区别。FastICA 是对 fastica 的面向对象封装,仅此而已。它实际上在 fit 期间调用 fastica

我的问题是,对于相同的数据输入,它们返回不同的混合矩阵。我认为我没有做错什么,至少在我理解的范围内是这样。

FastICA 不是一个确定性算法,因此每次你可能会得到不同的解。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注