【转】利用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.mzph.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 …