标签: unsupervised-learning

使用SciKit在python中记录文档聚类

我最近开始使用python中的SciKit模块进行文档聚类.但是,我很难理解文档聚类的基础知识.

我知道的 ?

  • 文档聚类通常使用TF/IDF完成.这实质上是将文档中的单词转换为向量空间模型,然后输入到算法中.
  • 有许多算法,如k-means,神经网络,层次聚类来实现这一目标.

我的数据:

  • 我正在尝试使用linkedin数据,每个文档都是linkedin配置文件摘要,我想看看类似的工作文档是否聚集在一起.

目前的挑战:

  • 我的数据有大量的摘要描述,当我申请TF/IDF时,最终会变成10000字.有没有适当的方法来处理这种高维数据.
  • K - 均值和其他算法要求我指定no.群集(质心),在我的情况下,我不知道前期群集的数量.我相信这是一个完全无监督的学习.是否有算法可以确定否.集群本身?
  • 我之前从未使用过文档聚类,如果您了解解决此问题的教程,教科书或文章,请随时提出建议.

我浏览了SciKit网页上的代码,它包含了太多我不理解的技术词汇,如果你们有任何代码都有很好的解释或评论请分享.提前致谢.

python cluster-analysis machine-learning unsupervised-learning scikit-learn

3
推荐指数
1
解决办法
5511
查看次数

如何训练和微调完全无监督的深度神经网络?

在场景 1 中,我有一个多层稀疏自动编码器,它试图重现我的输入,因此我的所有层都与随机启动的权重一起训练。没有监督层,在我的数据上这没有学到任何相关信息(代码工作正常,经过验证,因为我已经在许多其他深度神经网络问题中使用了它)

在场景 2 中,我只是在类似于深度学习的贪婪逐层训练中训练多个自动编码器(但最终没有监督步骤),每一层都在前一个自动编码器的隐藏层的输出上。他们现在将分别学习一些模式(正如我从可视化权重中看到的),但并不像我从单层 AE 中所期望的那样出色。

所以我决定尝试现在连接到 1 个多层 AE 的预训练层是否可以比随机初始化版本表现更好。如您所见,这与深度神经网络中微调步骤的想法相同。

但是在我的微调过程中,所有层的神经元似乎都没有得到改进,而是迅速收敛到一个完全相同的模式,最终什么也没学到。

问题:训练完全无监督的多层重建神经网络的最佳配置是什么?首先分层,然后进行某种微调?为什么我的配置不起作用?

machine-learning neural-network unsupervised-learning autoencoder deep-learning

3
推荐指数
1
解决办法
2243
查看次数

解释 K-Means cluster_centers_ 输出

我很难解释cluster_centers_数组输出的结果。

考虑以下 MWE:

from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
import numpy as np

# Load the data
iris = load_iris()
X, y = iris.data, iris.target

# shuffle the data
shuffle = np.random.permutation(np.arange(X.shape[0]))
X = X[shuffle]

# scale X
X = (X - X.mean()) / X.std()

# plot K-means centroids
km = KMeans(n_clusters = 2, n_init = 10)  # establish the model

# fit the data
km.fit(X);

# km centers
km.cluster_centers_
Run Code Online (Sandbox Code Playgroud)
array([[ 1.43706001, -0.29278015,  0.75703227, -0.89603057],
       [ …
Run Code Online (Sandbox Code Playgroud)

k-means python-3.x unsupervised-learning

2
推荐指数
1
解决办法
1620
查看次数

无论聚类中心如何初始化,Kmeans 算法是否都能保证收敛?为什么?

K-means 是一种随机初始化聚类中心的迭代算法。无论聚类中心如何初始化,Kmeans 算法是否都能保证收敛?为什么?

artificial-intelligence machine-learning k-means unsupervised-learning data-science

2
推荐指数
1
解决办法
3653
查看次数

使用RBM的深度自动编码器

我正在使用RBM实现Deep autoencoder.我理解,为了展开网络,我们需要使用编码器的转置权重来解码.但我不确定我们应该为解码器使用哪些偏差.如果有人能为我详细说明或给我发送伪代码链接,我感激不尽.

machine-learning neural-network unsupervised-learning rbm

1
推荐指数
1
解决办法
2488
查看次数

如何衡量 Doc2vec 模型的准确性?

我有不同酒店的评论数据集。我试图通过酒店的评论找到类似的酒店。所以,我正在使用一种Doc2vec算法来实现这一目标。

Doc2Vec有没有什么方法可以使用 来衡量模型的准确性Gensim,而不是使用 的most_similar()函数来评估结果Gensim

unsupervised-learning gensim doc2vec

1
推荐指数
1
解决办法
1551
查看次数

kmeans可重复吗?

我想知道,假设初始质心点是随机选择的,那么对于完全相同的数据集,我们是否可以获得大致相同的质心点。

我正在编写一个测试kmeans程序,但它们似乎不匹配。我想知道我在做什么是否正确。

cluster-analysis machine-learning k-means unsupervised-learning

0
推荐指数
1
解决办法
868
查看次数

多视图聚类的当前最新技术是什么?

许多真实世界的数据集都以多个视图的形式表示.例如,可以通过面部,指纹,签名和虹膜或可以由其颜色和纹理特征表示的图像来识别人.多视图基本上是从多个来源获得的信息.在机器学习/数据集群/计算机视觉的背景下,处理这种方法的最相关的应用是什么?

machine-learning computer-vision unsupervised-learning

0
推荐指数
1
解决办法
112
查看次数

K-Means 聚类性能基准测试

我有 157 维的数据,有 688 个数据点。我想用数据进行聚类。

由于 K-Means 是最简单的算法,因此我决定从这种方法开始。

这是 Sklearn 函数调用:

KMeans(init='k-means++', n_clusters=4, n_init=10), name="k-means++", data=sales)

以下是一些输出指标:

init                  time    inertia   homo   compl  v-meas     ARI     AMI  num_clusters
k-means++             0.06s    38967   0.262   0.816   0.397   0.297   0.250      4
k-means++             0.05s    29825   0.321   0.847   0.466   0.338   0.306      6
k-means++             0.07s    23131   0.411   0.836   0.551   0.430   0.393      8
k-means++             0.09s    20566   0.636   0.817   0.715   0.788   0.621     10
k-means++             0.09s    18695   0.534   0.794   0.638   0.568   0.513     12
k-means++             0.11s    16805   0.773   0.852   0.810   0.916   0.760     14 …
Run Code Online (Sandbox Code Playgroud)

cluster-analysis k-means unsupervised-learning scikit-learn

-1
推荐指数
1
解决办法
1962
查看次数

在对Boltzmann机器执行对比发散时,出现以下错误。我正在使用最新版本的pytorch

class RBM():
    def __init__(self, nv, nh):
        self.W = torch.randn(nh, nv)
        self.a = torch.randn(1, nh)
        self.b = torch.randn(1, nv)
    def sample_h(self, x):
        wx = torch.mm(x, self.W.t())
        activation = wx + self.a.expand_as(wx)
        p_h_given_v = torch.sigmoid(activation)
        return p_h_given_v, torch.bernoulli(p_h_given_v)
    def sample_v(self, y):
        wy = torch.mm(y, self.W)
        activation = wy + self.b.expand_as(wy)
        p_v_given_h = torch.sigmoid(activation)
        return p_v_given_h, torch.bernoulli(p_v_given_h)
    def train(self, v0, vk, ph0, phk):
        self.W += torch.mm(v0.t(), ph0) - torch.mm(vk.t(), phk)
        self.b += torch.sum((v0 - vk), 0)
        self.a += torch.sum((ph0 - phk), 0)
Run Code Online (Sandbox Code Playgroud)

错误: …

python machine-learning python-3.x unsupervised-learning deep-learning

-1
推荐指数
1
解决办法
764
查看次数

竞争学习 ANN 的输出层中的神经元数量

如何确定竞争学习 ANN 输出层的神经元数量?

该值是否取决于我们需要预测的类别数量?

machine-learning unsupervised-learning

-1
推荐指数
1
解决办法
27
查看次数

无监督学习聚类一维数组

我面临以下数组:

y = [1,2,4,7,9,5,4,7,9,56,57,54,60,200,297,275,243]
Run Code Online (Sandbox Code Playgroud)

我想做的是提取得分最高的集群。那将是

best_cluster = [200,297,275,243]
Run Code Online (Sandbox Code Playgroud)

我已经检查了很多关于这个主题的堆栈问题,其中大多数建议使用 kmeans。尽管其他一些人提到 kmeans 可能对一维数组聚类来说是一种矫枉过正。然而,kmeans 是一种监督学习算法,因此这意味着我必须传入质心的数量。由于我需要将此问题推广到其他数组,因此我无法为每个数组传递质心数。因此,我正在考虑实施某种无监督学习算法,该算法能够自行找出集群并选择最高的集群。在数组 y 中,我会看到 3 个集群 [1,2,4,7,9,5,4,7,9],[56,57,54,60],[200,297,275,243]。考虑到计算成本和准确性以及我如何为我的问题实现它,哪种算法最适合我的需求?

python cluster-analysis unsupervised-learning scikit-learn

-2
推荐指数
1
解决办法
5808
查看次数