课程链接:Python机器学习应用_北京理工大学_中国大学MOOC(慕课)

学习和实现的算法有KmeansDBSCAN,数据集是自己在网上搜集的,在我的资源区提供免费下载。

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机器学习应用-代码实现(详细注释+数据集)相关推荐

  1. [嵌入式er笔记]大端小端详解(含代码及详细注释)

    link 之前文章< 浅谈ARM ABI,Android ABI >中有提到计划专门一篇文章讲下大小端,今天兑现一下. 1>"大端" "小端" ...

  2. 手撕yolo3系列——详解yolo3整体网络代码(详细注释)

    完整代码百度云直达链接(包含预训练权重)(小白注释) https://pan.baidu.com/s/1US6e93OaCYOghmF21v0UIA 提取码:z8at 参考链接 [注]代码是大神的代码 ...

  3. malloc 源码_【C++学习笔记(九)】之 new运算符的使用/ new 与 malloc的异同(附代码,详细注释)...

    new 运算符的使用 一. new的简单介绍: new运算符用于在堆区开辟空间,所有new出来的对象,对返回该类对象的指针. 二. new 与 malloc 的异同点: 1.malloc作用相同, m ...

  4. python机器学习开源代码_Python简化代码机器学习库PyCaret 2.0发布

    字幕组双语原文:Python简化代码机器学习库PyCaret 2.0发布 英语原文:Announcing PyCaret 2.0 翻译:雷锋字幕组(Shangru) 我们激动的宣布,PyCaret第二 ...

  5. python机器学习开源代码_2016 年十大 Python 机器学习开源项目

    2016年十大Python机器学习开源项目 1.Scikit-learn 用于数据挖掘和数据分析的简单而有效的工具,基于NumPy,SciPy和matplotlib,开源,商业可用的BSD许可证. C ...

  6. 【python】使用pushplus实现警报微信提醒,提供代码和详细注释

    目录 运行效果 如何获取token授权码 运行代码 官方API文档 总结 欢迎关注 『发现你走远了』 博客,持续更新中 欢迎关注 『发现你走远了』 博客,持续更新中 运行效果 如何获取token授权码 ...

  7. 【python】使用喵码实现警报微信提醒,提供代码和详细注释

    目录 运行效果 如何获取喵码 运行代码 喵提醒的官方API文档 总结 欢迎关注 『发现你走远了』 博客,持续更新中 欢迎关注 『发现你走远了』 博客,持续更新中 运行效果 如何获取喵码 关注喵提醒的公 ...

  8. 黑猩猩优化算法python代码(详细注释)

    黑猩猩优化算法介绍:黑猩猩优化算法(Chimpanzee Optimization Algorithm,COA)是一种启发式优化算法,灵感来自于黑猩猩社会行为中的寻食行为.下面是该算法的代码及原理过程 ...

  9. python十点半游戏代码_十点半游戏完整代码及详细注释.py

    # -*- coding: utf-8 -*- #此版本,于2018年12月9日 #游戏类 class Game: #一般游戏进程,从读取存档开始 def Process(self): #初始回合数为 ...

最新文章

  1. 重构-改善既有代码的设计:对象之间移动特性的八种方法(五)
  2. Gauss-Newton算法学习
  3. CodeForces - 1252G Performance Review(线段树+思维)
  4. Java AOP研究之@Aspect注解的工作原理
  5. php 加密解密函数封装
  6. 移动web-触摸事件touch
  7. docker file 示例
  8. 微信小程序全面开放近一年,姗姗来迟的阿里还有胜局吗?| 畅言
  9. FCKEditor 验证为空需要点击两次提交按钮的问题
  10. php嗅探视频地址,用PHP嗅探youku视频的真实地址!
  11. 复杂句变简单句 java_【SAT写作】简单句如何变为复杂句?10招教你快速转变
  12. 精彩博文收集目录索引
  13. CVPR2022点云语义分割:Stratified Transformer for 3D Point Cloud Segmentation
  14. 使用 Python 自动识别防疫二维码
  15. [读书]胡适的三个防身药方
  16. python数学计算函数_python之数学函数篇
  17. 服务器维修合同样本,最新在线维修服务协议
  18. window系统下avos cloud 云引擎搭建问题(Node.js)
  19. 数据库创建、增删改查、java连接数据库
  20. shell脚本删除冒号空格_从Bash漏洞学Shell脚本(冒号)

热门文章

  1. Hadoop、Yarn相关命令简介
  2. 编译OpenArkCompiler出现进程被kil
  3. Android开发面试题 71道经典题目
  4. 映美Jolimark FP-760K 打印机驱动
  5. 计算机内存的安装方法,笔记本电脑内存安装方法是什么
  6. ShardingSphere 学习
  7. netmask的作用
  8. 感觉世界变化太快...
  9. Attribute Changer的几种形态
  10. 手机电池中的PTC和NTC