模型 | 模型特點 | 位于 |
---|---|---|
SVM | 強大的模型,可以用來回歸,預測,分類等,而根據(jù)選取不同的和函數(shù),模型可以是線性的/非線性的 | sklearn.svm |
決策樹 | 基于"分類討論,逐步細化"思想的分類模型,模型直觀,易解釋 | sklearn.tree |
樸素貝葉斯 | 基于概率思想的簡單有效的分類模型,能夠給出容易理解的概率解釋 | sklearn.naive_bayes |
神經(jīng)網(wǎng)絡 | 具有強大的擬合能力,可疑用于擬合,分類等,它有多個增強版本,如遞神經(jīng)網(wǎng)絡,卷積神經(jīng)網(wǎng)絡,自編嗎器等,這些是深度學習的模型基礎 | Keras |
邏輯回歸 | 比較基礎的線性分類模型,很多時候是簡單有效的選擇 | sklearn.linear_model |
隨機森林 | 思想跟決策樹類似,精度通常比決策樹要高,缺點是由于隨機性, 喪失了決策樹的可解釋性 | sklearn.ensemble |
類別 | 包括主要算法 |
---|---|
劃分(分裂)方法 | K-Means算法(K-均值),K-MEDOIDS算法(K-中心點),CLARANS算法(基于選擇的算法) |
層次分析方法 | BIRCH算法(平衡迭代規(guī)約和聚類),CURE算法(代表點聚類),CHAMLEON算法 |
基于密度的方法 | DBSCAN算法(基于密度連接區(qū)域).DENCLUE算法(密度分布函數(shù)),OPTICS算法(對象識別排序) |
基于網(wǎng)絡的方法 | STING(統(tǒng)計信息網(wǎng)絡),CLIOUE算法(聚類高維空間),WAVE-CLUSTER算法(小波變換) |
基于模型的方法 | 統(tǒng)計學方法,神經(jīng)網(wǎng)絡方法 |
算法名稱 | 算法描述 |
---|---|
K-Means | K-均值聚類也稱為快速聚類法,在最小化誤差函數(shù)的基礎上家境數(shù)據(jù)劃分為預訂的類數(shù)K,該算法原理簡單并便于處理處理數(shù)據(jù) |
K-中心點 | K-均值算法對孤立點的敏感性, K-中心點算法不采用簇中對象的平均值作為簇中心,而選用簇中離平均值最近的對象作為簇中心 |
系統(tǒng)聚類 | 系統(tǒng)聚類也稱為多層次聚類,分類的單位由高到低呈樹形結構,且所處的為孩子越低,其包含的對象就越少,但這些對象間的共同特征越多,該聚類的方法只適合小數(shù)據(jù)量的時候使用,數(shù)據(jù)量大的時候速度會非???/td> |
符號 | 含義 | 符號 | 含義 |
---|---|---|---|
k | 聚類簇的個數(shù) | ei | 簇Ei的聚類中心 |
Ei | 第i個簇 | ni | 第i個簇中樣本的個數(shù) |
x | 對象(樣本) |
ID | R(最近一次消費時間間隔) | F(消費頻率) | M(消費總金額) |
---|---|---|---|
1 | 37 | 4 | 579 |
2 | 35 | 3 | 616 |
3 | 25 | 10 | 394 |
4 | 52 | 2 | 111 |
5 | 36 | 7 | 521 |
6 | 41 | 5 | 225 |
7 | 56 | 3 | 118 |
8 | 37 | 5 | 793 |
9 | 54 | 2 | 111 |
10 | 5 | 18 | 1086 |
import pandas as pdk = 3 # 聚類的類別iteration = 500 # 聚類最大循環(huán)次數(shù)data = pd.read_csv("sales_bak.csv",sep=",",header=None, names=["ID", "R", "F", "M"])data_zs = 1.0*(data - data.mean()) / data.std() # 數(shù)據(jù)標準化from sklearn.cluster import KMeansmodel = KMeans(n_clusters=k, n_jobs=4, max_iter=iteration) # 分為k類并發(fā)數(shù)4model.fit(data_zs) # 開始聚類# 打印結果r1 = pd.Series(model.labels_).value # 統(tǒng)計各個類別的數(shù)目r2 = pd.DataFrame(model.cluster_centers_) # 找到聚類中心r = pd.concat([r2,r1], axis=1) # 橫向連接(0時縱向),得到聚類中心對應的類別下的數(shù)目r.columns = list(data.column) + [u'類別數(shù)目'] # 重命名表頭print r# 詳細輸出原始數(shù)據(jù)機器類別r = pd.concat([data, pd.Series(model.labels_, index=data.index)], axis=1) # 詳細輸出每個樣本對應的類別r.columns = list(data.columns) + [u'聚類類別'] # 重命名表頭r.to_excel("sales.xlxs")
對象名 | 函數(shù)功能 | 所屬工具箱 |
---|---|---|
KMeans | K均值聚類 | sklearn.cluster |
AffinityPropahation | 吸引力傳播聚類,2007年提出,幾乎優(yōu)于所有的其他方法,不需要指定聚類數(shù),單運行效率較低 | sklearn.cluster |
MeanShift | 均值漂移聚類 | sklearn.cluster |
SpectralClustring | 譜聚類,具有效果比k均值好,速度比K均值快等特點 | sklearn.cluster |
AgglomerativeClustering | 層次聚類,給出一棵聚類層次樹 | sklearn.cluster |
DBSCAN | 具有噪聲的基于密度的聚類方法 | sklearn.cluster |
BIRCH | 綜合的層次聚類算法,可以處理大規(guī)模數(shù)據(jù)的聚類 | sklearn.cluster |
# -*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding("utf-8")"""使用神經(jīng)網(wǎng)絡算法預測銷量高低"""from sklearn.manifold import TSNEimport pandas as pdk = 3 # 聚類的類別iteration = 500 # 聚類最大循環(huán)次數(shù)data = pd.read_csv("sales_bak.csv", sep="\t",header=None, names=["a", "b", "c"]) # 讀取csv中的數(shù)據(jù)data_zs = 1.0 * (data - data.mean()) / data.std() # 數(shù)據(jù)標準化tsne = TSNE() # 實例化一個TENS空白的對象tsne.fit_transform(data_zs) # 進行數(shù)據(jù)降維tsne = pd.DataFrame(tsne.embedding_,index = data_zs.index) # 轉換數(shù)據(jù)格式import matplotlib.pyplot as pltplt.rcParams['font,sans-serif'] = ['SimHei'] # 用來正常顯示中文標簽plt.rcParams['zxes.unicode_minus'] = False # 用來正常顯示負號d = tsne[r[u'聚類類別'] == 0 ]plt.plot(d[0], d[1], 'r.')d = tsne[r[u'聚類類別'] == 1 ]plt.plot(d[0], d[1], 'go')d = tsne[r[u'聚類類別'] == 2]plt.plot(d[0], d[1], 'b*')plt.show()