数据划分方法简述:数据离散化和均值标准差分级法(含python代码)

news/2024/4/25 18:52:06/文章来源:https://blog.csdn.net/Hjh1906008151/article/details/130313598

文章目录

  • 1 问题缘起
  • 2. 数据离散化
      • 等距离散
      • 等频离散
      • 聚类离散
      • 其他
  • 3. 均值标准差分级

1 问题缘起

在数学建模中,我经常遇到这样一个问题:

在某一步中,需要把数据分成好几个类别或者是按照数据大小分级划分。

放到一维数据中形象一点解释就是我有这么一条线,x轴没有任何意义,y轴代表数据的大小,我需要把这些数据分为5类(在图中切4刀),应该怎么划分?

在这里插入图片描述

经典的例子是 2023 年美赛C题 Wordle 的倒数第二问,很多团队评估了每个单词的难度系数,但是不知道怎么按照这个难度系数划分难度等级。这是个细节问题,很容易钻牛角尖。

看上去确实没什么,但是如果乱划分或者直接划分,似乎糙了点,或者说找不到什么理论依据,不严谨。

个人总结出了两类方法:

  1. 数据离散化
  2. 均值标准差分级

2. 数据离散化

注意了,这边用的是数据离散化的思想解决问题,并不是指在一开始预处理时的数据离散化。相当于为我们划分数据找了个理论依据。

这边提一下几种常见的离散化方式:

等距离散

等距分布的思想就是如果这是一个上下限已知的数据集,取数据的值域[min, max],然后再等分值域。

以这张图为例:

在这里插入图片描述

365条数据是分布在[0,1]之间,那么5等分之后的结果就是

类别1:(-∞,0.2]
类别2:(0.2,0.4]
类别3:(0.4,0.6]
类别4:(0.6,0.8]
类别5:(0.8,+∞)

新的数据落到哪个区间就算哪个类别。

python代码:

n = 5
data["score_label"] = pd.cut(x=data["score"], bins=n, labels=[str(i+1) for i in rnage(n)])

等频离散

等频分布的思想就是如果这是一个数据量已知的数据集 dataset,对数据排序得到 dataset_sorted,取排序后的数据 reset_index,按照 reset_index 等分的 dataset_sorted 离散化数据。

还是以这张图为例:

在这里插入图片描述

365条数据是分布在[0,1]之间,那么5等分之后的结果就是

类别1:(-∞,dataset_sorted[73]]
类别2:(dataset_sorted[73],dataset_sorted[146]]
类别3:(dataset_sorted[146],dataset_sorted[219]]
类别4:(dataset_sorted[219],dataset_sorted[292]]
类别5:(dataset_sorted[292],+∞)

新的数据的值落到哪个区间就算哪个类别。

python代码:

n = 5
data = data.sort_values("score").reset_index()
data["score_label"] = (data.index / data.shape[0] * (n-1)).astype(int)

聚类离散

可以用聚类的方法计算。将需要划分的数据放入聚类算法中,按照聚类的结果划分数据。一般建议K-means聚类(密度的 DBSCAN 也不错),因为没必要玩花活。

不过感觉这个方法也不严谨,因为如果我们的任务是5分类,然后我们采用K-means聚类划分,那么我们的k值势必会取5,但是k=5不一定是当前数据集的最佳聚类数量。

所以这个方法更适合在不知道需要划分为几类数据的时候使用,顺便还能确认下划分成几类比较好~

python代码:

k=5
km = KMeans(n_clusters=k).fit(data)
data["score_label"] = km.labels_

其他

当然还有基于其他数据离散化的想法:1R离散法、基于卡方分裂的离散法、二值化离散法等等等等,这边就不细讲了。具体的操作和步骤这篇讲的很棒。

3. 均值标准差分级

这个方法是我刷论文的时候偶然发现的,当时感觉是在瞎扯,没怎么关注,后来被朋友安利了一下才开始重视它。

论文是《基于加权马尔可夫模型的股票预测》:程丽娟,冯洁明。

在这里插入图片描述

大概理解了一下方法:

在这里插入图片描述

对于奇数个划分区域,使用第二个划分方法,对于偶数个划分趋于使用第一个划分方法。

当然,如果数据在两边的分布比较稀疏,导致本方法划分之后样本不平衡。我们也可以发挥下主观能动性,这样划分:

在这里插入图片描述

不过个人认为如果要追求划分结果的样本平衡,那直接用等频离散不是更香嘛

python代码:

import numpy as np
import pandas as pd
# 仅限单列file = pd.read_csv("data.csv", encoding="utf-8-sig")
col = file.columns
print("输入你要分成几类")
choice = int(input())
print(file.describe())
mean = file.describe().loc["mean"][col[0]]
std = file.describe().loc["std"][col[0]]
ret = []
for i in range(int(choice / 2)):ret.insert(0, mean - (i + ((choice % 2) / 2)) * std)ret.append(mean + (i + ((choice % 2) / 2)) * std)
ret.insert(0, -np.inf)
ret.append(np.inf)
ret = list(set(ret))
ret.sort()
file["std_clf"] = pd.cut(x=file[col[0]], bins=ret, right=True, labels=[i+1 for i in range(len(ret)-1)])
print(file)

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

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

相关文章

项目管理-团队管理

冲突和竞争 冲突:是指两个或两个以上的社会单元在目标上互不相容或互相排斥,从而产生心理上的或行为上的矛盾。冲突并不一定是有害的, “一团和气”的集体不一定是一个高效率的集体。对于有害的冲突要设法加以解决或减少;对有益的…

Photoshop如何使用基础功能?

文章目录 0.引言1.菜单栏2.工具箱 0.引言 笔者从开始科研时就接触过Photoshop(PS),这么多年一直用着感觉有些陌生,在每次使用PS时总感觉有些抵触,这状态说明还未入门。为了入门PS,笔者从头熟悉PS的菜单和工…

直播软件app开发:如何保证音视频质量?

随着社交媒体的发展,视频直播已成为越来越流行的社交方式。直播软件app开发也因此成为了一个热门话题。在开发直播软件app时,保证音视频质量是至关重要的。本文将介绍如何确保你的直播软件app在音视频质量方面表现出色。 确定音视频质量标准 首先&…

子元素选择器

知识点&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta http-equiv"X-UA-Compatible" content"IEedge"> <meta name"viewport" c…

GoodSync 数据自动同步备份工具VS傲梅轻松备份系统数据备份工具 哪款更好?

备份和同步软件的使用越来越广泛&#xff0c;因为在这个数据驱动的时代&#xff0c;数据的备份和恢复非常重要。在这里我想向大家推荐两款备份和同步软件——GoodSync和傲梅轻松备份。 GoodSync是一款备份和同步软件&#xff0c;它可以在多个设备之间同步文件、文件夹、照片、音…

heic格式转化jpg的3种好用方法

如果你是使用iOS手机的用户&#xff0c;那么一定对HEIC格式不陌生。虽然HEIC格式可以保存原始图像质量&#xff0c;但它只能在苹果手机或Mac电脑上打开。如果我们想要在安卓或Windows系统上打开&#xff0c;就需要使用转换软件将HEIC格式转换成常用的JPG格式。HEIC 是一种新型的…

每日学术速递4.26

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.AutoNeRF: Training Implicit Scene Representations with Autonomous Agents 标题&#xff1a;AutoNeRF&#xff1a;使用自主代理训练隐式场景表示 作者&#xff1a;Pierre Marz…

macOS电脑

UNIX操作系统有一个规范&#xff0c;名叫《单一UNIX规范》&#xff08;Single UNIX Specification&#xff09;。凡是符合这个规范的操作系统都可以叫UNIX操作系统&#xff0c;并且可以通过UNIX官方认证。 UNIX商标认证官网是&#xff1a;The Register of UNIX Certified Prod…

Tuxera NTFS2023第三方应用苹果电脑磁盘读写工具

哪里有专业级的NTFS格式读写工具&#xff1f;Tuxera NTFS2023中文版是一款非常好用的NTFS读写工具&#xff0c;可以让您完整的读写兼容NTFS格式驱动器&#xff0c;对磁盘进行访问、编辑、存储和传输文件等操作。同时还包括开源磁盘管理器等简单的格式和硬盘维修检查和修复。Mac…

MySQL数据落盘原理(redo、undo、binlog、2PC、double write等。)

文章目录 前言一、架构图1、MySQL架构图2、InnoDB架构图 二、落盘分析1.第一阶段2.第二阶段3.第三阶段4.第四阶段5.第五阶段6.第六阶段 三、总结 前言 在上一章中我们聊到了事务有四大特性&#xff1a;原子性、一致性、隔离性、持久性。本篇文章就持久性重点聊一下&#xff0c…

【Feign扩展】OpenFeign日志打印Http请求参数和响应数据

SpringBoot使用log4j2 在Spring Boot中所有的starter 都是基于spring-boot-starter-logging的&#xff0c;默认使用Logback。使用Log4j2的话&#xff0c;你需要排除 spring-boot-starter-logging 的依赖&#xff0c;并添加 spring-boot-starter-log4j2的依赖。 配置依赖 <…

【小程序】input输入双向数据绑定

小程序中&#xff0c;input标签中的数据为单向绑定&#xff1a; <inputtype"number"bindinput"inputRealmoney"value"{{ amount }}"placeholder"请输入金额" />如上代码&#xff0c;我们绑定了输入框的数据amount&#xff0c;并…

Floccus插件 + 坚果云 实现不同浏览器间书签同步

&#xfeff; 在工作与学习中&#xff0c;我们时常希望在不同浏览器之间实现书签的同步&#xff1b;而一些传统的浏览器书签同步方案&#xff0c;或多或少都面临着一些问题——比如&#xff0c;Chrome浏览器尽管可以实现比较好的跨设备同步&#xff0c;但由于网络的限制可能导致…

多臂老虎机问题

1.问题简介 多臂老虎机问题可以被看作简化版的强化学习问题&#xff0c;算是最简单的“和环境交互中的学习”的一种形式&#xff0c;不存在状态信息&#xff0c;只有动作和奖励。多臂老虎机中的探索与利用&#xff08;exploration vs. exploitation&#xff09;问题一直以来都…

Java BIO

1.Java BIO(Blocking IO:同步并阻塞式IO)编程 1.1.基本介绍 1>.Java BIO就是传统的java io编程,其相关的类和接口在"java.io"包下; 2>.BIO(Blocking I/O): 同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处…

centos配置nacos集群

nacos配置集群 1.官方文档地址 https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html 2.环境准备 1.64 bit OS&#xff0c;支持 Linux/Unix/Mac/Windows。&#xff08;至少3台&#xff0c;或者通过修改端口在一台服务器 启动多个nacos进行测试&#xff09;。 2.64 bit …

Three.js+TypeScript+Webpack学习记录(三)

使用环境参考 Node.js v16.19.1 正文 独立功能文件 我们不可能一直在 index.ts 中写代码&#xff0c;分离文件&#xff1a; // init.ts import * as THREE from threeexport const initScene () > {const scene new THREE.Scene()scene.background new THREE.Color(wh…

ChatGPT能用来写小说吗-gpt可以续写小说吗

怎么用ChatGPT写网文 ChatGPT是一个语言生成模型&#xff0c;可以用于生成各种文本&#xff0c;包括网文。下面是一些写网文的建议。 确定你的主题和情节。在开始写作之前&#xff0c;你需要确保你有一个明确的主题和情节&#xff0c;这可以帮助你更好地组织你的故事&#xff0…

电脑硬盘分区合并怎么操作?分享2个方法!

案例&#xff1a;电脑硬盘怎么分区&#xff1f; 【我把我的电脑硬盘分成了多个区域&#xff0c;这样可以方便存储和管理数据。现在我需要调整分区&#xff0c;对分区进行合并&#xff0c;但我不知道该如何操作&#xff0c;有没有小伙伴知道&#xff1f;】 在使用电脑的过程中…

【python视图3】networkx图操作示例

一、说明 根据定义&#xff0c;图是节点&#xff08;顶点&#xff09;以及已识别的节点对&#xff08;称为边、链接等&#xff09;的集合。在 NetworkX 中&#xff0c;节点可以是任何可哈希对象&#xff0c;例如文本字符串、图像、XML 对象、另一个图形、自定义节点对象等。 如…