Rajshekhar Bodhale | 2017年11月17日 | 機(jī)器學(xué)習(xí) 基于信息技術(shù)的大多數(shù)平臺正在生成大量數(shù)據(jù)。這些數(shù)據(jù)稱為大數(shù)據(jù),它承載了大量的商業(yè)智能。這些數(shù)據(jù)互相交融以滿足不同的目標(biāo)和可能性。應(yīng)用機(jī)器學(xué)習(xí)技術(shù)就很有可能為客戶創(chuàng)造價(jià)值。 問題描述
對應(yīng)想法假設(shè)你有1000個(gè)客戶使用你的平臺并且不斷地產(chǎn)生體量龐大的大數(shù)據(jù),任何關(guān)于這方面的深入見解都將產(chǎn)生新的價(jià)值。 作為Patterns7團(tuán)隊(duì)不斷嘗試的機(jī)器學(xué)習(xí)計(jì)劃和創(chuàng)新事物的一部分,我們對K-Means聚類算法進(jìn)行了實(shí)驗(yàn),這為客戶帶來的價(jià)值非常驚人。 解決方案聚類是將一組數(shù)據(jù)點(diǎn)劃分為少量聚類的過程。在本部分中,你將理解并學(xué)習(xí)到如何實(shí)現(xiàn)K-Means聚類。 K-Means聚類K-Means聚類是一種常用于將數(shù)據(jù)集自動劃分為K個(gè)組的方法,它屬于無監(jiān)督學(xué)習(xí)算法。 K-Means目標(biāo)
業(yè)務(wù)用途這是一種通用算法,可用于任何類型的分組。部分使用案例如下:
k - means聚類算法
示例:在python中對客戶費(fèi)用和發(fā)票數(shù)據(jù)應(yīng)用K-Means集群。對于python,我使用的是Spyder Editor。 下面,我們將展示K-means算法如何處理客戶費(fèi)用和發(fā)票數(shù)據(jù)的例子。 我們有500個(gè)客戶數(shù)據(jù),我們關(guān)注兩個(gè)客戶特征: 客戶發(fā)票,客戶費(fèi)用。 一般來說,只要數(shù)據(jù)樣本的數(shù)量遠(yuǎn)遠(yuǎn)大于特征的數(shù)量,該算法可以用于任意數(shù)量的特征。 步驟1:清理和轉(zhuǎn)換數(shù)據(jù)對于這個(gè)示例,我們已經(jīng)清理和做了一些簡單的數(shù)據(jù)轉(zhuǎn)換。下面是pandas DataFrame的數(shù)據(jù)樣本。 導(dǎo)入庫, 1、numpy 即用于數(shù)學(xué)工具的,以在我們的代碼中包含任何類型的數(shù)學(xué) 2、matplotlib 繪制漂亮的圖表 3、pandas 用于導(dǎo)入數(shù)據(jù)集和管理數(shù)據(jù)集 步驟2: 我們對總費(fèi)用和總發(fā)票應(yīng)用聚類。在X中選擇必需的列。下圖顯示了500個(gè)客戶的數(shù)據(jù)集,總發(fā)票在x軸,總費(fèi)用在y軸。 步驟3:選擇K并運(yùn)行算法選擇K上面描述的算法找到一個(gè)特定的預(yù)先選擇K的集群和數(shù)據(jù)集標(biāo)簽。為了找到數(shù)據(jù)中的集群數(shù)量,用戶需要運(yùn)行K-means聚類算法對K個(gè)值的范圍進(jìn)行聚類并比較結(jié)果。一般來說,沒有確定K的精確值的方法,但是可以使用以下技術(shù)得到精確的估計(jì)值。 通常用于比較不同K值之間的結(jié)果的度量之一是: 數(shù)據(jù)點(diǎn)與它們的集群中心之間的平均距離。 因?yàn)樵黾蛹旱臄?shù)量總是會減少到數(shù)據(jù)點(diǎn)的距離,所以增加K總是會減少這個(gè)度量,當(dāng)K等于數(shù)據(jù)點(diǎn)的數(shù)量時(shí)達(dá)到0的極限。因此,這個(gè)指標(biāo)不能作為唯一的目標(biāo)。相反,將與質(zhì)心的平均距離作為K的函數(shù)繪制出來,并使用“彎頭點(diǎn)”(急劇下降的速度)來粗略地確定K。 用彎頭法求出最優(yōu)簇?cái)?shù)K=3。對于本例,使用Python包scikit-learn進(jìn)行計(jì)算,如下所示: # K-Means Clustering # importing the libraries import numpy as np import matplotlib.pyplot as plt import pandas as pd # importing tha customer Expenses Invoices dataset with pandas dataset=pd.read_csv('Expense_Invoice.csv') X=dataset.iloc[: , [3,2]].values # Using the elbow method to find the optimal number of clusters from sklearn.cluster import KMeans wcss = for i in range(1, 11): kmeans=KMeans(n_clusters=i, init='k-means++', max_iter= 300, n_init= 10, random_state= 0) kmeans.fit(X) wcss.append(kmeans.inertia_) plt.plot(range(1, 11),wcss) plt.title('The Elbow Method') plt.xlabel('Number of clusters K') plt.ylabel('Average Within-Cluster distance to Centroid (WCSS)') plt.show # Applying k-means to the mall dataset kmeans=KMeans(n_clusters=3, init='k-means++', max_iter= 300, n_init= 10, random_state= 0) y_kmeans=kmeans.fit_predict(X) # Visualizing the clusters plt.scatter(X[y_kmeans == 0, 0], X[y_kmeans == 0, 1], s = 100, c = 'red', label='Careful(c1)') plt.scatter(X[y_kmeans == 2, 0], X[y_kmeans == 2, 1], s = 100, c = 'green', label='Standard(c2)') plt.scatter(X[y_kmeans == 1, 0], X[y_kmeans == 1, 1], s = 100, c = 'blue', label='Target(c3)') plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s = 250, c = 'yellow', label='Centroids') plt.title('Clusters of customer Invoices & Expenses') plt.xlabel('Total Invoices ') plt.ylabel('Total Expenses') plt.legend plt.show 步驟4:查看結(jié)果 下面的圖表顯示了結(jié)果。
想要繼續(xù)查看該篇文章更多代碼、鏈接和參考文獻(xiàn)?雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng) 戳鏈接:http://www./page/TextTranslation/691 AI研習(xí)社每日更新精彩內(nèi)容,點(diǎn)擊文末【閱讀原文】即可觀看更多精彩內(nèi)容: Google 啟動新搜索引擎,幫助科學(xué)家找到需要的數(shù)據(jù)集 立志成為數(shù)據(jù)科學(xué)家?掌握以下基礎(chǔ) 當(dāng)機(jī)器學(xué)習(xí)遇上運(yùn)動鞋基于opencv和python的手指識別及追蹤等你來譯: 建立一個(gè)基于深度學(xué)習(xí)的混合型的內(nèi)容協(xié)同電影推薦系統(tǒng) 決策樹:一種像人腦一樣工作的算法 如何用 Dask 數(shù)據(jù)框架運(yùn)行并行數(shù)據(jù)分析 蒙特卡洛模擬航空公司超訂 游戲 AI 入門指南 |
|