一文带你了解”数据分箱“技术

一文带你了解”数据分箱“技术

引言:什么是分箱

分箱就是把数据特定的规则进行分组,实现数据的离散化,增强数据稳定性,减少过拟合风险。逻辑回归中进行分箱是非常必要的,其他树模型可以不进行分箱。

01.数据分箱

数据分箱(Binning)作为数据预处理的一部分,也被称为离散分箱或数据分段。其实分箱的概念其实很好理解,它的本质上就是把数据进行分组

我们以下面数据为例,左边是原始数据,右边是分箱后的数据:

英雄昵称(原始数据)从属类型(分箱后)
不知火舞法师
后羿射手
公孙离射手
妲己法师
庄周辅助
张飞辅助
马可波罗射手
海月法师
盾山辅助

英雄字段中的数据被分到了以下的不同类型

  • 法师
  • 射手
  • 辅助
数据分箱的好处
  • 相同数据进行遍历比较,避免了全部遍历比较
  • 大大减少了电脑IO次数,提高程序运行速度

02.基于python实现数据分箱案例

实现思路
  1. 先给定 last 为列表第一个数组(并存入temp列表中),将之后的数据从第二个开始与 last中的数据进行比较,如果相同存入 temp列表中。
  2. 如果数据不相同,则将 last 切换为 不同的那个数(并存入temp),并将 temp列表放入一个空列表中。

类型一:基本数据类型比对(数字)

代码实现
box = [1,1,1,2,2,2,3,3,4,4,5,5,5,5,5]

last = box[0]
temp = [box[0]]
box_list = [temp]

for a in box[1::]:
    if a == last:
        temp.append(a)
    else:
        last = a
        temp = [a]
        box_list.append(temp)

print(box_list) # [[1, 1, 1], [2, 2, 2], [3, 3], [4, 4], [5, 5, 5, 5, 5]]

# 实现按每一个分箱列表遍历数据(而不用全部遍历)
for boxs in box_list:
    for i in boxs:
        print(i)
实现效果
[1,1,1,2,2,2,3,3,4,4,5,5,5,5,5]

# 输出结果为
[[1, 1, 1], [2, 2, 2], [3, 3], [4, 4], [5, 5, 5, 5, 5]]

类型二:元组类型比对

代码实现
box = [('法师','不知火舞', '20'),  ('辅助','张飞', '18'),('法师','妲己', '21'),
       ('辅助','钟馗', '18'),('辅助','盾山', '18'),('射手','后羿', '17',),
       ('射手','公孙离', '10',),('法师','海月', '21'),('射手','马可波罗', '10',)]

last = box[0][0]
temp = [box[0]]
box_list = [temp]

for a in box[1::]:
    if a[0] == last:
        temp.append(a)
    else:
        last = a[0]
        temp = [a]
        box_list.append(temp)

print(box_list)

# 实现按每一个分箱列表遍历数据(而不用全部遍历)
for boxs in box_list:
    for i in boxs:
        print(i[0])  # 0取的英雄属性,1取英雄ID,3取使用场次

实现效果
#数据分箱前:
[('法师','不知火舞', '20'),  ('辅助','张飞', '18'),('法师','妲己', '21'),
 ('辅助','钟馗', '18'),('辅助','盾山', '18'),('射手','后羿', '17',),
 ('射手','公孙离', '10',),('法师','海月', '21'),('射手','马可波罗', '10',)]

#数据分箱后:
[[('法师', '不知火舞', '20'), ('法师', '妲己', '21'), ('法师', '海月', '21')], 
[('辅助', '张飞', '18'), ('辅助', '钟馗', '18'), ('辅助', '盾山', '18')],
[('射手', '后羿', '17'), ('射手', '公孙离', '10'), ('射手', '马可波罗', '10')]]
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LVS(Linux Virtual Server)是一种基于 Linux 系统的负载均衡集群技术,它主要用于将网络流量分发到多个服务器上,以提高系统的可靠性、可扩展性和性能。 LVS 集群一般包括四个组件:调度器(LVS 调度器)、前端服务器(负载均衡器)、后端服务器(真实服务器)和存储服务器(用于共享数据)。首先,调度器接收来自客户端的请求,然后根据配置的调度算法(如轮询、加权轮询、最小连接数等)将请求分发到多个前端服务器。前端服务器接收到请求后,通过相应的负载均衡算法将请求转发到后端的真实服务器上进行处理。在整个过程中,存储服务器用于存放共享的数据,以确保所有的真实服务器都能获取到相同的数据,并提供一致的服务。 LVS 集群的优点是能够提高网站的稳定性和可靠性,当某一台服务器出现故障时,调度器会自动将请求分发到其他可用的服务器上,从而保证服务的连续性。同时,LVS 集群还能够通过增加前端服务器和后端服务器的数量来提高系统的性能和吞吐量,以满足不断增长的用户需求。 在实际应用中,LVS 集群需要合理配置,包括选择合适的调度算法、调整每台服务器的权重、选择适当的硬件设备等。此外,还需要及时监控集群的运行状态,及时发现和解决故障,以确保整个系统的正常运行。 总的来说,LVS 负载均衡集群是一种强大而高效的集群技术,能够帮助企业提高系统的可靠性和性能,是现代互联网应用中不可或缺的重要组成部分。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值