使用Python中的K-Means聚类分析测试数据
- 作者:成都软件开发
- 发表时间:2019-03-24 19:55
- 来源:未知
先决条件: Numpy,OpenCV,matplot-lib
让我们首先使用matplot-lib工具使用多个功能可视化测试数据。
filter_none
编辑
play_arrow
brightness_4
# importing required tools
import numpy as np
from matplotlib import pyplot as plt
# creating two test data
X = np.random.randint(10,35,(25,2))
Y = np.random.randint(55,70,(25,2))
Z = np.vstack((X,Y))
Z = Z.reshape((50,2))
# convert to np.float32
Z = np.float32(Z)
plt.xlabel('Test Data')
plt.ylabel('Z samples')
plt.hist(Z,256,[0,256])
plt.show()
这里'Z'是一个大小为100的数组,值范围从0到255.现在,将'z'重新整形为列向量。当存在多个特征时,它将更有用。然后将数据更改为np.float32类型。
输出:
现在,将k-Means聚类算法应用于与上述测试数据相同的示例,并查看其行为。
涉及的步骤:
1)首先我们需要设置测试数据。
2)定义标准并应用kmeans()。
3)现在分开数据。
4)最后绘制数据。
filter_none
编辑
play_arrow
brightness_4
import numpy as np
import cv2
from matplotlib import pyplot as plt
X = np.random.randint(10,45,(25,2))
Y = np.random.randint(55,70,(25,2))
Z = np.vstack((X,Y))
# convert to np.float32
Z = np.float32(Z)
# define criteria and apply kmeans()
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
ret,label,center = cv2.kmeans(Z,2,None,criteria,10,cv2.KMEANS_RANDOM_CENTERS)
# Now separate the data
A = Z[label.ravel()==0]
B = Z[label.ravel()==1]
# Plot the data
plt.scatter(A[:,0],A[:,1])
plt.scatter(B[:,0],B[:,1],c = 'r')
plt.scatter(center[:,0],center[:,1],s = 80,c = 'y', marker = 's')
plt.xlabel('Test Data'),plt.ylabel('Z samples')
plt.show()
输出:
此示例旨在说明k-means将在何处生成直观可能的集群。
应用:
1)识别癌症数据。
2)学生学业成绩预测。
3)药物活性预测。