慕课Python机器学习应用-代码实现(详细注释+数据集)
课程链接:Python机器学习应用_北京理工大学_中国大学MOOC(慕课)
学习和实现的算法有Kmeans和DBSCAN,数据集是自己在网上搜集的,在我的资源区提供免费下载。
Kmeans算法:
1、数据介绍(city.txt,资源区提供免费下载):
现有1999年全国31个省份城镇居民家庭平均每人全年消费性支出的八个主要变量数据,这八个变量分别是:
食品、衣着、家庭设备用品及服务、医疗保健、交通和通讯、娱乐教育文化服务、居住以及杂项商品和服务。
利用已有数据,对31个省份进行聚类。
2、实验目的:
通过聚类(技术路线:sklearn.cluster.Kmeans),了解1999年各个省份的消费水平在国内的情况
3、算法介绍:
k-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。
其处理过程如下:
1.随机选择k个点作为初始的聚类中心;
2.对于剩下的点,根据其与聚类中心的距离,将其归入最近的簇
3.对每个簇,计算所有点的均值作为新的聚类中心
4.重复2、3直到聚类中心不再发生改变
其他:
因初始的k个点是随机选择的,所以每次的运行结果不一定相同
可以修改参数中的k值以及CityCluster中的列表数,本算法k=3
关于一些相关包的介绍:
NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组
运算提供大量的数学函数库。
使用sklearn.cluster.KMeans可以调用K-means算法进行聚类
import numpy as np
from sklearn.cluster import KMeansdef loadData(filePath):# 打开文件流,如果没有第二个参数,会报编码错误fr = open(filePath, 'r+', encoding='utf_8')# 按行读取整个文件,返回的是列表lines = fr.readlines()# 将读入的数据进行拆分,分为数据和城市名retData = []retCityName = []# 遍历列表for line in lines:# 去除字符串首尾的空格或者回车,并使用“,”进行分割items = line.strip().split(",")# 每行的开头是城市名称retCityName.append(items[0])# 将数据组合成一个列表,并且强制转换类型为float浮点型retData.append([float(items[i]) for i in range(1, len(items))])# 返回城市数据(二维列表)和城市名(一维列表)return retData, retCityName# 加载数据,创建K-means算法实例,并进行训练,获得标签
if __name__ == '__main__':# 调用加载数据的方法,获取城市数据以及城市名称data, cityName = loadData('city.txt')# 创建指定簇数量的KMeans对象实例km = KMeans(n_clusters=3)# 加载数据,进行训练,获得标签,总共是3个簇,就是3个标签,将给31个数据,每个数据都打上0-2的标签label = km.fit_predict(data)# print(label)# 计算出每一个簇形成的所有的行内的数据,计算出该簇内的数据的和# axis为1是压缩成列,即将每一行的元素相加,将矩阵压缩为一列# cluster_centers_:求每簇的质心坐标,即每个簇中求各列的平均值expenses = np.sum(km.cluster_centers_, axis=1)# print(km.cluster_centers_)# print(expenses)# 总共是3个标签,3个集合,按照打上的标签将城市名进行分类CityCluster = [[], [], []]# 遍历所有的标签,并将对应的城市根据标签加上对应的簇中for i in range(len(cityName)):CityCluster[label[i]].append(cityName[i])# 遍历所有的簇中心的数量,总共就只有3个,进行打印输出for i in range(len(CityCluster)):print("Expenses:%.2f" % expenses[i])print(CityCluster[i])
DBSCA算法:(后续会有详细注释)
import numpy as np
import sklearn.cluster as skc
from sklearn import metrics
import matplotlib.pyplot as pltmac2id = dict()
onlinetimes = []
f = open('TestData.txt', encoding='utf-8')
for line in f:mac = line.split(',')[2]onlinetime = int(line.split(',')[6])starttime = int(line.split(',')[4].split(' ')[1].split(':')[0])if mac not in mac2id:mac2id[mac] = len(onlinetimes)onlinetimes.append((starttime, onlinetime))else:onlinetimes[mac2id[mac]] = [(starttime, onlinetime)]
real_X = np.array(onlinetimes).reshape((-1, 2))X = real_X[:, 0:1]db = skc.DBSCAN(eps=0.01, min_samples=20).fit(X)
labels = db.labels_print('Labels:')
print(labels)
raito = len(labels[labels[:] == -1]) / len(labels)
print('Noise raito:', format(raito, '.2%'))n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)print('Estimated number of clusters: %d' % n_clusters_)
print("Silhouette Coefficient: %0.3f" % metrics.silhouette_score(X, labels))for i in range(n_clusters_):print('Cluster ', i, ':')print(list(X[labels == i].flatten()))plt.hist(X, 24)
plt.show()
慕课Python机器学习应用-代码实现(详细注释+数据集)相关推荐
- [嵌入式er笔记]大端小端详解(含代码及详细注释)
link 之前文章< 浅谈ARM ABI,Android ABI >中有提到计划专门一篇文章讲下大小端,今天兑现一下. 1>"大端" "小端" ...
- 手撕yolo3系列——详解yolo3整体网络代码(详细注释)
完整代码百度云直达链接(包含预训练权重)(小白注释) https://pan.baidu.com/s/1US6e93OaCYOghmF21v0UIA 提取码:z8at 参考链接 [注]代码是大神的代码 ...
- malloc 源码_【C++学习笔记(九)】之 new运算符的使用/ new 与 malloc的异同(附代码,详细注释)...
new 运算符的使用 一. new的简单介绍: new运算符用于在堆区开辟空间,所有new出来的对象,对返回该类对象的指针. 二. new 与 malloc 的异同点: 1.malloc作用相同, m ...
- python机器学习开源代码_Python简化代码机器学习库PyCaret 2.0发布
字幕组双语原文:Python简化代码机器学习库PyCaret 2.0发布 英语原文:Announcing PyCaret 2.0 翻译:雷锋字幕组(Shangru) 我们激动的宣布,PyCaret第二 ...
- python机器学习开源代码_2016 年十大 Python 机器学习开源项目
2016年十大Python机器学习开源项目 1.Scikit-learn 用于数据挖掘和数据分析的简单而有效的工具,基于NumPy,SciPy和matplotlib,开源,商业可用的BSD许可证. C ...
- 【python】使用pushplus实现警报微信提醒,提供代码和详细注释
目录 运行效果 如何获取token授权码 运行代码 官方API文档 总结 欢迎关注 『发现你走远了』 博客,持续更新中 欢迎关注 『发现你走远了』 博客,持续更新中 运行效果 如何获取token授权码 ...
- 【python】使用喵码实现警报微信提醒,提供代码和详细注释
目录 运行效果 如何获取喵码 运行代码 喵提醒的官方API文档 总结 欢迎关注 『发现你走远了』 博客,持续更新中 欢迎关注 『发现你走远了』 博客,持续更新中 运行效果 如何获取喵码 关注喵提醒的公 ...
- 黑猩猩优化算法python代码(详细注释)
黑猩猩优化算法介绍:黑猩猩优化算法(Chimpanzee Optimization Algorithm,COA)是一种启发式优化算法,灵感来自于黑猩猩社会行为中的寻食行为.下面是该算法的代码及原理过程 ...
- python十点半游戏代码_十点半游戏完整代码及详细注释.py
# -*- coding: utf-8 -*- #此版本,于2018年12月9日 #游戏类 class Game: #一般游戏进程,从读取存档开始 def Process(self): #初始回合数为 ...
最新文章
- 重构-改善既有代码的设计:对象之间移动特性的八种方法(五)
- Gauss-Newton算法学习
- CodeForces - 1252G Performance Review(线段树+思维)
- Java AOP研究之@Aspect注解的工作原理
- php 加密解密函数封装
- 移动web-触摸事件touch
- docker file 示例
- 微信小程序全面开放近一年,姗姗来迟的阿里还有胜局吗?| 畅言
- FCKEditor 验证为空需要点击两次提交按钮的问题
- php嗅探视频地址,用PHP嗅探youku视频的真实地址!
- 复杂句变简单句 java_【SAT写作】简单句如何变为复杂句?10招教你快速转变
- 精彩博文收集目录索引
- CVPR2022点云语义分割:Stratified Transformer for 3D Point Cloud Segmentation
- 使用 Python 自动识别防疫二维码
- [读书]胡适的三个防身药方
- python数学计算函数_python之数学函数篇
- 服务器维修合同样本,最新在线维修服务协议
- window系统下avos cloud 云引擎搭建问题(Node.js)
- 数据库创建、增删改查、java连接数据库
- shell脚本删除冒号空格_从Bash漏洞学Shell脚本(冒号)