当前位置: 首页 > article >正文

【数据挖掘】数据预处理——以鸢尾花数据集为例

数据预处理——以鸢尾花数据集为例

      • 一、实验手册
        • (一)实验目的
        • (二)实验原理
        • (三)实验环境
        • (四)实验步骤
        • (五)实验报告要求
      • 二、案例代码(以鸢尾花数据集为例)

一、实验手册

(一)实验目的
  1. 熟悉数据挖掘预处理的各种方法,包括数据清理、集成、变换和归约等。
  2. 能够识别数据中存在的噪声、缺失值、不一致性等问题,并运用合适的算法和技术进行处理。
  3. 掌握至少一种编程语言(如Python)及其相关库来实现数据挖掘预处理操作。
  4. 提高数据质量,为后续的数据挖掘任务奠定良好基础。
(二)实验原理
  1. 数据清理:通过填充缺失值(如使用均值、中位数、最可能的值等)、平滑噪声数据(如分箱、回归、离群点分析)、识别和删除离群点以及解决数据不一致性来改善数据质量。
  2. 数据集成:将多个数据源的数据合并成一个一致的数据存储,需处理实体识别、冗余和相关分析、元组重复以及数据值冲突等问题。
  3. 数据变换:对数据进行平滑、聚集、规范化、离散化等操作,将数据转换为适合挖掘的形式。
  4. 数据归约:采用维归约(如属性子集选择、主成分分析)、数量归约(如参数模型、非参数模型)和数据压缩等策略,得到数据集的压缩表示,同时保持分析结果的准确性。
(三)实验环境

建议使用Python语言,并安装以下常用库:

  • pandas:用于数据的读取、处理和分析。
  • numpy:提供数值计算功能。
  • scikit-learn:包含丰富的数据预处理和机器学习工具。
(四)实验步骤
  1. 数据加载:使用pandas库读取数据集,例如读取CSV文件:
import pandas as pd
data = pd.read_csv('your_data.csv')
  1. 数据探索
    • 查看数据的基本信息,如形状、列名、数据类型等:
print(data.shape)
print(data.columns)
print(data.dtypes)
- 查看数据的前几行和后几行:
print(data.head())
print(data.tail())
- 统计数据的描述性信息:
print(data.describe())
  1. 数据清理
    • 缺失值处理
      • 查看缺失值的分布情况:
print(data.isnull().sum())
  - 使用均值填充数值型变量的缺失值:
data['numeric_column'] = data['numeric_column'].fillna(data['numeric_column'].mean())
  - 使用众数填充分类型变量的缺失值:
data['categorical_column'] = data['categorical_column'].fillna(data['categorical_column'].mode()[0])
- **噪声数据处理**:- 采用分箱法进行数据平滑,例如等宽分箱:
import numpy as np
data['column_to_smooth'] = pd.cut(data['column_to_smooth'], bins=5)
  - 使用`scikit-learn`的`IsolationForest`检测并删除离群点:
from sklearn.ensemble import IsolationForest
clf = IsolationForest(contamination=0.1)
outliers = clf.fit_predict(data[['column_to_check_outliers']])
data = data[outliers == 1]
  1. 数据集成(假设从多个CSV文件集成数据)
data1 = pd.read_csv('data1.csv')
data2 = pd.read_csv('data2.csv')
combined_data = pd.concat([data1, data2], axis=0)  # 按行合并
  1. 数据变换
    • 规范化:使用scikit-learnMinMaxScaler将数据缩放到[0, 1]区间:
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
data[['column_to_normalize']] = scaler.fit_transform(data[['column_to_normalize']])
- **离散化**:将数值型变量转换为分类型变量,例如根据数值范围进行划分:
data['age_group'] = pd.cut(data['age'], bins=[0, 18, 30, 50, 100], labels=['Child', 'Young Adult', 'Middle - Aged', 'Senior'])
  1. 数据归约
    • 属性子集选择:选择部分重要的属性:
selected_data = data[['important_column1', 'important_column2']]
- **主成分分析(PCA)降维**:
from sklearn.decomposition import PCA
pca = PCA(n_components=0.95)  # 保留95%的方差
reduced_data = pca.fit_transform(data.drop('target_column', axis=1))
(五)实验报告要求
  1. 实验目的和原理的阐述。
  2. 详细描述实验步骤,包括使用的方法和代码。
  3. 展示数据预处理前后的对比结果,如数据的统计信息、缺失值数量变化等。
  4. 分析预处理过程中遇到的问题及解决方法。
  5. 总结数据挖掘预处理对后续数据挖掘任务的影响。

二、案例代码(以鸢尾花数据集为例)

import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler, StandardScaler
from sklearn.impute import SimpleImputer
from sklearn.decomposition import PCA
from sklearn.ensemble import IsolationForest# 1. 数据加载
data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data',header=None, names=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class'])# 2. 数据探索
print("数据形状:", data.shape)
print("列名:", data.columns)
print("数据类型:", data.dtypes)
print("前5行数据:\n", data.head())
print("描述性统计信息:\n", data.describe())# 3. 数据清理
# 3.1 缺失值处理(假设无缺失值,这里仅为示例)
# 如果有缺失值,例如对sepal_length列进行均值填充
imputer = SimpleImputer(strategy='mean')
data['sepal_length'] = imputer.fit_transform(data[['sepal_length']])# 3.2 噪声数据处理
# 使用IsolationForest检测离群点
clf = IsolationForest(contamination=0.05)
outliers = clf.fit_predict(data[['sepal_length', 'sepal_width', 'petal_length', 'petal_width']])
data = data[outliers == 1]# 4. 数据变换
# 4.1 规范化
scaler = MinMaxScaler()
data[['sepal_length', 'sepal_width', 'petal_length', 'petal_width']] = scaler.fit_transform(data[['sepal_length', 'sepal_width', 'petal_length', 'petal_width']])# 4.2 离散化(这里对petal_length进行离散化示例)
data['petal_length_group'] = pd.cut(data['petal_length'], bins=3, labels=['short','medium', 'long'])# 5. 数据归约
# 主成分分析降维
pca = PCA(n_components=2)
reduced_features = pca.fit_transform(data[['sepal_length', 'sepal_width', 'petal_length', 'petal_width']])
reduced_data = pd.DataFrame(reduced_features, columns=['PC1', 'PC2'])
reduced_data['class'] = data['class']print("预处理后的数据:\n", reduced_data.head())

这个案例代码展示了对鸢尾花数据集进行数据挖掘预处理的常见操作,包括数据加载、探索、清理、变换和归约等步骤 。

相关文章:

【数据挖掘】数据预处理——以鸢尾花数据集为例

数据预处理——以鸢尾花数据集为例 一、实验手册(一)实验目的(二)实验原理(三)实验环境(四)实验步骤(五)实验报告要求 二、案例代码(以鸢尾花数据…...

【算法笔记】图论基础(二):最短路、判环、二分图

目录 最短路松弛操作Dijkstra朴素Dijkstra时间复杂度算法过程例题 堆优化Dijkstra时间按复杂度算法过程例题 bellman-ford时间复杂度为什么dijkstra不能处理负权边?dijkstra的三个步骤:反例失效的原因 算法过程例题 spfa时间复杂度算法过程例题spfa求最短…...

HTTP/HTTPS 中 GET 请求和 POST 请求的区别与联系

一、基础概念 HTTP (HyperText Transfer Protocol, 超文本传输协议) 是一种用于浏览器与服务器之间进行数据交互的协议。HTTPS (加密的 HTTP) 则通过 SSL/TLS 协议实现通信加密与数据安全性。 二、GET 和 POST 概述 GET 请求: 用于从服务器获取资源。 POST 请求: 用于将数据…...

Spring、Spring Boot与Spring Cloud深度解析:核心关系与实战应用指南

1. 技术定位 Spring Framework:企业级Java开发的基础框架Spring Boot:快速构建独立运行的Spring应用Spring Cloud:分布式系统开发的微服务全家桶 二、Spring Framework核心解析 1. 关键特性 // 典型Spring MVC控制器示例 Controller Reque…...

EMS小车技术特点与优势:高效灵活的自动化输送解决方案

北成新控伺服技术丨EMS小车调试视频 EMS小车是一种基于单轨运行的电动输送系统,通过电力驱动实现物料的高效搬运和输送,具有高效灵活、节能环保、多功能集成、行业适配性强等特性,广泛应用于汽车制造、工程机械、家电生产、仓储物流等行业自动…...

uniapp运行到支付宝开发者工具

使用uniapp编写专有钉钉和浙政钉出现的样式问题 在支付宝开发者工具中启用2.0构建的时候,在开发工具中页面样式正常 但是在真机调试和线上的时候不正常 页面没问题,所有组件样式丢失 解决 在manifest.json mp-alipay中加入 "styleIsolation&qu…...

C++ 性能优化隐藏陷阱:从系统调用到并发开销的深度反思

作为一名C++技术专家,我深知性能优化不仅是代码层面的艺术,更是理解硬件与语言交互的科学。在现代计算中,C++的抽象为开发者提供了便利,却也隐藏了硬件的复杂性。如何揭开这些“谎言”,让代码与硬件协同工作?本文将以小案例为载体,通过优化前后的对比,深入剖析每个章节…...

Unity 使用 Protobuf(Pb2)二进制数据全流程工具详解

前言 在Unity游戏开发中,高效、快速、安全地读取配置数据是一项重要需求。本文介绍一种完整的解决方案——使用Protobuf二进制格式(Pb2)存储和读取游戏数据,并详细分享实现全流程的Unity工具。 一、技术流程概览 实现Unity读取…...

基于QT(C++)实现绘图程序

绘图程序 1 核心算法 1.1 图元生成 1.1.1 直线 画直线的算法采用了课上讲到的 Bresenhan 算法,采用整数增量运算,精确而有效的光栅设备生成算法。 基本思想是:当直线斜率的绝对值小于 1 时,从左端点开始作为起点&#…...

深入剖析ReLU激活函数:特性、优势与梯度消失问题的解决之道,以及Leaky ReLU 和 Parametric ReLU

深入剖析ReLU激活函数:特性、优势与梯度消失问题的解决之道 在深度学习领域,激活函数的选择直接影响神经网络的训练效果和性能。整流线性单元(Rectified Linear Unit,简称ReLU)因其简单性、高效性以及对梯度消失问题的…...

vscode设置console.log的快捷输出方式

vscode设置console.log的快捷输出方式 编辑器中输入clg回车,可以直接输出console.log,并且同步输出变量的字符串和值 1、打开vscode点击左上角的文件 2、找到首选项 3、点击用户代码配置 4、在顶部输入框种输入javas,选择JavaScript选项 5、…...

服务注册/服务发现-Eureka

目录 1.引言:如果一个父项目中有多个子项目,但是这些子项目如何如何相互调用彼此的业务呢? 2.什么是注册中心 3.CAP理论 4.EureKa 5.服务注册 6.服务发现 7.负载均衡 1.引言:如果一个父项目中有多个子项目,但是…...

【机器学习】什么是随机森林?

什么是随机森林? 随机森林(Random Forest)是一种集成学习方法,它通过组合多个决策树来提高预测的准确性和鲁棒性。可以把随机森林看作是“森林”,而森林中的每棵树就是一个决策树。每棵树独立地做出预测,最…...

【Rust】一文掌握 Rust 的详细用法(Rust 备忘清单)

文章目录 入门配置 vscode 调试Hello_World.rs原始类型格式化打印风格变量注释函数声明宏元变量结构体元组结构体单元结构体 语句与表达式语句表达式 区间表达式 Rust 类型类型别名整数浮点数布尔值字符字符串字面量数组切片元组 Rust 字符串字符串字面量字符串对象.capacity()…...

为什么后端接口返回数字类型1.00前端会取到1?

这得从axios中得默认值说起: Axios 的 transformResponse axios 在接收到服务器的响应后,会通过一系列的转换函数(transformResponse)来处理响应数据,使其适合在应用程序中使用。默认情况下,axios 的 tran…...

单片机串口打印调试信息②

在STM32开发中,使用串口(UART)打印调试信息是调试嵌入式程序的核心手段。以下是基于STM32 HAL库的详细实现步骤和调试策略: 一、硬件准备 硬件连接: STM32开发板:以STM32F4系列为例,选择任意UAR…...

Windows下安装常用软件--MySQL篇

Windows下安装常用软件--MySQL篇 文章说明安装指导安装MySQL脚本 资料下载 文章说明 记录一下Windows下安装zip版的MySQL,采用简洁的方式安装,便于学习使用;作为对该篇文章的修正与完善(MySQL 关于 zip安装) 安装指导 …...

Qt 高效读写JSON文件,玩转QJsonDocument与QJsonObject

一、前言 JSON作为轻量级的数据交换格式,已成为开发者必备技能。Qt框架为JSON处理提供了完整的解决方案,通过QJsonDocument、QJsonObject和QJsonArray三大核心类,轻松实现数据的序列化与反序列化。 JSON vs INI 特性JSONINI数据结构支持嵌…...

计算机网络——数据链路层的功能

目录 物理链路 逻辑链路 封装成帧(组帧) 帧定界 透明传输 SDU 差错控制 可靠传输 流量控制 介质访问控制 主机需要实现第一层到第五层的功能,而路由器这种节点只需要实现第一层到第三层的这些功能 假设左边用户需要给右边用户发送…...

第60天:Web攻防-XSS跨站文件类型功能逻辑SVGPDFSWFPMessageLocalStorage

#知识点 1、Web攻防-XSS跨站-文件类型-html&pdf&swf&svg 2、Web攻防-XSS跨站-功能逻辑-postMessage&localStorage 术语:上传xss->其实就是将有恶意js代码的各类文件(swf,pdf,svg,html.xml等)上传->访问该文件->让浏…...

C/C++都有哪些开源的Web框架?

CppCMS CppCMS是一个采用C语言开发的高性能Web框架,通过模版元编程方式实现了在编译期检查RESTful路由系统,支持传统的MVC模式和多种语言混合开发模式。 CppCMS最厉害的功能是WebSocket,10万连接在内存中长期保存占用的大小不超过600MB&…...

RISC-V AIA学习2---IMSIC

我在学习文档这章时,对技术术语不太理解,所以用比较恰当的比喻来让自己更好的理解。 比较通俗的理解: 将 RISC-V 系统比作一个工厂: hart → 工厂的一条独立生产线IMSIC → 每条生产线配备的「订单接收员」MSI 中断 → 客户通过…...

2024年MathorCup数学建模B题甲骨文智能识别中原始拓片单字自动分割与识别研究解题全过程文档加程序

2024年第十四届MathorCup高校数学建模挑战赛 B题 甲骨文智能识别中原始拓片单字自动分割与识别研究 原题再现: 甲骨文是我国目前已知的最早成熟的文字系统,它是一种刻在龟甲或兽骨上的古老文字。甲骨文具有极其重要的研究价值,不仅对中国文…...

Python----计算机视觉处理(Opencv:霍夫变换)

一、霍夫变换 霍夫变换是图像处理中的一种技术,主要用于检测图像中的直线、圆或其他形状。其基本思想就是将图像空间中的点映射到参数空间中,通过在参数空间中寻找累计最大值来实现对特定形状的检测。 二、 霍夫直线变换 那么对于一个二值化后的图形来说…...

多语言生成语言模型的少样本学习

摘要 大规模生成语言模型,如GPT-3,是极具竞争力的少样本学习模型。尽管这些模型能够共同表示多种语言,但其训练数据以英语为主,这可能限制了它们的跨语言泛化能力。在本研究中,我们在一个涵盖多种语言的语料库上训练了…...

k8s存储介绍(二)Secret

Kubernetes(K8s)提供了一种安全的方式来存储和管理敏感信息,如密码、OAuth 令牌和 SSH 密钥,这就是 Secret。使用 Secret 可以避免将敏感数据硬编码到 Pod 规范或容器镜像中,从而提高安全性和可管理性。 1. Secret 的…...

代理IP与AI的碰撞:网络安全新防线解码

目录 一、代理IP:网络世界的“隐形斗篷” 二、AI加持:代理IP的“智能升级包” 三、协同作战:五大核心应用场景 场景1:智能风控系统 场景2:跨境电商竞品分析 场景3:智能汽车安全测试 场景4&#xff1a…...

QT开发(4)--各种方式实现HelloWorld

目录 1. 编辑框实现 2. 按钮实现 前面已经写过通过标签实现的了,所以这里就不写了,通过这两个例子,其他的也是同理 1. 编辑框实现 编辑框分为单行编辑框(QLineEdit)双行编辑框(QTextEdit)&am…...

UniApp 生命周期钩子的应用场景

UniApp 生命周期钩子的应用场景 应用生命周期钩子的应用场景 onLaunch 应用初始化:在应用第一次启动时进行全局数据的初始化,比如设置全局配置信息、初始化用户登录状态等。例如,在应用启动时检查本地存储中是否有用户的登录信息&#xff0…...

macOS 安装 Miniconda

macOS 安装 Miniconda 1. Quickstart install instructions2. 执行3. shell 上初始化 conda4. 关闭 终端登录用户名前的 base参考 1. Quickstart install instructions mkdir -p ~/miniconda3 curl https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh -o…...