Python高級數據處理與可視化(一)---- 聚類分析


1. 聚類分析

  聚類分析(cluster analysis):以相似性為基礎把相似的對象通過靜態分類的方法分成不同的組別或更多的子集。特性:基於相似性,有多個聚類中心。

  K-Means:「K-均值」算法表示以空間中K個點為中心進行聚類,對最靠近他們的對象歸類。

    

In [47]: from numpy import vstack

In [48]: from scipy.cluster.vq import kmeans,vq

In [49]: list1 = [88.0,74.0,96.0,85.0]

In [50]: list2 = [92.0,99.0,95.0,94.0]

In [51]: list3 = [91.0,87.0,99.0,95.0]

In [52]: list4 = [78.0,99.0,97.0,81.0]

In [53]: list5 = [88.0,78.0,98.0,84.0]

In [54]: list6 = [100.0,95.0,100.0,92.0]

In [55]: data = vstack((list1,list2,list3,list4,list5,list6))  # Stack arrays in sequence vertically (row wise).Take a sequence of arrays and stack them vertically to make a single array. 

In [61]: centroids,_ = kmeans(data,2)  # Performs k-means on a set of observation vectors forming k clusters.

In [62]: result,_ = vq(data,centroids)  # Assign codes from a code book to observations.

In [63]: result
Out[63]: array([1, 0, 0, 0, 1, 0])
根據成績進行聚類分析

  numpy.vstack: https://docs.scipy.org/doc/numpy/reference/generated/numpy.vstack.html

  scipy.cluster.vq.kmeans: https://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.vq.kmeans.html#scipy.cluster.vq.kmeans

  scipy.cluster.vq.vq: https://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.vq.vq.html

In [88]: from numpy import vstack

In [89]: from scipy.cluster.vq import kmeans,vq

In [90]: from matplotlib.finance import quotes_historical_yahoo_ochl

In [91]: from datetime import datetime,date

In [92]: start = datetime(2016,1,1)

In [93]: end = datetime(2016,6,30)

In [94]: 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']

In [105]: quote = [[0 for col in range(180)] for row in range(30)]

In [106]: listTemp = [[0 for col in range(180)] for row in range(30)]

In [107]: for i in range(30):
     ...:     quotes[i] = quotes_historical_yahoo_ochl(listDji[i],start,end)

In [108]: days = len(quotes[0])

In [116]: 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      

In [117]: data = vstack(listTemp)

In [118]: centroids,_ = kmeans(data,4)

In [119]: result,_ = vq(data,centroids)

In [120]: result
Out[120]: 
array([2, 0, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 1, 1, 2, 1, 0, 0,
       0, 1, 2, 2, 0, 0, 0])
按相鄰兩天收盤價漲跌規律對30支股票聚類

  查看聚類出的四類的結果:dfDji[(dfDji.result==1)]

2. Matplotlib繪圖基礎

3. Matplotlib圖像屬性控制

4. Pandas作圖

5. 數據存取

6. Python的理工類應用

7. Python的人文社科類應用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM