日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

【转】利用python的KMeans和PCA包实现聚类算法

發(fā)布時間:2025/3/8 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】利用python的KMeans和PCA包实现聚类算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

?

轉(zhuǎn)自:https://www.cnblogs.com/yjd_hycf_space/p/7094005.html


題目: 通過給出的駕駛員行為數(shù)據(jù)(trip.csv),對駕駛員不同時段的駕駛類型進(jìn)行聚類,聚成普通駕駛類型,激進(jìn)類型和超冷靜型3類 。 利用Python的scikit-learn包中的Kmeans算法進(jìn)行聚類算法的應(yīng)用練習(xí)。并利用scikit-learn包中的PCA算法來對聚類后的數(shù)據(jù)進(jìn)行降維,然后畫圖展示出聚類效果。通過調(diào)節(jié)聚類算法的參數(shù),來觀察聚類效果的變化,練習(xí)調(diào)參。

數(shù)據(jù)介紹: 選取某一個駕駛員的經(jīng)過處理的數(shù)據(jù)集trip.csv,將該駕駛?cè)说母鱾€時間段的特征進(jìn)行聚類。(注:其中的driver 和trip_no 不參與聚類)

字段介紹: driver :駕駛員編號;trip_no:trip編號;v_avg:平均速度;v_var:速度的方差;a_avg:平均加速度;a_var:加速度的方差;r_avg:平均轉(zhuǎn)速;r_var:轉(zhuǎn)速的方差; v_a:速度level為a時的時間占比(同理v_b , v_c , v_d ); a_a:加速度level為a時的時間占比(同理a_b, a_c); r_a:轉(zhuǎn)速level為a時的時間占比( r_b, r_c)

聚類算法要求

(1)統(tǒng)計各個類別的數(shù)目

(2)找出聚類中心

(3)將每條數(shù)據(jù)聚成的類別(該列命名為jllable )和原始數(shù)據(jù)集進(jìn)行合并,形成新的dataframe,命名為new_df ,并輸出到本地,命名為new_df.csv。

降維算法要求:

(1)將用于聚類的數(shù)據(jù)的特征的維度降至2維,并輸出降維后的數(shù)據(jù),形成一個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實現(xiàn)代碼如下:

from sklearn.cluster import KMeans from sklearn.decomposition import PCA import pandas as pd import numpy as np import matplotlib.pyplot as pltdf=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)##各個類別的數(shù)目 df_count_type ##聚類中心 kmeans.cluster_centers_ ##新的dataframe,命名為new_df ,并輸出到本地,命名為new_df.csv。 new_df=df1[:] new_df new_df.to_csv('new_df.csv')##將用于聚類的數(shù)據(jù)的特征的維度降至2維,并輸出降維后的數(shù)據(jù),形成一個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()

  

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/xianhan/p/10644891.html

總結(jié)

以上是生活随笔為你收集整理的【转】利用python的KMeans和PCA包实现聚类算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。