python组合数据分类_Python解决数据样本类别分布不均衡问题

所谓不平衡指的是:不同类别的样本数量差异非常大。

数据规模上可以分为大数据分布不均衡和小数据分布不均衡。大数据分布不均衡:例如拥有1000万条记录的数据集中,其中占比50万条的少数分类样本便于属于这种情况。小数据分布不均衡:例如拥有1000条数据样本的数据集中,其中占有10条的少数分类样本便于属于这种情况。

样本类别分布不平衡主要出现在分类问题的建模上。导致样本量少的分类所包含的特征过少,很难从中提取规律;即使得到分类模型,也容易产生过度依赖于有限的数据样本而导致过拟合的问题,当模型应用到新的数据上,模型的准确性和鲁棒性很差。

样本分布不平衡主要在于不同类别间的样本比例差异,超过10倍,就要考虑该问题,超过20倍,一定要解决。

1. 数据挖掘中容易出现样本不均衡的场景

1. 异常检测场景

比如恶意刷单、黄牛订单、信用卡欺诈、电力窃电、设备故障等。这些数据样本所占的比例通常是整体样本中很少一部分,以信用卡欺诈为例,欺诈比例一般在 0.1% 以内。

2. 客户流失场景

大型企业流失的客户相对于整体客户通常是少量的。比如电信、石油等。

3. 低频事件的发生

例如每年1次的双11盛会一般都会产生较高的销售额,但放到全年来看这一天的销售额占比很可能只有1%不到,尤其对于很少参与活动的公司而言,这种情况更加明显。这种属于典型的低频事件。

2. 解决样本不均衡

1. 过抽样和欠抽样解决样本不均衡

过抽样

(也叫上采样、over-sampling)即增加分类中少量样本的数量,简单方法就是复制少数类样本形成多条记录,缺点是样本特征少导致过拟合。

改进的过抽样:通过在少数类中加入随机噪声、干扰数据或通过一定规则产生新的合成样本。如SMOTE算法(Synthetic Minority Oversampling Technique即合成少数类过采样技术)。

欠抽样

(也叫下采样、under-sample)即减少分类中多数样本的数量,简单方法就是随机去掉一些多数类样本减小规模,缺点丢失多数类样本中的重要信息。

总体上,过抽样和欠抽样更适合大数据分布不均衡的情况。

2. 正负样本的惩罚权重解决样本不均衡

思想:对不同样本数量的类别赋予不同的权重(一般分类中的小样本量类别权重高,大样本量类别权重低)。

很多算法都有基于类别参数的调整设置,以 SVM 为例,在class_weight:{dict, 'balanced'}中针对不同类别手动指定不同的权重。适用默认方法balanced,SVM将权重设置为与不同类别样本数量呈反比的权重来做自动均衡处理,计算公式:n_samples / (n_classes * np.bincount(y))。

3. 组合/集成方法解决样本不均衡

思想:在每次生成训练集时使用所有分类中的小样本量,同时从分类中的大样本量中随机抽取数据来与小样本量合并构成训练集,这样反复多次得到很多训练集和训练模型。最后使用组合方法(比如投票、加权投票等)产生分类预测结果。

例如: 在数据集中的正、负的样本分别为100和10000条,比例为1:100。此时可以将负样本(类别中的大量样本集)随机分为100份(当然也可以分更多),每份100条数据;然后每次形成训练集时使用所有的正样本(100条)和随机抽取的负样本(100条)形成新的数据集。如此反复可以得到100个训练集和对应的训练模型。

来自:《Python数据分析与数据化运营》

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

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

相关文章

5g通用模组是什么_中国移动联合芯讯通发布5G终端、芯片及测试产业报告

11月19日,2020中国移动全球合作伙伴大会以“5G融入百业 数智引领未来”为主题在广州召开,从多个维度展现了中国移动运用5G技术驱动各行业转型升级的强大实力。并于21日在展会现场发布了《5G终端、芯片及测试产业报告》。5G终端、芯片及测试产业报告发布现…

dell网卡linux驱动,DELL R710 服务器 Linux 系统网卡驱动安装

DELL R710在装完AS4U7版本的Linux后发现,网卡没有识别出来。怀疑是网卡驱动没有装上,打电话给DELL的工程师,得到的答复是装系统前必须用随机带的引导盘来安装才能将网卡驱动装上。现在系统已经装完了,总不能重装一遍吧&#xff0c…

博客网站源代码_详解SEO布词以及网站排名优化技巧

首先,谈谈新手以及老手在认知上容易出现的SEO误区,我认为有以下几点因素,不容忽视。1、SEO优化就是为了排名、就是发外链不少人认为做SEO就是为了排名,完全不考虑网站文章的质量、可读性以及用户体验,甚至不惜使用一些…

linux编译错误 程序中有游离的,操作系统实验报告 附思考题(24页)-原创力文档...

课程设计(综合实验)报告( 2015 -- 2016 年度第 1 学期)名 称: 操作系统综合实验题 目: oslab 综合实验院 系: 计算机系班 级:学 号:学生姓名:指导教师:设计周数: 分散进行成 绩&…

python合并路径和文件名_Python实例 分割路径和文件名

import os.path# 常用函数有三种:分隔路径,找出文件名.找出盘符(windows系统),找出文件的扩展名.# 根据你机器的实际情况修改下面参数.spath " D:/download/repository.7z "# case 1:p,f os.path.split(spath);print ( " dir is: " p)print ( " …

惠普g260鼠标宏软件_黑爵电竞鼠标AJ337 电竞手残党福音 鼠标宏一键火力全开

2020年,可以说是英特尔最难受的一年,多年来的挤牙膏大法也不灵了,面对AMD更先进的7mm制程以及更多的线程数,加上本身更合理的售价,说实话就连一向占据处理器半壁江山的英特尔也感受到了很高的威胁。AMD撕裂者系列发布以…

linux tcp压测工具,02.监控和压测工具 - 2.4.压测工具 - 《Linux性能调优指南》 - 书栈网 · BookStack...

压测工具其它有用工具在这里,我们会讨论主要的压力测试工具,选择合适的压测工具,才能准确衡量系统性能。好的压测工具有很多,可能的功能如下:发起压力监控性能监控系统使用率生成报告基准测试无非就是看系统能力是否达…

python 动态调整控件大小_python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例...

PyQt5动态(可拖动控件大小)布局控件QSplitter简介PyQt还提供了特殊的布局管理器QSplitter。它可以动态地拖动子控件之间的边界,算是一个动态的布局管理器,QSplitter允许用户拖动子控件的边界控制子控件的大小,并提供一个处理拖曳子控件的控制…

斐讯n1刷linux服务器,斐讯N1刷机Linux(Armbian)

一、降级N1打开ADB链接开始降级。降级后版本号不变二、第三方固件依然是上面的链接(官改v2.2)USB双头线链接HDMI借口最近的USB和电脑的USB进入线刷模式(电视不会显示任何东西,但是电脑会显示设备已连接)。打开上面的刷机工具刷入官改v2.2。理论刷完后重启即可进入安…

python 四足机器人运动学_撸了个四足机器人

纯粹分享一下踩过的坑…… Robot,男人的浪漫~组装完成后,就是这样子了:1 )主控:Raspberry Pi Zero W,1 个对于新手,这是最容易上手的硬件了。软件方面有很好的支持,资料非常丰富。例…

delphi开发LINUX程序,DELPHI开发LINUX包

DELPHI开发LINUX包我们知道,有了包的存在,开发插件架构的程序,才成为可能 。DELPHI在WINDOWS里面的包的扩展名是.bpl。在LINUX里面的包的扩展名是.o。怎样在LINUX里面加载.o的包?不论加载WINDOWS的包,还是加载LINUX的包…

python3多进程写时拷贝_python多进程实现复制文件

[Python] 纯文本查看 复制代码多进程实现复制文件步骤:(1)获得源文件夹路径;(2)获取源文件夹下各文件的文件名(3)获得目标文件夹(4)复制文件(文件夹不能复制)新增内容:复制一个文件夹下的所有文件知识点:(1)os模块:1&g…

在linux cuda安装教程,Ubuntu20.04安装cuda10.1的步骤(图文教程)

安装前准备cuda的主要用途是深度学习,而目前主流的深度学习框架tensorflow2最高支持cuda 10.1,因此本文讲解在ubuntu 20.04系统上安装cuda 10.1的主要过程。首先要查看你的nvidia显卡驱动是否支持cuda10.1版本。在终端执行以下命令:nvidia-sm…

9050 端口 linux 进程,Linux中查看某个端口占用情况

Bridge模式——对象结构型模式今天看了Bridge模式,对其进行简单的总结,并给出几篇通俗易懂的文章链接. (一)意图--将抽象部分和它的实现部分分离,使它们都可以独立地变化. 适用于从多维度描述的类型,拆解开来,使其能沿着各维度 ...如何在终端实时展现git分支在微博上看到ghosTM…

代码重构的方法和经验_关于烂代码优化重构的几点经验

是否已经读过前面两篇关于烂代码和好代码的文章?这些让人抓狂的烂代码,你碰到几种?什么才是好代码、高质量代码?工作中,总会不可避免的接触到烂代码,就像之前说的,几乎没有程序员可以完全避免写…

moodle环境安装linux,在Ubuntu 18.04/Debian 9上安装Moodle的步骤

本文介绍在Ubuntu 18.04/Debian 9系统上安装Moodle的的详细步骤,需要准备PHP、Apache/Nginx Web服务器及MySQL/MariaDB数据库。简介Moodle是一个免费的开源学习管理系统,用PHP编写,并在GNU通用公共许可证下发布。从Moodle创建学习课程&#x…

python分类下取得所有子类_如何找到给定名称的类的所有子类?

新样式类(即从object,这是Python 3中的缺省值。__subclasses__方法,该方法返回以下子类:class Foo(object): passclass Bar(Foo): passclass Baz(Foo): passclass Bing(Bar): pass以下是子类的名称:print([cls.__name__ for cls i…

linux路由表生成,路由表(FIB)内容的生成(一)

前面已经讲到过路由表的初始化,路由表是一个比较复杂的数据结构,一下子并不好理解。下面我们通过模块初始化时Linux的notify机制所触发的网络设备事件回调myfib_netdev_event,来逐步分析如何向FIB插入路由项,来进一步理解FIB。每一…

python调用库函数用ecb模式加密图片_AES中ECB模式的加密与解密(Python3.7)

本文主要解决的问题本文主要是讲解AES加密算法中的ECB模式的加密解密的Python3.7实现。具体AES加密算法的原理这里不做过多介绍,想了解的可以参考文末的参考链接。主要解决了两个问题:在Python3.7版本下,所依赖包的安装问题。(有一些博客时间…

linux跨版本升级,深度Deepin系统支持跨版本升级

很多以前安装有深度Deepin系统的用户提问,我使用的是Deepin 15.4或者是15.5、15.6版本能不能升级到Deepin 15.8,答案是能。深度Deepin系统是支持跨版本升级的,而不限于从Deepin 15.7升级到Deepin 15.8。在控制中心的更新选项中如果有新系统版…