【轉】利用python的KMeans和PCA包實現聚類算法

?

?

轉自:https://www.cnblogs.com/yjd_hycf_space/p/7094005.html


題目: 通過給出的駕駛員行為數據(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實現代碼如下:

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)##各個類別的數目
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()

  

?

?

轉載于:https://www.cnblogs.com/xianhan/p/10644891.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536576.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536576.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536576.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c 語言str.size,C/C++ strlen(str)和str.length()和str.size()的區別

strlen(str)和str.length()和str.size()都可以求字符串長度,返回字符串中字符的長度,不包括‘/0’。其中str.length()和str.size()是同義詞,返回同樣的值。strlen(str)是用于求字符數組的長度,其參數是char*。#include #include using namesp…

想跑次高頻策略?快來看看Numpy處理真格量化tick數據的技巧

使用澎博真格量化時,很多用戶希望用numpy處理tick數據,包括tick數據的留存和運算。 這里有一些技巧。 因為tick數據量比較大,為了降低系統的運算負擔,我們不應該在內存里保存大量tick數據。 比如我們只想保存過去10個tick。 可以在…

if語句寫階躍函數C語言,C語言第四章分支語句.ppt

C語言第四章分支語句.ppt例: 輸入三個實數,按從小到大的順序輸出。 main( ) {float a,b,c,t; scanf(“%f,%f,%f ”,&a,&b,&c); if (a>b) { ta; ab; bt; } if (a>c) { ta; ac; ct; } if (b>c) { tb; bc; ct; } printf(“%5.2f,%5.2f…

日本顯示屏巨頭JDI不敵業務壓力,宣布接受中方注資...

本次10億美元的融資金額中,其中7.2億美元據傳來自中國絲綢之路基金。 最初,在液晶領域日本企業一直都占據著主要市場,如夏普、NEC、東芝等。后來隨著韓國三星、LG的強勢進入,日本企業的生存空間開始被搶占,現如今中國…

c語言中 d 1是啥意思,空開D/C是什么意思?終于有人把它說清楚了!

原標題:空開D/C是什么意思?終于有人把它說清楚了!空氣開關是每個人家里必用的東西,但是你到五金店一看,大大小小的開關插座多了去,讓人眼花繚亂。怎么選呢?空開有各種字母型號,這些字…

微信小程序開發 | 官方問答精選

2019獨角獸企業重金招聘Python工程師標準>>> SF問答精選《七》 多組件顯示與隱藏如何實現、function中的...SF問答精選《六》canvas不顯示問題SF問答精選《五》菜單內容左右聯動、生命周期函數SF問答精選《四》eslint 配置使用 co function;apache 反向代…

36歲自學C語言,C語言的數據類型

在C語言中,數據類型可以分為:基本數據類型,構造數據類型,指針類型,空類型四大類。基本數據類型基本數據類型最主要的特點是,其值不可以再分解為其他類型。也就是說,基本數據類型是自我說明。構造…

清北學堂培訓2019.4.4

第一次培訓,心情有點激動(盡管沒了清明節),還見到了各地的dalao們,十分開森 Day 1(李昊dalao) 上午篇 上午呢,主要講了關于高精,快速冪,膜模意義下的運算&…

國二c語言作弊用u盤,計算機等級考試可以插u盤嗎(全國計算機等級考試報名系統官網)...

:不可以 會有嘀嘀嘀的報警聲的:我以前考時不讓帶的,人家讓你不能用優盤的話電腦會控制沒法用的。:首先肯定回你,不可以帶優盤或者其他作弊設備。很多計算機二級考點會把主機箱鎖死,根本插不了優盤。在你進入…

「SCOI2011」棘手的操作

傳送門 Description 有\(N\)個節點,標號從\(1\)到\(N\),這\(N\)個節點一開始相互不連通。第$ i\(個節點的初始權值為\)a_i$ ,接下來有如下一些操作: U x y 加一條邊,連接第 \(x\) 個節點和第\(y\) 個節點。 A1 x v 將…

swft c 語言 數組,如何在swift中實現數組的深拷貝

在Objective-C中如果想將一個數組賦值給另外一個數組,同時想讓兩個數組之間相互獨立(即改變其中的一個數組,不影響另外的一個),有很多的辦法,比如我們可以直接copy,用類方法創建新數組。這樣得到的數組和原來的數組就是兩個完全獨…

tomcat CATALINA_HOME與CATALINA_BASE的區別

區別 https://blog.csdn.net/cfydaniel/article/details/41351927 Tomcat啟動分析(我們為什么要配置CATALINA_HOME環境變量) http://www.cnblogs.com/heshan664754022/archive/2013/03/27/2984357.html轉載于:https://www.cnblogs.com/Andrew520/p/10664921.html

android 廣告欄效果,實現android廣告欄效果

public classBannerLayout extendsRelativeLayout {privateViewPager mViewPager; // 輪播容器// 指示器(圓點)容器privateLinearLayout indicatorContainer;privateDrawable unSelectedDrawable;privateDrawable selectedDrawable;private intWHAT_AUTO_PLAY 1000;private boo…

自我練習

<!doctype html><html><head><meta charset"utf-8"><title>無標題文檔</title><link rel"icon" href"../HTMLWork/day03/psb.ico.ico" type"img/*"></head><body> <a na…

android studio按鈕槽函數,AndroidStudio按鈕Button退出程序

AndroidStudio 3.1.41.創建一個新的項目&#xff0c;項目名稱為Button&#xff0c;界面為activity_button.xml2.打開activity_button.xml3.點擊HelloWorld標簽&#xff0c;按Delete刪除4.左側組件欄選擇Common - Button5.將Button組件拖到界面上&#xff0c;大概中間的位置6.右…

cobbler介紹與部署

cobbler介紹 Cobbler是一個Linux系統安裝的服務&#xff0c;可以通過網絡啟動(PXE)的方式來快速安裝、重裝物理服務器和虛擬機&#xff0c;同時還可以管理DHCP&#xff0c;DNS等。 Cobbler可以使用命令行方式管理&#xff0c;也提供了基于Web的界面管理工具(cobbler-web)&#…

android wifi視頻監控軟件,WiFi環境下Android智能視頻監控系統研究與實現

摘要&#xff1a;在互聯網飛速發展和移動互聯網強勢崛起的時代,科技產品服務于普通生活是新興行業必然的發展趨勢;監控系統是物聯網時代各個領域必然爭取的可控制系統。隨著無線技術和移動終端設備的高歌猛進,移動終端智能無線視頻監控系統成為時下監控領域發展的熱點方向。無線…

android 本地地址轉換為url,android本地mipmap圖片轉url、絕對路徑轉URL URL URI File Path 轉換...

標簽&#xff1a; url uri file pathFile to URI:File file ...;URI uri file.toURI();File to URL:File file ...;URL url file.toURI().URL();URL to File:URL url ...;File file new Path(url.getPath()).toFile();URI to URL:URI uri ...;URL url uri.toURL();URL …

ORACLE數據庫導出導入數據

準備工作&#xff1a; 1、登錄管理員system 2、create directory dbdata as C:\oracle\tempData;--創建備份文件夾 3、grant read,write on directory dbdata to gsjk2018;--授權讀寫為用戶 --導出(每次修改文件名)expdp gsjk2018/gsjk2018_vimtech10.0.73.32:1521/orcl direct…

linux sed名寧,Linux shell利用sed批量更改文件名的方法

微子網絡與大家分享了在Linux shell中使用sed批量更改文件名的方法。希望你看完這篇文章有所收獲。大家一起討論一下。示例去除特定字符目標&#xff1a;把2017-01-01.jpg和2018-01-01.jpg變成20170101.jpg和20180101.jpg方法&#xff1a;用空值替換全部for filein ls | grep …