python3機器學習經典實例-第四章聚類19

實例1-探索股票數據的模式

讓我們看看如何用無監督學習進行股票數據分析。假設我們並不知道股票市場有多少集群,因此需要用一種近鄰傳播聚類(Affinity Propagation)演算法來集群。這種演算法會找出數據中每個集群的代表性數據點,會找到數據點間的相似性度量值,並把所有數據點看成潛在的代表性數據點,也稱為取樣器(exemplar)。更多內容可參考 http://www.cs.columbia.edu/~delbert/docs/DDueckthesis_small.pdf 本例將分析在特定時間內的股票市場變化,我們的目標是根據股價的波動找出公司行為的相似性。

雅虎財務 API 已停止您將無法從它獲取數據了因此, quotes_historical_yahoo_函數已過時.-

所以本例將暫停修改。

實例2-建立客戶細分模型

無監督學習的主要應用場景之一就是市場細分。雖然在我們開發市場時獲取的數據都沒有標記,但是將市場細分成不同類型至關重要,這樣人們就可以關注各自的市場類型了。市場細分對廣告投放、庫存管理、配送策略的實施、大眾傳媒等市場行為都非常有用。下面把無監督學習應用到一個市場細分的案例上,看看效果如何。我們將與一個零售商和他的客戶打交道,採用archive.ics.uci.edu/ml/的數據進行分析。數據表裡包含了不同類型商品的銷售數據,目標是找到數據集群,從而為客戶提供最優的銷售和分銷策略。

修改內容

修改print後面添加括弧修改file_reader = csv.reader(open(input_file, r), delimiter=,)

詳細步驟代碼

  • 導入必要的代碼

import csvimport numpy as npfrom sklearn.cluster import MeanShift, estimate_bandwidthimport matplotlib.pyplot as plt

  • 從wholesale.csv文件中載入輸入數據

# Load data from input fileinput_file = wholesale.csvfile_reader = csv.reader(open(input_file, r), delimiter=,)X = []for count, row in enumerate(file_reader): if not count: names = row[2:] continue X.append([float(x) for x in row[2:]])# Input data as numpy arrayX = np.array(X)

  • 和前面的內容一樣,建立一個均值漂移聚類模型:

# Estimating the bandwidth bandwidth = estimate_bandwidth(X, quantile=0.8, n_samples=len(X))# Compute clustering with MeanShiftmeanshift_estimator = MeanShift(bandwidth=bandwidth, bin_seeding=True)meanshift_estimator.fit(X)labels = meanshift_estimator.labels_centroids = meanshift_estimator.cluster_centers_num_clusters = len(np.unique(labels))print ("
Number of clusters in input data =", num_clusters)print ("
Centroids of clusters:")print ( .join([name[:3] for name in names]))for centroid in centroids: print ( .join([str(int(x)) for x in centroid]))

結果輸出out

Number of clusters in input data = 8Centroids of clusters:Fre Mil Gro Fro Det Del9632 4671 6593 2570 2296 124840204 46314 57584 5518 25436 424116117 46197 92780 1026 40827 294422925 73498 32114 987 20070 903112151 29627 18148 16745 4948 855036847 43950 20170 36534 239 4794332717 16784 13626 60869 1272 56098565 4980 67298 131 38102 1215

上圖所示描繪的是milk(牛奶)和groceries(雜貨)兩個特徵的聚類中心,其中milk特徵值對應X軸坐標,groceries特徵值對應Y軸坐標。


推薦閱讀:

Hulu機器學習問題與解答系列 | 十六:經典優化演算法
BOW 演算法,被CNN 打爆之前的王者
發布Compute.scala,多維數組上的科學計算庫
機器學習不僅僅是模型

TAG:機器學習 | Python |