chimerge算法matlab实现,有监督的卡方分箱算法

实现代码

import numpy as np

import pandas as pd

from collections import Counter

def chimerge(data, attr, label, max_intervals):

distinct_vals = sorted(set(data[attr])) # Sort the distinct values

labels = sorted(set(data[label])) # Get all possible labels

empty_count = {l: 0 for l in labels} # A helper function for padding the Counter()

intervals = [[distinct_vals[i], distinct_vals[i]] for i in range(len(distinct_vals))] # Initialize the intervals for each attribute

while len(intervals) > max_intervals: # While loop

chi = []

for i in range(len(intervals)-1):

# Calculate the Chi2 value

obs0 = data[data[attr].between(intervals[i][0], intervals[i][1])]

obs1 = data[data[attr].between(intervals[i+1][0], intervals[i+1][1])]

total = len(obs0) + len(obs1)

count_0 = np.array([v for i, v in {**empty_count, **Counter(obs0[label])}.items()])

count_1 = np.array([v for i, v in {**empty_count, **Counter(obs1[label])}.items()])

count_total = count_0 + count_1

expected_0 = count_total*sum(count_0)/total

expected_1 = count_total*sum(count_1)/total

chi_ = (count_0 - expected_0)**2/expected_0 + (count_1 - expected_1)**2/expected_1

chi_ = np.nan_to_num(chi_) # Deal with the zero counts

chi.append(sum(chi_)) # Finally do the summation for Chi2

min_chi = min(chi) # Find the minimal Chi2 for current iteration

for i, v in enumerate(chi):

if v == min_chi:

min_chi_index = i # Find the index of the interval to be merged

break

new_intervals = [] # Prepare for the merged new data array

skip = False

done = False

for i in range(len(intervals)):

if skip:

skip = False

continue

if i == min_chi_index and not done: # Merge the intervals

t = intervals[i] + intervals[i+1]

new_intervals.append([min(t), max(t)])

skip = True

done = True

else:

new_intervals.append(intervals[i])

intervals = new_intervals

for i in intervals:

print(‘[‘, i[0], ‘,‘, i[1], ‘]‘, sep=‘‘)

使用例子

iris = pd.read_csv(‘http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data‘, header=None)

iris.columns = [‘sepal_l‘, ‘sepal_w‘, ‘petal_l‘, ‘petal_w‘, ‘type‘]

for attr in [‘sepal_l‘, ‘sepal_w‘, ‘petal_l‘, ‘petal_w‘]:

print(‘Interval for‘, attr)

chimerge(data=iris, attr=attr, label=‘type‘, max_intervals=3)

结果:

969923667af1637aa71d8b4f0917e9aa.png

原文:https://www.cnblogs.com/hichens/p/13585854.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556446.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

金士顿u盘真假软件_简洁轻巧 金士顿DT80 Type-C高速闪存盘评测

从都市的高端会议到普通的日常娱乐,USB高速闪存应用于我们生产生活的方方面面。它小巧便携,稳定可靠的特点吸引了无数人去使用,同时为我们提供了诸多便利。闪存盘也就是日常生活中经常提到的U盘。大多数人对于U盘的印象是老式的USB Micro接口…

php阴影效果,如何使用css3实现文字的单阴影效果和多重阴影效果(

使用css3实现文本阴影效果的原理实现阴影效果主要是用text-shadow属性,根据W3C标准,如果我们想要在IE下兼容CSS3的阴影属性可以使用ie.css3-htc,不过按照标准InternetExplorer9以及更早版本的浏览器暂时不支持text-shadow属性。最基本的语法为…

promise链式调用_这一次,彻底弄懂 Promise

Promise 必须为以下三种状态之一:等待态(Pending)、执行态(Fulfilled)和拒绝态(Rejected)。一旦Promise 被 resolve 或 reject,不能再迁移至其他任何状态(即状态 immutable)。基本过程:初始化 Promise 状态(pending)执行 then(..) 注册回调处…

visual studio 判断dropdownlist选的是什么_心理测试:五个小蓝人,你选哪个?测你是不是一个容易追求的人...

下面这张图片里,有五个小蓝人,你觉得自己会是里面的哪一个?A. 站在家里的窗户边B. 站在河边C. 坐在屋顶D. 站在树上E. 骑着鸟飞在空中测试结果选A的你容易追求指数20%。你是一个温柔细腻的人。在别人的眼里,你是一个很贴心的人。在…

java中为何输出框会无限输出,MyBatis启动时控制台无限输出日志的原因及解决办法...

你是否遇到过下面的情况,控制台无限的输出下面的日志:Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImpl adapter.Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImpl adapter.Logging initiali…

基于注解SpringAOP,AfterReturning,Before,Around__springboot工程 @Around 简单的使用__SpringBoot:AOP 自定义注解实现日志管理

基于注解SpringAOP,AfterReturning,Before,Around AOP(Aspect Oriented Programming),即面向切面编程(也叫面向方面编程,面向方法编程)。其主要作用是,在不修…

流浪地球开机动画包zip_【文娱热点】流浪地球2定档2023大年初一;迪士尼计划裁员32000人...

剧集、综艺任嘉伦、白鹿《长安如故》开机11月26日,根据小说《一生一世美人骨》古代篇改编的剧集《长安如故》开机,两位主演任嘉伦和白鹿继现代篇《一生一世》之后再演古代篇,俩人穿着棉服、梳着古装发髻现身开机仪式,心情非常好。…

matlab读气象数据,中国气象数据网

“中国气象科学数据共享服务网”的气象卫星资料与国内其他气象卫星资料发布平台的最大不同之处,在于卫星数据资源内容不同且时间序列相当完整。而且,(1)数据获取更便捷。在线获取数据无需等待邮件通知,无数据下载量限制。共享卫星资源是公益性…

spring中自定义注解(annotation)与AOP中获取注解___使用aspectj的@Around注解实现用户操作和操作结果日志

spring中自定义注解(annotation)与AOP中获取注解 一、自定义注解(annotation) 自定义注解的作用:在反射中获取注解,以取得注解修饰的类、方法或属性的相关解释。 package me.lichunlong.spring.annotation;import java.lang.annotation.Documented; …

python 编译器pyc_有没有办法知道哪个Python版本.pyc文件被编译?

Is there any way to know by which Python version the .pyc file was compiled? 解决方案 You can get the magic number of your Python as follows: $ python -V Python 2.6.2 # python >>> import imp >>> imp.get_magic().encode(hex) d1f20d0a To ge…

Spring AOP——Spring 中面向切面编程

前面两篇文章记录了 Spring IOC 的相关知识,本文记录 Spring 中的另一特性 AOP 相关知识。 部分参考资料: 《Spring实战(第4版)》 《轻量级 JavaEE 企业应用实战(第四版)》 Spring 官方文档 W3CSchool Spri…

python getchar,Linux C编程学习:getchar()和getch()

getchar函数名: getchar功 能: 从stdin流中读字符用 法: int getchar(void);注解:getchar有一个int型的返回值,当程序调用getchar时程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中直到用户按回车为止(回车字符也放在缓冲区中)。当用…

python 折线图中文乱码_彻底解决 Python画图中文乱码问题--Pyplotz组件

1 源起 自从开始学习Python,就非常喜欢用来画图。一直没有需求画要中文显示信息的图,所以没有配置Python中文的环境。由于昨天就需要画几十个形式相同,只是数据不同的图,并且需要显示中文信息。如果用Excel画图会很浪费时间&#…

SpringBoot的AOP是默认开启的,不需要加注解@EnableAspectJAutoProxy____听说SpringAOP 有坑?那就来踩一踩

Aspect Component public class CustomerServiceInterceptor {Before("execution(public * org.example.aop.demo..*.*(..))")public void doBefore() {System.out.println("do some important things before...");} }另外SpringBoot默认是cglib动态代理&a…

mysql 开启远程访问_QxOrm 访问 MySQL

在前面的 QxOrm 章节中,我们已经介绍了对本地数据库的操作,现在是时候介绍对远程数据库的访问了,那么就以最常用的 MySQL 为例吧!在开始之前,首先要安装 MySQL。如果条件允许,建议将其安装在 Linux 系统上&…

当泛型遇到重载

当泛型遇到了重载,好戏,就发生了。 请看下面代码: 问题:代码能正确编译吗? 这个题目是一个考察泛型的题目。java里面,泛型实际上是“伪泛型”,并不像C#那样是实际上的泛型。 IDE会提示我们下…

redis查询所有key命令_三歪推荐:Redis常见的面试题

本文公众号来源:科技缪缪作者:科技缪缪本文已收录至我的GitHub说说Redis基本数据类型有哪些吧字符串:redis没有直接使用C语言传统的字符串表示,而是自己实现的叫做简单动态字符串SDS的抽象类型。C语言的字符串不记录自身的长度信息…

springboot系列——redisTemplate和stringRedisTemplate对比、redisTemplate几种序列化方式比较

文章目录一、redisTemplate和stringRedisTemplate对比1、StringRedisTemplate2、RedisTemplate二、redisTemplate序列化方式比较1、性能测试对比2、性能总结3、方案一、考虑效率和可读性,牺牲部分空间4、方案二、空间敏感,忽略可读性和效率影响5、使用示…

mysql查询默认排序规则_深究 mysql 默认排序, order by 的顺序【收藏】

mysql 语句中如果没有使用 order by 来排序,通常会用 主键正序排列,但是有的时候不是这样,来看一个实例。实例群友问:请教一个问题,mysql 默认排序问题,当sql 语句 的排序没有指定 主键(id&…

Spring Boot jackson配置使用详解

Spring Boot系列-json框架jackson配置详解 T1 - 前言 目前Java最常见的3中JSON操作框架分别为Gson、Jackson、FastJson,该篇文章主要讲解jackson在SpringBoot环境中各配置项的具体作用。 T2 - 环境依赖 jackson是spring-boot的web/webflux框架默认依赖的json库&…