【数据挖掘】数据变换与离散化讲解与实战(超详细 附源码)

简介: 【数据挖掘】数据变换与离散化讲解与实战(超详细 附源码)

需要源码和PPT请点赞关注收藏后评论区留言私信~~~

在数据预处理过程中,不同的数据适合不同的数据挖掘算法。数据变换是一种将原始数据变换成较好数据格式的方法,以便作为数据处理前特定数据挖掘算法的输入。数据离散化是一种数据变换的形式

一、数据变换的策略

1. 光滑 数据光滑用于去掉数据中的噪声。常用的数据平滑方法有分箱、回归和聚类等方法

2. 属性构造 属性构造是通过由给定的属性构造新的属性并添加到属性集中,以帮助数据挖掘

3. 聚集 聚集是对数据进行汇总或聚集。例如,可以聚集日销售数据,计算月和年销售量。通常,聚集用来为多个抽象层的数据分析构造数据立方体

4. 规范化 把属性数据按比例缩放,使之落入一个特定的小区间,如-1.0~1.0

(1)最小-最大规范化

(2)z分数规范化

(3)小数定标

5. 离散化

1)通过分箱离散化 分箱是一种基于指定的箱个数的自顶向下的分裂技术。例如使用等宽或等频分箱,然后用箱均值或中位数替换箱中的每个值,可以将属性值离散化。分箱对用户指定的箱个数很敏感,也易受离群点的影响

(2)通过直方图离散化 直方图把属性A的值划分为不相交的区间,称作桶或箱。可以使用各种划分规则定义直方图。如在等宽直方图中,将值分成相等分区或区间。直方图分析算法可以递归地用于每个分区,自动地产生多级概念分层,直到达到一个预先设定的概念层数,过程终止

(3)通过聚类、决策树和相关分析离散化

6. 由标称数据产生概念分层

对于标称数据,概念分层可以基于模式定义以及每个属性的不同值个数产生。使用概念分层变换数据使得较高层的知识模式可以被发现。它允许在多个抽象层进行挖掘

二、Python数据变换与离散化

1. 数据规范化

数据分析的预处理除了数据清洗、数据合并和标准化之外,还包括数据变换的过程,如类别型数据变换和连续型数据的离散化

数据规范化示例

import pandas as pd
import numpy as np
a=[47, 83, 81, 18, 72, 41]
b=[56, 96, 84, 21, 87, 67]
data=np.array([a, b]).T
dfab = pd.DataFrame(data, columns=['A', 'B'])
print('最小-最大规范化:\n',(dfab- dfab.min())/(dfab.max()- dfab.min()))
print('零均值规范化:\n',(dfab- dfab.mean())/dfab.std())

2. 类别型数据的哑变量处理

类别型数据是数据分析中十分常见的特征变量,但是在进行建模时,Python不能像R那样去直接处理非数值型的变量,因此往往需要对这些类别变量进行一系列转换,如哑变量

哑变量(Dummy Variables)用以反映质的属性的一个人工变量,是量化了的自变量,通常取值为0或1

Python中利用pandas库中的get_dummies函数对类别型特征进行哑变量处理

数据的哑变量处理

df = pd.DataFrame([  
            ['green', 'M', 10.1, 'class1'],   
            ['red', 'L', 13.5, 'class2'],   
            ['blue', 'XL', 14.3, 'class1']])  
df.columns = ['color', 'size', 'prize','class label']  
print(df)
pd.get_dummies(df)

3.连续型变量的离散化

数据分析和统计的预处理阶段,经常会碰到年龄、消费等连续型数值,而很多模型算法尤其是分类算法都要求数据是离散的,因此要将数值进行离散化分段统计,提高数据区分度

常用的离散化方法主要有等宽法、等频法和聚类分析法

(1)等宽法

将数据的值域划分成具有相同宽度的区间,区间个数由数据本身的特点决定或者用户指定

Pandas提供了cut函数,可以进行连续型数据的等宽离散化。cut函数的基础语法格式为:

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

(2)等频法

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

cut方法应用

np.random.seed(666)
score_list = np.random.randint(25, 100, size = 10)
print('原始数据:\n',score_list)
bins = [0, 59, 70, 80, 100]
score_cut = pd.cut(score_list, bins)
print(pd.value_counts(score_cut)) 
# 统计每个区间人数

等频法离散化连续型数据

def SameRateCut(data,k):
    k = 2
    w = data.quantile(np.arange(0,1+1.0/k,1.0/k))
    data = pd.cut(data,w)
    return data
result = SameRateCut(pd.Series(score_list),3)
result.value_counts()

(3)聚类分析法

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

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
3月前
|
SQL 存储 算法
【数据挖掘】恒生金融有限公司2023届秋招数据ETL工程师笔试题解析
恒生科技2022年9月24号数据ETL工程师岗位的笔试题目及答案汇总,包括了SQL选择题、SQL编程题和业务应用SQL编程题,涵盖了数据库基础知识、SQL语句编写以及数据仓库概念等多个方面。
60 2
【数据挖掘】恒生金融有限公司2023届秋招数据ETL工程师笔试题解析
|
3月前
|
机器学习/深度学习 安全 算法
【2023年第十一届泰迪杯数据挖掘挑战赛】A题:新冠疫情防控数据的分析 32页和40页论文及实现代码
本文总结了2023年第十一届泰迪杯数据挖掘挑战赛A题的新冠疫情防控数据分析,提供了32页和40页的论文以及实现代码,涉及密接者追踪、疫苗接种影响分析、重点场所管控以及疫情趋势研判等多个方面,运用了机器学习算法和SEIR传染病模型等方法。
60 0
【2023年第十一届泰迪杯数据挖掘挑战赛】A题:新冠疫情防控数据的分析 32页和40页论文及实现代码
|
3月前
|
机器学习/深度学习 安全 算法
【2023年第十一届泰迪杯数据挖掘挑战赛】A题:新冠疫情防控数据的分析 建模方案及python代码详解
本文介绍了2023年第十一届泰迪杯数据挖掘挑战赛A题的解题思路和Python代码实现,涵盖了新冠疫情防控数据的分析、建模方案以及数据治理的具体工作。
74 0
【2023年第十一届泰迪杯数据挖掘挑战赛】A题:新冠疫情防控数据的分析 建模方案及python代码详解
|
5月前
|
数据采集 数据可视化 数据挖掘
数据挖掘实战:使用Python进行数据分析与可视化
在大数据时代,Python因其强大库支持和易学性成为数据挖掘的首选语言。本文通过一个电商销售数据案例,演示如何使用Python进行数据预处理(如处理缺失值)、分析(如销售额时间趋势)和可视化(如商品类别销售条形图),揭示数据背后的模式。安装`pandas`, `numpy`, `matplotlib`, `seaborn`后,可以按照提供的代码步骤,从读取CSV到数据探索,体验Python在数据分析中的威力。这只是数据科学的入门,更多高级技术等待发掘。【6月更文挑战第14天】
482 11
|
5月前
|
数据采集 机器学习/深度学习 数据可视化
数据挖掘实战:Python在金融数据分析中的应用案例
Python在金融数据分析中扮演关键角色,用于预测市场趋势和风险管理。本文通过案例展示了使用Python库(如pandas、numpy、matplotlib等)进行数据获取、清洗、分析和建立预测模型,例如计算苹果公司(AAPL)股票的简单移动平均线,以展示基本流程。此示例为更复杂的金融建模奠定了基础。【6月更文挑战第13天】
1454 3
|
5月前
|
人工智能 分布式计算 算法
数据挖掘实战随笔更新清单
这是一系列技术博客的摘要,涵盖了多个主题。包括Elasticsearch实战经验、Maxcompute中的Geohash转换和GPS处理、Python环境配置与管理(如Jupyter、Miniforge、Miniconda)、批量接口调用、多进程CSV图片下载、Excel到Markdown转换、Scikit-learn的异常检测(OC-SVM)和模型总结、人工智能领域的图像分类和识别、文本挖掘算法以及数仓相关的行转列处理。所有文章都在持续更新和补充中。
47 2

热门文章

最新文章