聚类分析
聚类分析(cluster analysis):以相似性为基础把相似的对象通过静态分类的方法分成不同的组别或更多的子集。特性:基于相似性,有多个聚类中心。
Kmeans算法:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。
实例1
from numpy import vstack
from scipy.cluster.vq import kmeans,vq
list1=[88.0,64.0,96.0,85.0]
list2=[92.0,99.0,95.0,94.0]
list3=[91.0,87.0,99.0,95.0]
list4=[78.0,99.0,97.0,81.0]
list5=[88.0,78.0,98.0,84.0]
list6=[100.0,95.0,100.0,92.0] #六位同学的成绩
'''vstack:堆积成绩数据'''
data = vstack((list1,list2,list3,list4,list5,list6))
centroids,_ = kmeans(data,2) #kmeans函数返回的centroids就是聚类中心;2表示分类的类别数目
result,_ = vq(data,centroids) #vq函数用来获取每一位同学所属的类
print(result)
实例2
- 按相邻两天的收盘价涨跌规律对2014年第3季度(7-9月)构成道琼斯工业指数的30只股票聚类
from numpy import vstack
from scipy.cluster.vq import kmeans,vq
from matplotlib.finance import quotes_historical_yahoo_ochl
from datetime import datetime
start = datetime(2014,7,1)
end = datetime(2014,9,30)
listDji = ['AXP','BA','CAT','CSCO','CVX','DD','DIS','GE',
'GS','HD','IBM', 'INTC','JNJ','JPM','KO','MCD','MMM','MRK',
'MSFT','NKE','PFE','PG','T','TRV', 'UNH','UTX','V','VZ','WMT','XOM'] #30家公司代号
'''初始化两个二维数组'''
quotes = [ [0 for col in range(90)] for row in range(30)]
listTemp = [ [0 for col in range(90)] for row in range(30)]
for i in range(30):
quotes[i] = quotes_historical_yahoo_ochl(listDji[i], start, end) #摘录数据,放入quotes
days = len(quotes[0])
for i in range(30):
for j in range(days-1):
if (quotes[i][j][2] and quotes[i][j+1][2] and (quotes[i][j+1][2]>=quotes[i][j][2])): #比较前后两天的收盘价
listTemp[i][j] = 1.0
else:
listTemp[i][j] = -1.0
data = vstack(listTemp)
centroids,_ = kmeans(data,4) #float or double is supported
result,_= vq(data,centroids)
print(result)