离散化(python)

概念:

离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。

本质:

一种哈希,将离散的数字、浮点数,转换成1-n

例如:【100,200,300,400,500】,离散化后为【1,2.3,4,5】
所有仅关注偏序关系的题目,均可以先离散化

具体代码如下

from bisect import *
def Descrete(a):
    b = list(set(a))
    b.sort()
    print("b = ",b)
    ans = []
    for x in a:
        ans.append(bisect_left(b,x) + 1)
    return ans
a = list(map(int, input().split()))
print(Descrete(a))
def Descrete2(a):
    b = list(set(a))
    b.sort()
    dic = dict(zip(b,range(len(b))))
    ans = []
    for x in a:
        ans.append(dic[x])
    return ans
a = list(map(int, input().split()))
print(Descrete2(a))
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
chimerge是一种数据离散化方法,它的主要思想是将连续数据排序并分成多个区间,然后计算相邻两个区间的卡方值,每次选择卡方值最小的两个区间进行合并。在Python中,可以使用以下步骤来实现chimerge离散化: 1. 首先,对数据进行排序,将其分成多个初始区间。可以选择每个属性值作为初始区间,例如对身高进行离散化时,某个样本的身高是174,则初始区间为\[174, 174\]。 2. 接下来,计算每对相邻区间的卡方值。卡方值可以通过卡方分析来计算。 3. 选择卡方值最小的两个区间进行合并。如果有多对卡方值相等且为最小值的区间,可以同时对它们进行合并。 4. 重复步骤2和步骤3,直到满足停止条件。停止条件可以是达到所需的区间数目或者卡方值超过某个阈值。 需要注意的是,chimerge离散化方法也存在一些缺陷。其中之一是对最后划分区间数目的确定,可以通过定义一个概念来度量划分结果的好坏,例如划分的纯度或分类的准确率。另一个缺陷是可能存在前一个区间的后值和后一个区间的前值相等的情况,这在逻辑上是不合理的,并且在应用分类时可能会遇到问题。这种情况的原因是属性的某个取值可能有多个,在排序时它们都排在一起,导致合并时出现这种情况。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [数据离散化之chimerge算法的实现(python版)(以莺尾花数据为例)](https://blog.csdn.net/weixin_43550933/article/details/111183150)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值