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

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

一、实验手册

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

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

  • pandas:用于数据的读取、处理和分析。
  • numpy:提供数值计算功能。
  • scikit-learn:包含丰富的数据预处理和机器学习工具。
(四)实验步骤
  1. 数据加载 :使用pandas库读取数据集,例如读取CSV文件:
python 复制代码
import pandas as pd
data = pd.read_csv('your_data.csv')
  1. 数据探索
    • 查看数据的基本信息,如形状、列名、数据类型等:
python 复制代码
print(data.shape)
print(data.columns)
print(data.dtypes)
复制代码
- 查看数据的前几行和后几行:
python 复制代码
print(data.head())
print(data.tail())
复制代码
- 统计数据的描述性信息:
python 复制代码
print(data.describe())
  1. 数据清理
    • 缺失值处理
      • 查看缺失值的分布情况:
python 复制代码
print(data.isnull().sum())
复制代码
  - 使用均值填充数值型变量的缺失值:
python 复制代码
data['numeric_column'] = data['numeric_column'].fillna(data['numeric_column'].mean())
复制代码
  - 使用众数填充分类型变量的缺失值:
python 复制代码
data['categorical_column'] = data['categorical_column'].fillna(data['categorical_column'].mode()[0])
复制代码
- **噪声数据处理**:
  - 采用分箱法进行数据平滑,例如等宽分箱:
python 复制代码
import numpy as np
data['column_to_smooth'] = pd.cut(data['column_to_smooth'], bins=5)
复制代码
  - 使用`scikit-learn`的`IsolationForest`检测并删除离群点:
python 复制代码
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文件集成数据)
python 复制代码
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区间:
python 复制代码
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
data[['column_to_normalize']] = scaler.fit_transform(data[['column_to_normalize']])
复制代码
- **离散化**:将数值型变量转换为分类型变量,例如根据数值范围进行划分:
python 复制代码
data['age_group'] = pd.cut(data['age'], bins=[0, 18, 30, 50, 100], labels=['Child', 'Young Adult', 'Middle - Aged', 'Senior'])
  1. 数据归约
    • 属性子集选择:选择部分重要的属性:
python 复制代码
selected_data = data[['important_column1', 'important_column2']]
复制代码
- **主成分分析(PCA)降维**:
python 复制代码
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. 总结数据挖掘预处理对后续数据挖掘任务的影响。

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

python 复制代码
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())

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

相关推荐
2603_965148112 天前
AI+API选品:下一代智能商务助手雏形已现
java·大数据·数据库·人工智能·数据挖掘
成为深度学习高手2 天前
CrossLinear:即插即用的跨相关嵌入,让线性模型也能用好外生变量
人工智能·python·深度学习·数据挖掘
是翎2 天前
深度长文|2026产品经理AI实践手册
人工智能·深度学习·学习·自然语言处理·数据挖掘
databook3 天前
泊松分布:从基础到实际应用
python·数据挖掘·数据分析
shujudang3 天前
业务数据分析项目中的分析方法与团队协作
大数据·数据挖掘·数据分析
成为深度学习高手3 天前
EMAformer:给Transformer披上嵌入铠甲增强时间序列预测
人工智能·深度学习·数据挖掘
sbjdhjd3 天前
从日志包含到临时文件竞争:文件包含进阶复盘中的 Docker、Windows 与 Session 限制
网络·安全·web安全·网络安全·数据挖掘·php·rce
时速GEO系统4 天前
初元 AI V1.1 版本升级,首个正式版发布一周・实现生成、部署、上线、优化全流程自动化闭环
人工智能·数据挖掘·node.js
IT毕设梦工厂4 天前
计算机毕业设计选题推荐:基于大数据的城市空气污染物浓度数据分析与可视化|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·python·信息可视化·数据挖掘·数据分析·课程设计·数据可视化
residual_fan4 天前
航空发动机故障诊断专用智能体(六):实际机队健康管理中的应用考量与展望
人工智能·算法·数据挖掘·数据分析