#-*- coding: utf-8 -*-
#数据规范化
import pandas as pddatafile = '../data/discretization_data.xls' #参数初始化
data = pd.read_excel(datafile) #读取数据
data = data[u'肝气郁结证型系数'].copy()
k = 4d1 = pd.cut(data, k, labels = range(k))
#等宽离散化,各个类比可以命名为0,1,2,3#等频率离散化
w = [1.0*i/k for i in range(k+1)]
w = data.describe(percentiles = w)[4:4+k+1] #使用describe函数自动计算分位数
w[0] = w[0]*(1-1e-10)#构造闭区间
d2 = pd.cut(data, w, labels = range(k))from sklearn.cluster import KMeans #引入KMeans
kmodel = KMeans(n_clusters = k, n_jobs = 4) #建立模型,n_jobs是并行数,一般等于CPU数较好
kmodel.fit(data.reshape((len(data), 1))) #训练模型
c = pd.DataFrame(kmodel.cluster_centers_).sort(0) #输出聚类中心,并且排序(默认是随机序的)#rolling_mean表示移动平均,即用当前值和前2个数值取平均数,相当于相邻两项求中点
#由于通过移动平均,会使得第一个数变为空值,因此需要使用.iloc[1:]过滤掉空值
w = pd.rolling_mean(c, 2).iloc[1:] #相邻两项求中点,作为边界点,但缺少首末边界点
w = [0] + list(w[0]) + [data.max()] #把首末边界点加上
d3 = pd.cut(data, w, labels = range(k))def cluster_plot(d, k): #自定义作图函数来显示聚类结果import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号plt.figure(figsize = (8, 3))for j in range(0, k):plt.plot(data[d==j], [j for i in d[d==j]], 'o')plt.ylim(-0.5, k-0.5)return pltcluster_plot(d1, k).show()cluster_plot(d2, k).show()
cluster_plot(d3, k).show()

参考了数据离散化 - 等宽&等频&聚类离散 - Python代码

三种方法实现数据离散化-python实现相关推荐

  1. MATLAB笔记:打开数据文件的三种方法+读取数据文件的两种方法+保存数据文件的两种方法

    1.打开数据文件 1.1 直接打开文件 PATHNAME = 'C:\Users\s55\Desktop\dat'; FILENAME = '\data_1.dat'; str0=strcat(PAT ...

  2. pca算法python代码_三种方法实现PCA算法(Python)

    主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...

  3. python csv库,Python 中导入csv数据的三种方法

    Python 中导入csv数据的三种方法,具体内容如下所示: 1.通过标准的Python库导入CSV文件: Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文 ...

  4. C语言函数怎么像python那样返回多个值?(三种方法:1、设置全局变量 2、传递指针 3、使用结构体返回不同类型的数据)

    引用文章:c语言函数可不可以返回多个值 文章目录 方法一:设置全局变量 例如:利用一个函数求出正方形的周长和面积. 方法二:使用数组名或指针作为函数的形参 实例2:编写函数求一维整形数组的最大值与最小 ...

  5. python教程怎么抓起数据_介绍python 数据抓取三种方法

    三种数据抓取的方法正则表达式(re库) BeautifulSoup(bs4) lxml *利用之前构建的下载网页函数,获取目标网页的html,我们以https://guojiadiqu.bmcx.co ...

  6. python recv_python网络编程调用recv函数完整接收数据的三种方法

    最近在使用python进行网络编程开发一个通用的tcpclient测试小工具.在使用socket进行网络编程中,如何判定对端发送一条报文是否接收完成,是进行socket网络开发必须要考虑的一个问题.这 ...

  7. 基于Python实现中文文本关键词抽取的三种方法 课程报告+项目源码及数据

    资源下载地址:https://download.csdn.net/download/sheziqiong/85737856 资源下载地址:https://download.csdn.net/downl ...

  8. Python——数据存储的三种方法

    一.CSV文件 1.导入 由于是python自带的库,无需安装就可以使用,只要使用下面命令就可以导入 import csv 2 .使用方法 2.1 从csv文件读入数据 import csv #使用o ...

  9. 互相关函数python实现的三种方法

    本人前段时间在做地震波分析的时候用到互相关函数的计算,所以做了一些具体的研究和分析.用python实现信号的互相关可以有三种方法:一.直接用时域法.二.用频域法.三.python提供的numpy.co ...

最新文章

  1. 集合框架源码分析五之LinkedHashMap,LinkedHashSet
  2. Linux查看ssd块大小性能,如何衡量Linux中对SSD执行的总写入量?
  3. Android入门之常用控件
  4. VS2008水晶报表发布部署总结
  5. python3 random模块操作
  6. GUI Design Studio 4 5 151 0原型设计工具的使用
  7. Centos下pure-ftpd安装配置详解
  8. 【java批量图片压缩处理】
  9. 七牛服务器获取文件内容
  10. Moment.js js 时间计算
  11. NIST伪随机测试出现igamc:UNDERFLOW的原因以及测试文件的格式
  12. python编程练习--水仙花数
  13. How to deal with Imbalanced Datasets in PyTorch - Weighted Random Sampler Tutorial
  14. blackjack - pwnable
  15. 大数据培训—DolphinSchedular(一)
  16. 扩散模型爆火,这是首篇综述与Github论文分类汇总
  17. 登陆服务器老出现 达到最大连接数 解决方法
  18. 分享一款自己开发的串口调试助手(macOS系统,界面简介,使用方便)
  19. 流控制(RTS/CTS/DTR/DSR )
  20. 让JPG文件变大的方法

热门文章

  1. 【算法加速】区分ASIC与CPU、GPU、FPGA几个概念
  2. 阿里巴巴2008校园招聘在线宣讲会
  3. 说脏话,在人类的发展过程中有什么意义?
  4. 手动安装couchdb并且指定版本 详细教程
  5. Java系列技术之Spring5框架-钟洪发-专题视频课程
  6. U9ERP系统无法分割料品领料功能客开开发
  7. Python学习(类的属性、继承、覆盖等详解)
  8. 使用htop查看资源使用情况
  9. PDF 中图片的提取
  10. python编辑word书签_小伙发现了Python中编写word文档的库,编辑文字方便多了