python kmean 多维_如何使用KMeans对多维和未知数据进行聚类?

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-21 11:04   472   0

@Nael Alsaleh,你可以用下面的方法运行K-Means:from sklearn.cluster import KMeans

import numpy as np

import matplotlib.pyplot as plt

X=np.load('Mistery.npy')

wx = []

for i in range(1, 11):

kmeans = KMeans(n_clusters = i, random_state = 0)

kmeans.fit(X)

wx.append(kmeans.inertia_)

plt.plot(range(1, 11), wx)

plt.xlabel('Number of clusters')

plt.ylabel('Variance Explained')

plt.show()

FpDKQ.png

注意,X是一个numpy数组。这段代码将创建弯头曲线,在这里您可以选择完美数量的簇,在本例中为5-6个。在

如果您使用的是numpy,您将拥有一个数组:

^{pr2}$

你也可能在处理一个列表

^{3}$

需要转换为array:np.array(X),甚至是Pandas数据帧:

TzIgL.png

您可以通过执行以下操作来检查Pandas数据帧中的列类型:import pandas as pd

pd.DataFrame(X).dtypes

在numpy,x.dtype

将数据转换为数组后,运行:n=5

kmeans=KMeans(n_clusters=n, random_state=20).fit(X)

labels_of_clusters = kmeans.fit_predict(X)

这将得到每个示例所属的集群类的编号。在array([1, 4, 0, 0, 4, 1, 4, 0, 2, 0, 0, 4, 3, 1, 4, 2, 2, 3, 0, 1, 1, 0,

4, 4, 2, 0, 3, 0, 3, 1, 1, 2, 1, 0, 2, 4, 0, 3, 2, 1, 1, 2, 2, 2,

2, 0, 0, 4, 1, 3, 1, 0, 1, 4, 1, 0, 0, 0, 2, 0, 1, 2, 2, 1, 2, 2,

0, 4, 4, 4, 4, 3, 1, 2, 1, 2, 2, 1, 1, 3, 4, 3, 3, 1, 0, 1, 2, 2,

1, 2, 3, 1, 3, 3, 4, 2, 2, 0, 2, 1, 3, 4, 2, 0, 2, 1, 3, 3, 3, 4,

3, 1, 4, 4, 4, 2, 0, 3, 2, 0, 1, 2, 2, 0, 3, 1, 1, 1, 4, 0, 2, 2,

0, 0, 1, 1, 0, 3, 0, 2, 2, 1, 2, 2, 4, 0, 1, 0, 3, 1, 4, 4, 0, 4,

1, 2, 0, 2, 4, 0, 1, 2, 3, 1, 1, 0, 3, 2, 4, 0, 1, 3, 1, 2, 4, 3,

1, 1, 2, 0, 0, 2, 3, 1, 3, 4, 1, 2, 2, 0, 2, 1, 4, 3, 1, 0, 3, 2,

4, 1, 4, 1, 4, 4, 0, 4, 4, 3, 1, 3, 4, 0, 4, 2, 1, 1, 3, 4, 0, 4,

4, 4, 4, 2, 4, 2, 3, 4, 3, 3, 1, 1, 4, 2, 3, 0, 2, 4])

可视化:from sklearn.datasets.samples_generator import make_blobs

X, y_true = make_blobs(n_samples=200, centers=4,

cluster_std=0.60, random_state=0)

kmeans = KMeans(n_clusters=4, random_state=0).fit(X)

cc=kmeans.fit_predict(X)

plt.scatter(X[:, 0], X[:, 1], c=cc, s=50, cmap='viridis')

kK8hM.png

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP