问题标签 [nmf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1445 浏览

scikit-learn - 使用 NMF 的主题概率分布

我使用以下代码对我的文档进行主题建模:

我认为 topic_pr 给了我每个文档不同主题的概率分布。换句话说,我预计输出(topic_pr)中的数字将是第 X 行中的文档属于模型中 50 个主题中的每一个的概率。但是,这些数字加起来不等于 1。这些真的是概率吗?如果不是,有没有办法将它们转换为概率?

谢谢

0 投票
0 回答
187 浏览

python-3.x - 如何使用 NMF 处理成分数据(scikit-learn)

我有一个组成数据矩阵 V,它的第 i 行是第 i 个样本的元素比率。求矩阵分解如下:

在此处输入图像描述

我如何使用非负矩阵分解(NMF 或 NNMF)来解决这个问题?

0 投票
3 回答
282 浏览

python - 非负矩阵分解 - IndexError:索引 4 超出轴 1 的范围,大小为 4

这是我将使用的数据集的一部分:

这是我正在使用的代码:

像标题所述,我收到以下错误:

老实说,我不确定如何开始调试它。我使用相同的数据集构建了一个 LDA,没有任何问题。任何帮助将非常感激

0 投票
1 回答
4952 浏览

python - 非常大和非常稀疏的非负矩阵分解

我有一个非常大且稀疏的矩阵(531K x 315K),总细胞数约为 1670 亿。非零值只有 1。非零值的总数约为 45K。是否有有效的 NMF 包来解决我的问题?我知道有几个包,它们只适用于小尺寸的数据矩阵。任何想法都有帮助。提前致谢。

0 投票
1 回答
6211 浏览

scikit-learn - 如何比较 PCA 和 NMF 的预测能力

我想将算法的输出与不同的预处理数据进行比较:NMF 和 PCA。为了以某种方式获得可比较的结果,而不是为每个 PCA 和 NMF 选择相同数量的组件,我想选择解释例如 95% 的保留方差的数量。

我想知道是否可以识别 NMF 的每个组件中保留的方差。

例如,使用 PCA 可以通过以下方式给出: retainedVariance(i) = eigenvalue(i) / sum(eigenvalue)

有任何想法吗?

0 投票
1 回答
56 浏览

r - 自定义KIM特征选择功能

NMF package只有满足以下两个条件的特征被保留时,函数 extractFeatures from才能使用以下方法选择特征:

分数大于\hat{\mu} + 3 \hat{\sigma}, 其中\hat{\mu}\hat{\sigma}分别是分数的中位数和中位数绝对偏差 (MAD);

对基础成分的最大贡献大于所有贡献的中值(即 W 的所有元素)。

如何在 R 中编写仅将第一个标准应用于数据矩阵的函数?

金 H 和朴 H (2007)。“通过交替非负约束最小二乘进行微阵列数据分析的稀疏非负矩阵分解。” Bioinformatics (Oxford, England) , 23 (12), pp. 1495-502。ISSN 1460-2059, , .

0 投票
1 回答
1759 浏览

python - SKLearn NMF 与自定义 NMF

我正在尝试使用非负矩阵分解来构建推荐系统。使用scikit-learn NMF作为模型,我拟合了我的数据,导致了一定的损失(即重建错误)。然后我使用inverse_transform方法为新数据生成推荐。

现在我使用我在 TensorFlow 中构建的另一个模型做同样的事情。训练后的重建误差与之前使用 sklearn 的方法获得的误差接近。但是,潜在因素和最终建议都不是彼此相似的。

我知道的两种方法之间的一个区别是:在 sklearn 中,我使用的是坐标下降求解器,而在 TensorFlow 中,我使用的是基于梯度下降的 AdamOptimizer。其他一切似乎都一样:

  1. 使用的损失函数是 Frobenius 范数
  2. 在这两种情况下都没有正则化
  3. 使用相同数量的潜在维度对相同数据进行测试

我正在使用的相关代码:

1. scikit-learn 方法:

2.TensorFlow方法:

我的问题是,如果这两种方法生成的建议不匹配,那么我如何确定哪些是正确的?根据我的用例,sklearn 的 NMF 给了我很好的结果,但不是 TensorFlow 实现。如何使用我的自定义实现来实现相同的目标?

0 投票
1 回答
2118 浏览

python - 使用 sklearn NMF 组件重建新数据 Vs inverse_transform 不匹配

我在训练数据上使用 scikit-learn NMF 模型拟合了一个模型。现在我使用执行新数据的逆变换

然后,我使用此处幻灯片 15 中的等式,手动从 NMF 模型中获取分量来计算我的数据的逆变换。

我想了解为什么 2 个结果不匹配。在计算逆变换和重建数据时我做错了什么?

示例代码:

注意:虽然这不是描述我的问题的最佳数据,但代码本质上是相同的。result_1在实际情况下,result_2彼此之间的差异也更大。data也是new_data大数组。

0 投票
1 回答
1256 浏览

python - scikit-learn 中 NMF 中的自定义矩阵

我必须用 sklearn 做 NMF,我在这里使用了说明:http: //scikit-learn.org/stable/modules/generated/sklearn.decomposition.NMF.html

我想添加我的初始化矩阵 H,可以选择做 init='custom' 但我不知道如何给他矩阵 H。我试过了:

但它不起作用。

另外,有人知道如何修复我的矩阵并仅更新 W 吗?

编辑:

感谢你的回答

当我选择自定义选项时,我收到错误:

但是,矩阵不包含任何 nan 或无穷大。此外,我为非常小的矩阵做了它,看看它是否很好,它不是:

除非我做“随机”而不是“自定义”,否则我会遇到同样的错误。

你也遇到这种情况吗?为什么会这样?

0 投票
1 回答
3831 浏览

python - Numpy 给出“TypeError:不能将序列乘以‘float’类型的非整数”

有问题的部分是:

A、W、H 是 Panda 数据帧。Beta 和稀疏度是整数。

它们的初始化是: