可能的重复:
如何在 K 均值算法中优化 K
使用 k 均值聚类时如何确定 k?
根据统计指标,我们可以决定 K。如标准差、均值、方差等,或者
有没有简单的方法来选择K-means算法中的K?
预先感谢纳文
我正在使用 k-means 做一个项目,我的教授建议使用 kdtree。我在 python 中找到了 kdtree 的实现(我知道 scipy 中也有,但我找不到任何示例实现)。我的问题与标题相同,是使用kdtree来加速k-means,还是我错了?
data = [(2,2),(1,0),(2,3),(10,5),(59,8),(4,2)]
tree = KDTree.construct_from_data(data)
nearest = tree.query(query_point=(5,4), t=3)
print nearest
Run Code Online (Sandbox Code Playgroud)
输出:
[(4, 2), (2, 3), (2, 2)]
Run Code Online (Sandbox Code Playgroud) 我有一个用户及其音乐播放的数据集,每个播放都有位置数据。对于每个用户,我想对他们的播放进行聚类,以查看他们是否在给定位置播放音乐。
我计划使用 sci-kit learn k-means 包,但如何让它处理位置数据,而不是默认的欧几里德距离?
一个它工作的例子真的会对我有帮助!
类 sklearn.cluster.KMeans(n_clusters=8, init='k-means++', n_init=10, max_iter=300, tol=0.0001, precompute_distances='auto', verbose=0, random_state=None, copy_x=True, n_jobs =1)
scipy.cluster.vq.kmeans(obs, k_or_guess, iter=20, thresh=1e-05, check_finite=True)
很明显,参数的数量有所不同,也许 sklearn 可以使用更多的参数。
你们中有人尝试过其中一种吗?在分类问题中您是否更倾向于使用其中一种?
我正在寻找 precompute_distances 属性的效用:
class sklearn.cluster.KMeans(n_clusters=8, init=’k-means++’, n_init=10,
max_iter=300, tol=0.0001, precompute_distances=’auto’, verbose=0,
random_state=None, copy_x=True, n_jobs=1, algorithm=’auto’)
Run Code Online (Sandbox Code Playgroud)
它预先计算了哪些距离?
numpy.linalg.norm方法的作用是什么?
在这个 Kmeans 聚类示例中,numpy.linalg.norm函数用于获取移动质心步骤中新质心和旧质心之间的距离,但我无法理解其本身的含义
有人能给我一些关于这个 Kmeans 聚类上下文的想法吗?
向量的范数是什么?
我正在尝试对来自不同公司的产品销售的数据进行聚类。请注意,我将列中的任何字符串映射到数值,以便我可以使用 k 均值聚类。我有以下代码,我在我的数据上做 k-means
FeaturesDf=FeaturesDf[['company_value','Date_value','product_value']]
# Convert DataFrame to matrix
mat = FeaturesDf.values
#Using sklearn
km = sklearn.cluster.KMeans(n_clusters=5)
km.fit(mat)
# Get cluster assignment labels
labels = km.labels_
# Format results as a DataFrame
results = pd.DataFrame(data=labels, columns=['cluster'], index=orderFeaturesDf.index)
Run Code Online (Sandbox Code Playgroud)
我如何绘制一个 k 均值聚类图?我试过
plt.scatter(results.index,results['cluster'], c='black')
plt.plot(results)
Run Code Online (Sandbox Code Playgroud)
但是有没有更好的方法来做到这一点?
我使用 sckit-learn 库将 K-means 聚类与 TF-IDF 结合使用。我知道 K-means 使用距离来创建集群,距离用(x 轴值,y 轴值)表示,但 tf-idf 是单个数值。我的问题是这个 tf-idf 值是如何通过 K-means 聚类转换为 (x,y) 值的。
我很难解释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 ×10
python ×6
scikit-learn ×4
data-mining ×2
python-3.x ×2
data-science ×1
kdtree ×1
nlp ×1
numpy ×1
pandas ×1
scipy ×1
tf-idf ×1