可能的重复:
一维数字数组聚类
我有一个数字数组,例如[1, 20, 300, 45, 5, 60, 10, 270, 3]
. 根据邻近度将这些数字分组在一起的有效算法是什么?在这种情况下,我期望类似[1, 3, 5]
,[20, 45, 60]
和 的东西[270, 300]
。
language-agnostic algorithm math statistics cluster-analysis
在 R 中执行 k 均值后是否可以获得每个簇内的实际观测值?
例如,在我的分析之后,我有 2 个聚类,我想在每个聚类中找到精确的观察结果,这可能吗?
我有 1000 多个关键字的列表,我想按相似性将它们组合在一起。
例如:
我希望将“家具”和“椅子”这两个词组合在一起。
我知道我可以做到这一点的一种方法是指定一些预先选择的“质心”术语,然后计算每个术语的 Levenshtein 距离并使用 kmeans 对它们进行聚类。
但我有兴趣了解的是,如何在不预先指定“椅子”和“家具”等质心术语的情况下做到这一点。
谢谢。
这是我在kmeans之前的工作-
> sort(table(mydata))
mydata
23 7 9 4 10 3 5 8 2 1
1 3 3 4 5 6 6 6 7 9
km <- kmeans(mydata, centers = 10)
Run Code Online (Sandbox Code Playgroud)
在kmeans之后-
> sort(table(km$cluster))
km$cluster
1 6 7 3 5 2 4 10 8 9
1 3 3 4 5 6 6 6 7 9
Run Code Online (Sandbox Code Playgroud)
显然,我的所有1都存储在群集9中,所有2都存储在群集8中,依此类推。
我可以使用R查找特定数字所属的群集吗?说,找到我的1属于哪个集群?
我已经应用 Doc2vec 将文档转换为向量。之后,我在聚类中使用向量并找出与每个集群的质心最近/最相似的 5 个文档。现在我需要找到这些文档中最主要或最重要的术语,以便我可以弄清楚每个集群的特征。我的问题是有什么方法可以找出 Doc2vec 中文档的最主导或最相似的术语/单词。我正在使用 python 的 gensim 包来实现 Doc2vec
我是 Python 初学者。现在,我试图了解sklearn.cluster.KMeans中的参数n_init是什么
从文档中:
n_init:整数,默认值:10
k-means 算法使用不同质心种子运行的次数。最终结果将是n_init连续运行中惯性方面的最佳输出。
起初,我认为这意味着代码运行的次数,直到我发现这个有用的问题,然后我意识到这就是max_iter所做的。
参数n_init到底有什么作用?我真的不明白。
python cluster-analysis machine-learning k-means scikit-learn
我目前正在使用kmodes
python 包对包含分类参数的数据执行无监督学习。
我需要能够保存这些模型,因为我计划在生产管道中使用它,如果管道中的某些东西出现故障,我希望能够“回滚”到较旧的工作模型。
我可以使用任何文件格式,包括HDF5 格式。我也不喜欢kmodes
,但是我确实需要能够处理混合的分类和数字数据。
我似乎找不到任何可以将完整kmodes
模型保存到磁盘的方法,但我希望我只是遗漏了一些明显的东西。请提供任何可能的选择。
在使用高斯混合模型之前进行特征缩放很重要吗?以及为什么当我们使用概率来获取集群的参数(均值和协方差矩阵)时它很重要。另一方面,我知道在使用 K 均值之前标准化我们的数据很重要,因为这里的聚类取决于点和聚类之间的 Ecludiane 距离,如果一个特征具有较大的值,它将主导这个多维距离计算
我正在使用 sklearn 的内置数据集 iris 进行聚类。在 KMeans 中,我预先设置了簇的数量,但对于 DBSCAN 来说并非如此。如果不提前设置簇数,如何训练模型?
我试过:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#%matplotib inline
from sklearn.cluster import DBSCAN,MeanShift
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split,KFold,cross_val_score
from sklearn.metrics import accuracy_score,confusion_matrix
iris = load_iris()
X = iris.data
y = iris.target
dbscan = DBSCAN(eps=0.3,min_samples=10)
dbscan.fit(X,y)
Run Code Online (Sandbox Code Playgroud)
我已经被困住了!
python cluster-analysis machine-learning dbscan scikit-learn
我在形状为[1000,]的一维数组中有一些数据,其中包含1000个元素。我对该数据应用了k均值聚类,聚类数为10。应用k均值后,我为每个聚类得到了形状为[1000]的聚类标签(id),形状为[10]的质心。标签将0到9之间的值分配给1000个元素中的每个元素。但是,我希望每个元素都显示其质心,而不是其簇ID。我该如何实现?
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=10)
kmeans.fit(data) #data is of shape [1000,]
#learn the labels and the means
labels = kmeans.predict(data) #labels of shape [1000,] with values 0<= i <= 9
centroids = kmeans.cluster_centers_ #means of shape [10,]
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我想要[1000,]数组中每个元素的质心,而不是其簇ID。