数据预处理 #数据挖掘 #python

news2024/11/25 2:41:17

数据分析中的预处理步骤是数据分析流程中的重要环节,它的目的是清洗、转换和整理原始数据,以便后续的分析能够准确、有效。预处理通常包括以下几个关键步骤:

  1. 数据收集:确定数据来源,可能是数据库、文件、API或网络抓取,确保数据的质量和完整性。

  2. 数据清洗(Data Cleaning)

    • 缺失值处理:填充、删除或估算缺失的数据。
    • 异常值检测:识别并可能修复或排除不合理的数值。
    • 重复值检查:删除重复记录,保持数据唯一性。
    • 数据类型转换:将数据调整为正确的格式,如日期时间格式化、数值类型等。
  3. 数据集成(Data Integration):如果数据来自多个源,需要合并和统一数据格式。

  4. 数据转换(Data Transformation)

    • 标准化或归一化:使数据具有可比性,例如Z-score标准化或Min-Max缩放。
    • 编码分类变量:如One-Hot Encoding或Label Encoding。
    • 特征工程:创建新的特征,比如从文本中提取关键词或计算衍生指标。
  5. 数据降维(Dimensionality Reduction):如果数据维度过高,可能使用PCA(主成分分析)或LDA(潜在狄利克雷分配)等方法减少冗余。

  6. 数据划分(Data Splitting):将数据集分为训练集、验证集和测试集,用于模型的训练和评估。

  7. 数据采样(Sampling):对于大规模数据,可能需要进行随机抽样或分层抽样以平衡类别分布。

  8. 数据可视化(Exploratory Data Analysis, EDA):初步了解数据的分布、关联性和模式。

完成这些预处理步骤后,数据就准备好了供机器学习模型进行训练和预测。预处理的质量直接影响到分析结果的可靠性。


接下来进行一个小小案例讲解:

  • 1、缺失值处理
#1、
#读取数据
import pandas as pd
data = pd.read_excel('学生信息表.xlsx')
#查看属性缺失值情况
data.info()
data.isnull()
#删除“籍贯”为空的行
data = data.dropna(subset=["籍贯"])
#使用平均年龄填充“年龄”属性为空的数据
data['年龄'].fillna(data['年龄'].mean(),inplace=True)
#使用性别的众数填充“性别”属性为空的列
data.fillna({'性别':data['性别'].mode()[0]},inplace=True)
  • (1)读取“学生信息表.xlsx”。
  • (2)使用info()方法查看每一属性的缺失值情况。
  • (3)删除“籍贯”属性为空的行。
  • (4)使用平均年龄填充“年龄”属性为空的数据。
  • (5)使用性别的众数填充“性别”属性为空的列。
  • 2、非数值数据处理
  • #2、
    #将“性别”属性设置为哑变量,删除“性别_女”,并将“性别_男”改为“性别”
    data = pd.get_dummies(data,columns=['性别'])
    data = data.drop(columns = '性别_女')
    data = data.rename(columns={'性别_男':'性别'})
    #对“籍贯”属性进行编号处理
    from sklearn.preprocessing import LabelEncoder
    le = LabelEncoder()
    label = le.fit_transform(data['籍贯'])
    data['籍贯'] = label
  • (1)将“性别”属性设置为哑变量,删除“性别_女”,并将“性别_男”改为“性别”。
  • (1为性别男,0为性别女)
  • (2)对“籍贯”属性进行编号处理。
  • (0为云南;1为江苏;2为浙江;3为湖北)
  • 3、异常值的处理
  • #3、
    #箱线图观察“年龄”属性有无异常值
    data.boxplot(column ='年龄' )
    #对异常值进行标注,标注在out1属性中
    import numpy as np
    data['out1'] = np.where(data['年龄'] < 30,0,1)
    #使用2倍标准差法标注异常值,标注在out2属性中
    data['out2'] = abs((data['年龄']-data['年龄'].mean())/data['年龄'].std()) > 2
  • (1)箱线图观察“年龄”属性有无异常值;
  • (2)对异常值进行标注,标注在out1属性中;
  • (3)使用2倍标准差法标注异常值,标注在out2属性中。
  • 4、数据标准化
  • #4、
    #生成数据
    data2 = pd.DataFrame({'酒精含量(%)': [50, 60, 40, 80, 90], '苹果酸含量(%)': [2, 1, 1, 3, 2]})
    print(data2)
    #对各列进行z-score标准化
    from sklearn.preprocessing import StandardScaler
    data2_new1 = StandardScaler().fit_transform(data2)
    print(data2_new1)
    #对各列进行min-max标准化
    from sklearn.preprocessing import MinMaxScaler
    data2_new2 = MinMaxScaler().fit_transform(data2)
    print(data2_new2)
  • 如下数据:
  • (1)对以上数据的各列进行z-score标准化;
  • (2)对以上数据的各列进行min-max标准化。
  • 5、生成多项式特征
  • #5、
    #生成多项式特征
    from sklearn.preprocessing import PolynomialFeatures
    data3 = np.array([[2,3],[2,4]])
    print(data3)
    pf1=PolynomialFeatures(degree=2)
    print(pf1.fit_transform(data3))
    pf2=PolynomialFeatures(degree=2,include_bias=False)
    print(pf2.fit_transform(data3))
    pf3=PolynomialFeatures(degree=2,include_bias=False,interaction_only=True)
    print(pf3.fit_transform(data3))
    
  • 现在有(a,b)两个特征,生成二次多项式则为(1,a, b , ab, a^2, b^2),并用以下数据做测试:data3:

pf1:

pf2:

pf3:

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

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

相关文章

软件游戏提示msvcp140.dll丢失的原因分析及解决方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“计算机缺失msvcp140.dll”。那么&#xff0c;这个错误是什么意思呢&#xff1f;它会造成哪些问题&#xff1f;小编将从以下几个方面进行详细解析。 一&#xff0c;了解msvcp140.dll是什么 …

尚品汇-(一)

&#xff08;1&#xff09;技术介绍 &#xff08;2&#xff09;业务介绍 &#xff08;3&#xff09;虚拟机安装 可以稍后配置镜像:选第二个 采用第二项NET模式&#xff1a; 安装完成&#xff1a;开启 不选择界面的&#xff0c;选择基础的 分配了ip&#xff1a; 测试网络 为…

HTML静态网页成品作业(HTML+CSS)—— 非遗皮影戏介绍网页(6个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有6个页面。 二、作品演示 三、代…

blender bpy将顶点颜色转换为UV纹理vertex color to texture

一、关于环境 安装blender的bpy&#xff0c;不需要额外再安装blender软件。在python控制台中直接输入pip install bpy即可。 二、关于代码 本文所给出代码仅为参考&#xff0c;禁止转载和引用&#xff0c;仅供个人学习。 本文所给出的例子是https://download.csdn.net/downl…

动态javaweb 建立-准备阶段

一、实验内容&#xff1a; 1.定义一个inputjsp页面接收数据输入的长和宽。 2.创建一个javaBean&#xff0c;包含长、宽和面积三个成员变量&#xff0c;分别有对应的get方法和set方法。 3.定义一个业务模型calculate.java&#xff0c;用来计算矩形的面积。 4.定义一个…

HTTP3版本和实现验证

HTTP3协议基于Google的 QUIC 协议&#xff0c;由互联网工程任务组&#xff08;IETF&#xff09;来制定。目录还是草案&#xff0c;已经进行到第33版。 HTTP3 是基于 QUIC 协议的 http。传输层是UDPQUIC&#xff0c;应用层仍是HTTP&#xff0c;即request/respose, request里也仍…

5G消息 x 文旅 | 一站式智慧文旅解决方案

5G消息 x 文旅 | 一站式智慧文旅解决方案 文旅 x 5G 消息将进一步强化资源整合&#xff0c;满足游客服务需求、企业营销需求、政府管理需求&#xff0c;推进文化旅游项目的智慧化、数字化&#xff0c;增强传播力、竞争力和可持续性。5G 消息的“原生入口”、“超强呈现”、“智…

基于机器学习和奇异值分解SVD的电池剩余使用寿命预测(Python)

采用k-最近邻KNN和随机森林算法建立预测模型。 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.svm import SVC # Support Vector Classifier from sklearn.preprocessing import StandardScaler from sklearn.metrics import accu…

LabVIEW开发指针式压力仪表图像识别

系统利用LabVIEW编程实现对指针式压力仪表的读取&#xff0c;通过相机、光源、固定支架等硬件捕捉仪表图像&#xff0c;并通过图像识别技术解析压力值。系统分为两个阶段&#xff1a;第一阶段固定相机更换仪表&#xff0c;第二阶段移动相机识别多个固定仪表。本文介绍硬件选择、…

LeetCode | 21.合并两个有序链表

这道题也是很经典的一道题了&#xff0c;408的算法题中也考过这个思想&#xff0c;因为两个链表已是升序&#xff0c;合并只需要两个指针&#xff0c;分别指向两个表的表头&#xff0c;分别比较两个指针所指向的结点的val&#xff0c;小的就插入到目标链表里面&#xff0c;再后…

【StableDiffusion】Lora 底层原理,低秩适配,Lora 如何与 checkpoint 联合发挥作用

鸣谢UP主&#xff1a;是花子呀 本篇博客参考视频&#xff1a;https://www.bilibili.com/video/BV17i421X7q7/?spm_id_from333.880.my_history.page.click&vd_source38d6ea3466db371e6c07c24eed03219b Lora 是个啥&#xff1f;Lora 的 缩写 Lora&#xff1a;Low Rank Ada…

美式动漫效果PS图层样式

对于追求独特艺术风格和创意的摄影师和设计师来说&#xff0c;一款能够轻松将照片转化为卡通效果的Photoshop模板无疑是一个强大的工具。这款由专业团队精心打造的模板&#xff0c;特别注重于美式动漫风格的呈现&#xff0c;让您的照片瞬间拥有生动且充满魅力的动漫色彩。 模板…

Adobe Photoshop cc快速抠图与精致抠图方法

一、背景 Photoshop cc绝对是最好用的抠图and修图软件&#xff0c;但是即使最简单的抠图&#xff0c;每次用时都忘记怎么做&#xff0c;然后再去B站搜&#xff0c;非常费时&#xff0c;下面记录一下抠图过程&#xff0c;方便查阅。 一、Adobe Photoshop快速抠图 选择——主体…

遥控玩具车电机驱动应用中的双H桥驱动芯片

遥控玩具车的基本工作原理是通过无线电遥控器发送信号&#xff0c;这些信号被玩具车内的接收器接收并解码&#xff0c;从而控制玩具车的运行。根据车身外型的不同&#xff0c;可以分为&#xff1a;普通的私家房车、越野车、货柜车、翻斗车等等。遥控器的操作&#xff0c;如前进…

实验12 路由重分布

实验12 路由重分布 一、 原理描述二、 实验目的三、 实验内容四、 实验配置五、 实验步骤 一、 原理描述 在大型网络的组建过程中&#xff0c;隶属不同机构的网络部分往往会根据自身的实际情况来选用路由协议。例如&#xff0c;有些网络规模很小&#xff0c;为了管理简单&…

你好,Jetpack Compose

文章目录 为什么选 Jetpack Compose先决条件新建项目新建虚拟设备运行项目 为什么选 Jetpack Compose Jetpack Compose 是 Android 开发最新的、现代化的 UI 框架开发者几乎只需要使用 Kotlin 一门语言即可完成 App 开发&#xff08;Java 是基础&#xff0c;有些源码是 Java 写…

SARscape5.6.2干涉叠加处理效率提升

SARscape5.6.2于2022年5月正式发布&#xff0c;包含若干更新和优化。干涉叠加处理模块在处理速度方面持续提升&#xff0c;表现在&#xff1a;PS干涉工作流处理、第一次反演和第二次反演优化&#xff0c;速度提升&#xff1b;SBAS处理干涉图生成和干涉图优化速度提升&#xff0…

《Windows API每日一练》3.3 更好效果的滚动条

本节讲述滚动条的复杂使用方法&#xff0c;以便达到更好的效果。Windows操作系统提供了两套机制&#xff0c;一套机制是使用默认的对象属性进行简单的操作&#xff0c;并提供简单便捷的API接口函数。另一套机制是用户可以自定义对象属性&#xff0c;实现自己想要的效果。本节我…

nodejs——原型链污染

一、引用类型皆为对象 原型和原型链都是来源于对象而服务于对象的概念&#xff0c;所以我们要先明确一点&#xff1a; JavaScript中一切引用类型都是对象&#xff0c;对象就是属性的集合。 Array类型、Function类型、Object类型、Date类型、RegExp类型等都是引用类型。 也就…

解决:selenium运行时driver初始化失败 DevToolsActivePort file doesn‘t exist的问题

解决&#xff1a;selenium运行时driver初始化失败 DevToolsActivePort file doesn‘t exist的问题 DevToolsActivePort file doesnt exist报错信息&#xff1a;![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b3f8acc1c47d45e3912575896e421567.png)现象&#xff1…