我最近开始使用python中的SciKit模块进行文档聚类.但是,我很难理解文档聚类的基础知识.
我知道的 ?
我的数据:
目前的挑战:
我浏览了SciKit网页上的代码,它包含了太多我不理解的技术词汇,如果你们有任何代码都有很好的解释或评论请分享.提前致谢.
python cluster-analysis machine-learning unsupervised-learning scikit-learn
在场景 1 中,我有一个多层稀疏自动编码器,它试图重现我的输入,因此我的所有层都与随机启动的权重一起训练。没有监督层,在我的数据上这没有学到任何相关信息(代码工作正常,经过验证,因为我已经在许多其他深度神经网络问题中使用了它)
在场景 2 中,我只是在类似于深度学习的贪婪逐层训练中训练多个自动编码器(但最终没有监督步骤),每一层都在前一个自动编码器的隐藏层的输出上。他们现在将分别学习一些模式(正如我从可视化权重中看到的),但并不像我从单层 AE 中所期望的那样出色。
所以我决定尝试现在连接到 1 个多层 AE 的预训练层是否可以比随机初始化版本表现更好。如您所见,这与深度神经网络中微调步骤的想法相同。
但是在我的微调过程中,所有层的神经元似乎都没有得到改进,而是迅速收敛到一个完全相同的模式,最终什么也没学到。
问题:训练完全无监督的多层重建神经网络的最佳配置是什么?首先分层,然后进行某种微调?为什么我的配置不起作用?
machine-learning neural-network unsupervised-learning autoencoder deep-learning
我很难解释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 是一种随机初始化聚类中心的迭代算法。无论聚类中心如何初始化,Kmeans 算法是否都能保证收敛?为什么?
artificial-intelligence machine-learning k-means unsupervised-learning data-science
我正在使用RBM实现Deep autoencoder.我理解,为了展开网络,我们需要使用编码器的转置权重来解码.但我不确定我们应该为解码器使用哪些偏差.如果有人能为我详细说明或给我发送伪代码链接,我感激不尽.
我有不同酒店的评论数据集。我试图通过酒店的评论找到类似的酒店。所以,我正在使用一种Doc2vec算法来实现这一目标。
Doc2Vec有没有什么方法可以使用 来衡量模型的准确性Gensim,而不是使用 的most_similar()函数来评估结果Gensim?
我想知道,假设初始质心点是随机选择的,那么对于完全相同的数据集,我们是否可以获得大致相同的质心点。
我正在编写一个测试kmeans程序,但它们似乎不匹配。我想知道我在做什么是否正确。
cluster-analysis machine-learning k-means unsupervised-learning
许多真实世界的数据集都以多个视图的形式表示.例如,可以通过面部,指纹,签名和虹膜或可以由其颜色和纹理特征表示的图像来识别人.多视图基本上是从多个来源获得的信息.在机器学习/数据集群/计算机视觉的背景下,处理这种方法的最相关的应用是什么?
我有 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) 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
如何确定竞争学习 ANN 输出层的神经元数量?
该值是否取决于我们需要预测的类别数量?
我面临以下数组:
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]。考虑到计算成本和准确性以及我如何为我的问题实现它,哪种算法最适合我的需求?
k-means ×4
python ×3
scikit-learn ×3
python-3.x ×2
autoencoder ×1
data-science ×1
doc2vec ×1
gensim ×1
rbm ×1