Python特征工程 — 1.1 特征二值化

news2024/11/27 2:32:22

目录

1 特征二值化

1.1 特征二值化简介

1.2 实验数据集 

2 阈值法

2.1 scikit-learn库实现阈值法二值化

2.2 pandas实现阈值法二值化

2.3 自定义函数实现阈值法二值化

3 其他方法实现二值化

3.1 中位数法

3.2 众数法

3.3 标准差法


1 特征二值化

1.1 特征二值化简介

特征二值化是一种数据预处理技术,特别是在处理分类问题时将特征值转换为二进制值,通常为0和1。这种转换可以简化模型的复杂性,提高计算效率,并在某些情况下提高模型的性能。

特征二值化常用方法有如下几种,中位数法、众数法、标准差法相当于是阈值法中阈值的特殊取值:

  1. 阈值法:选择一个阈值,将所有大于或等于阈值的特征值设置为1,小于阈值的设置为0。

  2. 中位数法:使用特征值的中位数作为分界点,将大于或等于中位数的值设置为1,小于中位数的值设置为0。

  3. 众数法:将特征值中出现次数最多的值作为1,其他值设置为0。

  4. 标准差法:如果特征值的绝对值大于其标准差的某个倍数,则将其设置为1,否则为0。

特征二值化的使用场景:特征二值化在某些算法中非常有用,比如决策树和随机森林,因为这些算法对于特征的数值大小不敏感,只关心特征值的分布。然而,在其他一些算法中,如线性回归或神经网络,特征的数值大小可能会影响模型的性能,因此在这些情况下可能不适合使用特征二值化。

1.2 实验数据集 

背景描述:本数据集汇集了某个电商平台的用户基本信息、行为习惯和互动数据。它包括用户的年龄、性别、居住地区、收入水平等基本属性,以及他们的兴趣偏好、登录频率、购买行为和平台互动等动态指标。

数据说明:

字段说明
User_ID每个用户的唯一标识符,便于追踪和分析。
Age用户的年龄,提供对人口统计偏好的洞察。
Gender用户的性别,使能性别特定的推荐和定位。
Location用户所在地区:郊区、农村、城市,影响偏好和购物习惯。
Income用户的收入水平,表明购买力和支付能力。
Interests用户的兴趣,如运动、时尚、技术等,指导内容和产品推荐。
Last_Login_Days_Ago用户上次登录以来的天数,反映参与频率。
Purchase_Frequency用户进行购买的频率,表明购物习惯和忠诚度。
Average_Order_Value用户下单的平均价值,对定价和促销策略至关重要。
Total_Spending用户消费的总金额,表明终身价值和购买行为。
Product_Category_Preference用户偏好的特定产品类别。
Time_Spent_on_Site_Minutes用户在电子商务平台上花费的时间,表明参与程度。
Pages_Viewed用户在访问期间浏览的页面数量,反映浏览活动和兴趣。
Newsletter_Subscription用户是否订阅了营销活动通知。

数据下载: 链接:https://pan.baidu.com/s/1yT1ct_ZM5uFLgcYsaBxnHg?pwd=czum  提取码:czum 

运行方法:将代码拷贝到jupyter中运行即可

阈值法

阈值法通过设定一个阈值,原字段大于阈值的被设定为1,否则为0,转换函数为:

实现目标:对于示例数据集当中的"Purchase_Frequency"字段是用户进行购买的频率,表明购物习惯和忠诚度。但购买频率达到一定数量时,认为是忠诚的,标记为1,否则标记为0。

2.1 scikit-learn库实现阈值法二值化

在scikit-learn的preprocessing中,使用Binarizer可以将字段二值化,示例如下:

from sklearn.preprocessing import Binarizer

# 创建Binarizer实例,设置阈值
binarizer = Binarizer(threshold=4)

# 直接使用Binarizer转换dataframe中的列
data['Purchase_Frequency_binarized'] = binarizer.fit_transform(data[['Purchase_Frequency']])

# 打印结果
data[['Purchase_Frequency', 'Purchase_Frequency_binarized']]

运行结果如下:

2.2 pandas实现阈值法二值化

除了使用Binarizer,在可以使用pandas.cut对数据进行离散化,这种方式通过传入一个用于表示阈值的"bins"参数,将数据进行分割,同样也可以实现上述功能。如下所示:

import pandas as pd

# 应用自定义函数到dataframe的列
data['Purchase_Frequency_binarized'] = pd.cut(data['Purchase_Frequency'], bins=[-float('inf'), 4, float('inf')], labels=[0, 1])
# 打印结果
data[['Purchase_Frequency', 'Purchase_Frequency_binarized']]

2.3 自定义函数实现阈值法二值化

import numpy as np

def binarize_by_threshold(data, threshold):
    return np.where(data >= threshold, 1, 0)

data['Purchase_Frequency_binarized'] =  binarize_by_threshold(data['Purchase_Frequency'], 4)
data[['Purchase_Frequency', 'Purchase_Frequency_binarized']]

3 其他方法实现二值化

中位数法、众数法、标准差法本质上是阈值法取特殊阈值

3.1 中位数法

中位数法:使用特征值的中位数作为分界点,将大于或等于中位数的值设置为1,小于中位数的值设置为0。

def binarize_by_median(data):
    median_value = np.median(data)
    return np.where(data >= median_value, 1, 0)

3.2 众数法

众数法:将特征值中出现次数最多的值作为1,其他值设置为0。

from scipy import stats

def binarize_by_mode(data):
    mode_value = stats.mode(data)[0][0]
    return np.where(data == mode_value, 1, 0)

3.3 标准差法

标准差法:如果特征值的绝对值大于其标准差的某个倍数,则将其设置为1,否则为0。

def binarize_by_std_dev(data, multiplier=1):
    mean = np.mean(data)
    std_dev = np.std(data)
    threshold = mean + multiplier * std_dev
    return np.where(data >= threshold, 1, 0)

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

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

相关文章

国产操作系统上netstat命令详解 _ 统信 _ 麒麟 _ 中科方德

原文链接:国产操作系统上netstat命令详解 | 统信 | 麒麟 | 中科方德 Hello,大家好啊!今天给大家带来一篇在国产操作系统上使用netstat命令的详解文章。netstat是网络统计(network statistics)的缩写,它是一…

力扣每日一题 6/28 动态规划/数组

博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 2742.给墙壁刷油漆【困难】 题目: 给你两个长度为 n 下标从 0…

Hive SQL:实现炸列(列转行)以及逆操作(行转列)

目录 列转行行转列 列转行 函数: EXPLODE(ARRAY):将ARRAY中的每一元素转换为每一行 EXPLODE(MAP):将MAP中的每个键值对转换为两行,其中一行数据包含键,另一行数据包含值 数据样例: 1、将每天的课程&#…

vue全局方法plugins/utils

一、在src目录下创建一个plugins文件夹 test.ts文件存放创建的方法,index.ts用于接收所有自定义方法进行统一处理 二、编写自定义方法 // test.ts文件 export default {handleTest(val1: number, val2: number) {// 只是一个求和的方法return val1 val2;}, };三…

hive调优原理详解:案例解析参数配置(第17天)

系列文章目录 一、Hive常问面试函数(掌握) 二、Hive调优如何配置(重点) 文章目录 系列文章目录前言一、Hive函数(掌握)11、JSON数据处理12、炸裂函数13、高频面试题13.1 行转列13.2 列转行 14、开窗函数&a…

一些指标的学习

1.平均倒数排名(MRR) 1.定义 MRR 是衡量检索系统返回的结果列表中第一个相关结果位置的指标。具体来说,它是所有查询倒数排名的平均值。 2.计算步骤 对每个查询,找到第一个正确答案在结果列表中的排名 𝑅&#x1d44…

鸿蒙登录页面及页面跳转的设计

目录 任务目标任务分析任务实施1.新建工程项目HMLogin2.设计登录页面Index.visual3.设计第二个页面SecondPage4.修改Index.ets代码5.修改SecondPage.ets代码6.运行工程 任务目标 设计一个简单的登录页面,要求可以将第一页的登录信息,传递到第二个页面&a…

VMware ESXi 技术

目录 一、VMware ESXi安装 1. 在VMware WorkStation中创建一台虚拟机 2. 进入VMware ESXi控制台 3. 配置VMware ESXi网络 二、使用Web网页端登录管理ESXi 1. 分配许可证密钥(选做) 2. 管理ESXi 三、VMware ESXi控制台 1. 创建虚拟机 2. 定制虚拟…

静态链表详解(C语言版)

顺序表和链表的优缺点 顺序表和链表是两种基本的线性数据结构,它们各自有不同的优缺点,适用于不同的应用场景。 顺序表(Sequential List,通常指数组) 优点: 随机访问:可以通过索引快速访问任…

【Linux】服务器被work32病毒入侵CPU占用99%

文章目录 一、问题发现二、问题解决2.1 清楚病毒2.2 开启防火墙2.3 修改SSH端口2.4 仅使用凭据登录(可选) 一、问题发现 我的一台海外服务器,一直只运行一项服务(你懂的),但是前不久我发现CPU占用99%。没在…

R语言学习笔记1-介绍与安装

R语言学习笔记1-介绍与安装 简介应用领域R语言优势安装步骤(linux版本)在R脚本中绘制简单的条形图示例 简介 R语言是一种非常强大和流行的据分析和统计建模工具。它是一种开源的编程语言和环境,专门设计用于数据处理、统计分析和可视化。 应…

DP(动态规划)【2】 最大连续子列和 最长不降子序列

1.最大连续子列和 #include <iostream> #include <vector> #include <cmath> #include <string> #include <cstring> #include <queue> using namespace std; const int N10002,maxn10;int n,m,k,f[N]{0},dp[N]{0};int main() {scanf(&quo…

JavaParser抽取测试用例对应的被测方法

背景介绍 博主目前要做的工作需要将一个java项目的所有RD手写的测试用例和被测方法对应起来&#xff0c;最后将得到的结果存入一个json文件。 本教程以项目GitHub - binance/binance-connector-java 为例。 结果展示 最终会得到一个 funcTestMap.json&#xff0c;里面存放着…

深度学习实验第T2周:彩色图片分类

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** 目录 一、前言 目标 二、我的环境&#…

煤安防爆手机在煤矿井下使用时需要符合什么标准

煤安防爆手机在煤矿井下使用时&#xff0c;需符合严格的防爆安全标准&#xff0c;如煤安MA防爆合格证&#xff0c;以确保在易燃易爆环境中安全无虞。同时&#xff0c;手机还需具备防尘防水、抗冲击等环境适应性要求&#xff0c;以及优异的通信性能&#xff0c;以满足煤矿工作的…

python 获取遮挡窗口界面并操作窗口

有时候我们需要程序自动化帮我们处理一些事情,这时候我们会想到使用按键精灵等一些可以模拟人工操作的软件代替我们劳动,但是,这种操作有个前提就是需要将操作界面置于最顶层,这样就会影响我们做其他事情,这时我们就不希望操作界面置于最外层,影响我们做其他操作。 今天…

JAVA毕业设计145—基于Java+Springboot+vue+uniapp的驾校预约小程序(源代码+数据库+15000字论文)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvueuniapp的驾校预约小程序(源代码数据库15000字论文)145 一、系统介绍 本项目前后端分离&#xff0c;分为用户、教练、管理员三种角色 1、用户&#xff1a; …

技术分享:分布式数据库DNS服务器的架构思路

DNS是企业数字化转型的基石。伴随微服务或单元化部署的推广&#xff0c;许多用户也开始采用分布式数据库将原来的单体数据库集群服务架构拆分为大量分布式子服务集群&#xff0c;对应不同的微服务或服务单元。本文将从分布式数据库DNS服务器的架构需求、架构分析两方面入手&…

今天起,全球所有Mac用户可免费安装桌面版ChatGPT

在 macOS 上&#xff0c;用户在安装新的 ChatGPT 应用程序后&#xff0c;使用 Option Space 的键盘组合即可快速调用 ChatGPT。 刚刚&#xff0c;OpenAI 宣布推出适用于 macOS 的应用程序。 虽然 Mac 应用程序尚未在 Mac App Store 中提供&#xff0c;但用户可以直接从 Open…

计算机网络之OSI七层体系结构

目录 1.物理层 1.1物理层组成 1.2物理层功能 1.3物理层服务 1.4物理层标准 1.5物理层接口 2.数据链路层 2.1基于物理层的问题 2.2数据链路层功能 2.3数据链路层服务 2.4数据链路层协议 3.网络层 3.1基于DL层的问题 3.2网络层功能 3.3网络层服务 3.4网络层协议 …