5.4 转换数据

2023-09-18 22:16:09

数据集 E:/Input/ptest.csv
在这里插入图片描述

5.4.1 哑变量处理类别型数据

  数据分析模型中有相当一部分的算法模型都要求输入的特征为数值型,但实际数据中特征的类型不一定只有数值型,还会存在相当一部分的类别型,这部分的特征需要经过哑变量处理才可以放入模型之中。哑变量处理的原理示例如图:
在这里插入图片描述
  Python中可以利用pandas库中的get_dummies函数对类别型特征进行哑变量处理

pandas.get_dummies(data, prefix=None, prefix_sep=‘_’, dummy_na=False, columns=None, sparse=False, drop_first=False)

在这里插入图片描述

import pandas as pd
import numpy as np
df = pd.read_csv('E:/Input/ptest.csv', encoding='gbk')
data = df['name'].head(5)
print(data)
print(pd.get_dummies(data))

在这里插入图片描述
  从结果中可以发现,对于一个类别型特征,若其取值有m个,则经过哑变量处理后就变成了m个二元特征,并且这些特征互斥,每次只有一个激活,这使得数据变得稀疏。
  对类别型特征进行哑变量处理主要解决了部分算法模型无法处理类别型数据的问题,这在一定程度上起到了扩充特征的作用。由于数据变成了稀疏矩阵的形式,因此也加速了算法模型的运算速度。

5.4.2 离散化连续型数据

  某些模型算法,特别是某些分类算法如ID3决策树算法和Apriori算法等,要求数据是离散的,此时就需要将连续型特征(数值型)变换成离散型特征(类别型)。
  连续特征的离散化就是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或整数值代表落在每个子区间中的数据值。
  因此离散化涉及两个子任务,即确定分类数以及如何将连续型数据映射到这些类别型数据上。其原理如图:
在这里插入图片描述
  常用的离散化方法主要有3种:等宽法、等频法和聚类分析法(一维)。

1、等宽法

  将数据的值域分成具有相同宽度的区间,区间的个数由数据本身的特点决定或者用户指定,与制作频率分布表类似。pandas提供了cut函数,可以进行连续型数据的等宽离散化,其基础语法格式如下。

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False)

在这里插入图片描述

import pandas as pd
df = pd.read_csv('E:/Input/ptest.csv', encoding='gbk')
data = df['amounts']
# 1、等宽法
price = pd.cut(data, 5)
print(price.value_counts())

在这里插入图片描述
  使用等宽法离散化的缺陷为:等宽法离散化对数据分布具有较高要求,若数据分布不均匀,那么各个类的数目也会变得非常不均匀,有些区间包含许多数据,而另外一些区间的数据极少,这会严重损坏所建立的模型。

2、等频法

  cut函数虽然不能够直接实现等频离散化,但是可以通过定义将相同数量的记录放进每个区间。

import pandas as pd
import numpy as np
df = pd.read_csv('E:/Input/ptest.csv', encoding='gbk')
data = df['amounts']
# 2、等频法
# 自定义等频法离散化函数
def SameRateCut(data, k):
    w = data.quantile(np.arange(0,1+1.0/k, 1.0/k))
    data = pd.cut(data,w)
    return data
price = SameRateCut(data, 5)
print(price.value_counts())

在这里插入图片描述
  等频法离散化的方法相比较于等宽法离散化而言,避免了类分布不均匀的问题,但同时却也有可能将数值非常接近的两个值分到不同的区间以满足每个区间中固定的数据个数。

3、聚类分析法

  一维聚类的方法包括两个步骤:
   (1)将连续型数据用聚类算法(如K-Means算法等)进行聚类。
   (2)处理聚类得到的簇,将合并到一个簇的连续型数据做同一标记。
  聚类分析的离散化方法需要用户指定簇的个数,用来决定产生的区间数。

import pandas as pd
df = pd.read_csv('E:/Input/ptest.csv', encoding='gbk')

# 3、基于聚类分析的离散化
# 自定义数据K-Means聚类离散化函数
def KmeansCut(data, k):
    from sklearn.cluster import KMeans  # 引入K-Means
    # 建立模型
    kmodel = KMeans(n_clusters=k)
    kmodel.fit(data.values.reshape((len(data), 1)))
    # 输出聚类中心并排序
    c = pd.DataFrame(kmodel.cluster_centers_).sort_values(0)
    w = c.rolling(2).mean().iloc[1:]  # 相邻两项求中点,作为边界点
    w = [0] + list(w[0]) + [data.max()]  # 把首末边界点加上
    data = pd.cut(data,w)  #
    return data
data = df['amounts']
price = KmeansCut(data, 5)
print(price.value_counts())

在这里插入图片描述
  k-Means聚类分析的离散化方法可以很好地根据现有特征的数据分布状况进行聚类,但是由于k-Means算法本身的缺陷,用该方法进行离散化时依旧需要指定离散化后类别的数目。此时需要配合聚类算法评价方法,找出最优的聚类簇数目。

更多推荐

靶场练习——SDcms文件上传漏洞靶场

文章目录前言一、寻找网站后台页面1、点击请登录,查看URL2、修改URL参数,找到后台登录页面二、登录后台管理系统1、不能使用爆破2、使用弱口令登录三、寻找文件上传点四、上传文件操作1、上传普通的图片文件,查看数据包2、尝试上传PHP文件3、上传phpinfo()函数,获取系统版本信息4、绕过过滤五、尝试上传websh

Wish下单支付教程,测评养号需要满足哪些技术要点?

Wish是2011年成立的一家高科技独角兽公司,有90%的卖家来自中国,也是北美和欧洲最大的移动电商平台。它使用一种优化算法大规模获取数据,并快速了解如何为每个客户提供最相关的商品,让消费者在移动端便捷购物的同时享受购物的乐趣,被评为硅谷最佳创新平台和欧美最受欢迎的购物类APP。1.打开wish首页,注册账号。2.进入

SSL证书如何做到保障网站安全?

当网站显示不安全时,用户会在头脑中产生该网站是否合法的疑问,如果是购物网站或者购物商城,那意味着可能会损失大部分的用户。而SSL证书能有效保障网站的安全性,轻松解决网站不被用户信任的问题。那么,SSL证书究竟是如何保障网站安全的呢?本文将为大家解答这一问题。SSL证书怎么保障网站安全?加密通信SSL证书是在Web服务器

【JAVASE】图书管理系统

⭐作者:小胡_不糊涂🌱作者主页:小胡_不糊涂的个人主页📀收录专栏:浅谈Java💖持续更文,关注博主少走弯路,谢谢大家支持💖图书管理系统1.设计思路图2.创建book包2.1Book类2.2BookList类3.创建operation包3.1FindOperation类-查找图书3.2AddOperation类-

电子图书馆

bookget支持一下电子图书馆藏书:中国地区数字图书馆:国家图书馆http://read.nlc.cn/thematDataSearch/toGujiIndex北京故宫博物院-故宫名画记https://minghuaji.dpm.org.cn/广州大典http://gzdd.gzlib.gov.cn/Hrcanton

时间序列的重采样和pandas的resample方法介绍

重采样是时间序列分析中处理时序数据的一项基本技术。它是关于将时间序列数据从一个频率转换到另一个频率,它可以更改数据的时间间隔,通过上采样增加粒度,或通过下采样减少粒度。在本文中,我们将深入研究Pandas中重新采样的关键问题。为什么重采样很重要?时间序列数据到达时通常带有可能与所需的分析间隔不匹配的时间戳。例如以不规则

DETR纯代码分享(八)position_encoding.py(models)

一、导入一些Python库和模块importmathimporttorchfromtorchimportnnfromutil.miscimportNestedTensor上面的代码段主要是Python代码,用于导入一些Python库和模块,以下是对每行代码的详细解释:importmath:这一行代码导入了Python的

【STM32笔记】HAL库I2C通信配置、读写操作及通用函数定义

【STM32笔记】HAL库I2C通信配置、读写操作及通用函数定义文章目录I2C协议I2C配置I2C操作判断I2C是否响应I2C读写附录:Cortex-M架构的SysTick系统定时器精准延时和MCU位带操作SysTick系统定时器精准延时延时函数阻塞延时非阻塞延时位带操作位带代码位带宏定义总线函数一、位带操作理论及实践

解决Selenium中无法点击元素,Selemium使用JS代码 driver.execute_script点击元素

@FindBy(how=How.XPATH,using="//*[text()='A1.Approved']")privateWebElementApproved;driver.execute_script("arguments[0].click();",Approved)这句话的意思是使用JavaScript在浏览器

【C++】AVL树

个人主页:🍝在肯德基吃麻辣烫我的gitee:C++仓库个人专栏:C++专栏文章目录前言一、什么是AVL树?设计AVL树的原因二、AVL树的性质三、二叉树节点的定义四、AVL树的插入旋转1)右单旋2)左单旋3)左右双旋4)右左双旋AVL树插入完整代码验证一棵树为AVL树AVL树的性能分析总结前言本文章将会模拟实现一棵A

iMazing 2 .17.9最新官方中文版免费下载安装激活

iMazing2.17.9最新版是一款帮助用户管理IOS手机的应用程序,iMazing2最新版能力远超iTunes提供的终极的iOS设备管理器。IMazing与你的iOS设备(iPhone、iPad或iPod)相连,使用起来非常的方便。作为苹果指定的iOS设备同步工具。mazing什么意思iMazing2.17.9是一

热文推荐