利用python的KMeans和PCA包實現聚類演算法
題目: 透過給出的駕駛員行為資料(trip.csv),對駕駛員不同時段的駕駛型別進行聚類,聚成普通駕駛型別,激進型別和超冷靜型3類 。 利用Python的scikit-learn包中的Kmeans演算法進行聚類演算法的應用練習。並利用scikit-learn包中的PCA演算法來對聚類後的資料進行降維,然後畫圖展示出聚類效果。透過調節聚類演算法的引數,來觀察聚類效果的變化,練習調參。
資料介紹: 選取某一個駕駛員的經過處理的資料集trip.csv,將該駕駛人的各個時間段的特徵進行聚類。(注:其中的driver 和trip_no 不參與聚類)
欄位介紹: driver :駕駛員編號;trip_no:trip編號;v_avg:平均速度;v_var:速度的方差;a_avg:平均加速度;a_var:加速度的方差;r_avg:平均轉速;r_var:轉速的方差; v_a:速度level為a時的時間佔比(同理v_b , v_c , v_d ); a_a:加速度level為a時的時間佔比(同理a_b, a_c); r_a:轉速level為a時的時間佔比( r_b, r_c)
聚類演算法要求:
(1)統計各個類別的數目
(2)找出聚類中心
(3)將每條資料聚成的類別(該列命名為jllable )和原始資料集進行合併,形成新的dataframe,命名為new_df ,並輸出到本地,命名為new_df.csv。
降維演算法要求:
(1)將用於聚類的資料的特徵的維度降至2維,並輸出降維後的資料,形成一個dataframe名字new_pca
(2)畫圖來展示聚類效果(可用如下程式碼):
import matplotlib.pyplot asplt
d = new_pca[new_df['jllable'] == 0]
plt.plot(d[0], d[1], 'r.')
d = new_pca[new_df['jllable'] == 1]
plt.plot(d[0], d[1], 'go')
d = new_pca[new_df['jllable'] == 2]
plt.plot(d[0], d[1], 'b*')
plt.gcf().savefig('D:/workspace/python/Practice/ddsx/kmeans.png')
plt.show()
python實現程式碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 |
from
sklearn.cluster
import
KMeans from
sklearn.decomposition
import
PCA import
pandas as pd import
numpy as np import
matplotlib.pyplot as plt df
=
pd.read_csv(
'trip.csv'
, header
=
0
, encoding
=
'utf-8'
) df1
=
df.ix[:,
2
:] kmeans
=
KMeans(n_clusters
=
3
, random_state
=
10
).fit(df1) df1[
'jllable'
]
=
kmeans.labels_ df_count_type
=
df1.groupby(
'jllable'
).
apply
(np.size) ##各個類別的數目 df_count_type ##聚類中心 kmeans.cluster_centers_ ##新的dataframe,命名為new_df ,並輸出到本地,命名為new_df.csv。 new_df
=
df1[:] new_df new_df.to_csv(
'new_df.csv'
) ##將用於聚類的資料的特徵的維度降至2維,並輸出降維後的資料,形成一個dataframe名字new_pca pca
=
PCA(n_components
=
2
) new_pca
=
pd.DataFrame(pca.fit_transform(new_df)) ##視覺化 d
=
new_pca[new_df[
'jllable'
]
=
=
0
] plt.plot(d[
0
], d[
1
],
'r.'
) d
=
new_pca[new_df[
'jllable'
]
=
=
1
] plt.plot(d[
0
], d[
1
],
'go'
) d
=
new_pca[new_df[
'jllable'
]
=
=
2
] plt.plot(d[
0
], d[
1
],
'b*'
) plt.gcf().savefig(
'kmeans.png'
) plt.show() |
執行結果如下:
##各個類別的數目
##聚類中心
##新的dataframe,命名為new_df ,並輸出到本地,命名為new_df.csv。
##視覺化------kmeans.png
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31543790/viewspace-2657033/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- kmeans聚類演算法matlab實現聚類演算法Matlab
- kmeans實現文字聚類聚類
- 【機器學習】:Kmeans均值聚類演算法原理(附帶Python程式碼實現)機器學習聚類演算法Python
- 呼叫WEKA包進行kmeans聚類(java)聚類Java
- 102、聚類Kmeans演算法聚類演算法
- mahout之聚類演算法——KMeans分析聚類演算法
- 《機器學習實戰》kMeans演算法(K均值聚類演算法)機器學習演算法聚類
- KMeans演算法與GMM混合高斯聚類演算法聚類
- Mahout學習之聚類演算法Kmeans聚類演算法
- 譜聚類的python實現聚類Python
- 【Python機器學習實戰】聚類演算法(2)——層次聚類(HAC)和DBSCANPython機器學習聚類演算法
- 聚類kmeans演算法在yolov3中的應用聚類演算法YOLO
- 吳恩達《Machine Learning》精煉筆記 8:聚類 KMeans 及其 Python實現吳恩達Mac筆記聚類Python
- 《機器學習實戰》二分-kMeans演算法(二分K均值聚類)機器學習演算法聚類
- Kmeans如何初始化聚類中心聚類
- 用Python實現文件聚類Python聚類
- ML.NET技術研究系列-2聚類演算法KMeans聚類演算法
- C均值聚類 C實現 Python實現聚類Python
- 層級聚類和Python實現的初學者指南(附連結)聚類Python
- 【Python機器學習實戰】聚類演算法(1)——K-Means聚類Python機器學習聚類演算法
- 手寫演算法-python程式碼實現Kmeans演算法Python
- 機器學習之k-means聚類演算法(python實現)機器學習聚類演算法Python
- 聚類之K均值聚類和EM演算法聚類演算法
- 第十篇:K均值聚類(KMeans)聚類
- FCM聚類演算法詳解(Python實現iris資料集)聚類演算法Python
- MMM全連結聚類演算法實現聚類演算法
- 聚類演算法與K-means實現聚類演算法
- 一文簡述多種無監督聚類演算法的Python實現聚類演算法Python
- 用opencv實現的PCA演算法,非API呼叫OpenCVPCA演算法API
- python Kmeans演算法解析Python演算法
- Mahout聚類演算法學習之Canopy演算法的分析與實現聚類演算法
- 聚類演算法聚類演算法
- 機器學習(五):混合高斯聚類GMM(求聚類標籤)+PCA降維(3維降2維)習題機器學習聚類PCA
- 聚類(part3)--高階聚類演算法聚類演算法
- K-Means聚類分析以及誤差平方和SSE(Python實現)聚類Python
- 分類 和 聚類聚類
- MVO優化DBSCAN實現聚類優化聚類
- 資料探勘聚類之k-medoids演算法實現聚類演算法