数据挖掘之认识数据

embedded/2024/12/23 6:38:58/

数据挖掘过程中,数据的认识是非常重要的一步,它为后续的数据分析、建模、特征选择等工作奠定基础。以鸢尾花数据集(Iris Dataset)数据集之鸢尾花数据集(Iris Dataset)-CSDN博客为例,下面将介绍如何从数据下载到可视化展示进行深入认识。

1. 数据下载

鸢尾花数据集是一个经典的机器学习数据集,通常用于分类任务。这个数据集可以从多个来源获得,包括通过sklearn库直接加载。

from sklearn.datasets import load_iris# 加载鸢尾花数据集
iris = load_iris()# 查看数据集的基本信息
print(iris.keys())
数据集包含以下几个重要部分:
  • data: 特征数据,包含150个样本,每个样本有4个特征(如花萼长度、花萼宽度、花瓣长度、花瓣宽度)。
  • target: 目标标签,包含样本所属的类别(共三类:Setosa, Versicolor, Virginica)。
  • feature_names: 特征的名称(例如 'sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)')。
  • target_names: 类别的名称(例如 'setosa', 'versicolor', 'virginica')。
  • DESCR: 数据集的描述信息。

2. 数据加载与基本信息

使用sklearn加载数据后,可以通过pandas将其转换为DataFrame,更便于查看和操作。

import pandas as pd# 将数据转换为pandas DataFrame
iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)# 将目标标签添加到DataFrame中
iris_df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names)# 查看数据集基本信息
print(iris_df.info())# 查看数据集的前几行
print(iris_df.head())

3. 数据统计描述

我们可以查看数据集的统计描述信息,了解每个特征的分布情况。

# 获取数据的统计描述
print(iris_df.describe())

4. 数据可视化

数据可视化可以帮助我们理解特征之间的关系,识别数据的模式,并且能够分辨不同类别样本在特征空间中的分布情况。

4.1 成对关系图(Pairplot)

成对关系图能够展示所有特征之间的两两关系,并且可以通过颜色区分不同类别。

import seaborn as sns# 绘制成对关系图
sns.pairplot(iris_df, hue='species', palette='Set2')
4.2 箱线图(Boxplot)

箱线图能帮助我们观察每个特征的分布情况,并检测是否存在异常值。

# 绘制箱线图
plt.figure(figsize=(10, 6))
sns.boxplot(x='species', y='sepal length (cm)', data=iris_df)
plt.title('Boxplot of Sepal Length by Species')
plt.show()
4.3 热力图(Heatmap)

热力图可以帮助我们了解特征之间的相关性,并观察是否存在多重共线性。

import matplotlib.pyplot as plt
import seaborn as sns# 计算特征之间的相关性
correlation = iris_df.iloc[:, :-1].corr()# 绘制热力图
plt.figure(figsize=(8, 6))
sns.heatmap(correlation, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('Correlation Heatmap of Iris Dataset')
plt.show()

5. 处理缺失值(如果有)

虽然鸢尾花数据集本身没有缺失值,但在实际数据中,缺失值的处理是很常见的。我们可以使用pandas来检查并处理缺失值:

# 检查缺失值
print(iris_df.isnull().sum())# 假设有缺失值的列,使用均值填充
iris_df.fillna(iris_df.mean(), inplace=True)

7. 2D和3D可视化

2D可视化

import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import load_iris# Load the Iris dataset
iris = load_iris()
X = iris.data[:, :2]  # Use the first two features (Sepal Length and Sepal Width)
y = iris.target# Create a 2D scatter plot
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111)# Map species to colors
colors = ['r', 'g', 'b']
species_names = iris.target_names# Plot each species
for i in range(3):ax.scatter(X[y == i, 0], X[y == i, 1], label=species_names[i], color=colors[i], alpha=0.6)ax.set_xlabel('Sepal Length (cm)')
ax.set_ylabel('Sepal Width (cm)')
ax.set_title('2D Scatter Plot of Iris Dataset')
ax.legend()
plt.show()

3D可视化

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np# Extract features and target
X = iris.data[:, :3]  # Use the first three features for 3D visualization
y = iris.target# Create a 3D scatter plot
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')# Map species to colors
colors = ['r', 'g', 'b']
species_names = iris.target_namesfor i in range(3):ax.scatter(X[y == i, 0], X[y == i, 1], X[y == i, 2], label=species_names[i], color=colors[i], alpha=0.6)ax.set_xlabel('Sepal Length (cm)')
ax.set_ylabel('Sepal Width (cm)')
ax.set_zlabel('Petal Length (cm)')
ax.set_title('3D Scatter Plot of Iris Dataset')
ax.legend()
plt.show()

7. 小结

通过加载、查看和可视化鸢尾花数据集,我们可以更好地理解数据的结构、特征分布以及不同类别样本的区分度。这为后续的数据分析、特征选择以及机器学习建模提供了重要的基础。数据挖掘的第一步是对数据的深刻理解,只有了解了数据,才能采取合适的预处理步骤,最终构建有效的模型。

8. 总结

  • 数据下载与加载: 使用sklearn.datasets.load_iris()加载数据,并通过pandas查看数据。
  • 统计描述: 使用describe()查看数据的基本统计信息。
  • 可视化: 使用seaborn绘制成对关系图、箱线图和热力图,了解数据的分布和特征之间的关系。
  • 缺失值处理: 使用pandas处理缺失值(在实际情况中常见)。

通过这些方法,可以掌握如何处理数据、理解数据以及如何为后续分析做好准备。


http://www.ppmy.cn/embedded/148005.html

相关文章

3. Kafka入门—安装与基本命令

Kafka基础操作 一. 章节简介二. kafka简介三. Kafka安装1. 准备工作2. Zookeeper安装2.1 配置文件2.2 启动相关命令3. Kafka安装3.1 配置文件3.2 启动相关命令-------------------------------------------------------------------------------------------------------------…

[路由引入]OSPF\ISIS路由引入案例

前言 路由引入技术的作用 实现不同路由协议间的传递实现对业务流量的灵活把控 路由引入技术的方向 具有方向性,将信息A传递B,则路由协议B可获得路由协议A中的路由信息。但是,此时路由协议A不知道路由协议B中的信息,除非配置B到A的…

【Java基础面试题032】Java中的字节码是什么?

回答重点 Java字节码是Java编译器将Java源代码编译后生成的 位于Java源代码与JVM执行的执行的机器码之间。 Java字节码由JVM解释或即时编译(JIT)为机器码执行 扩展知识 Java字节码的关键点 1)字节码结构: Java字节码是与平…

【学习总结|DAY021】Java 多线程

多线程是Java编程中非常重要的概念,它允许程序同时执行多个任务,提高程序的执行效率。本文将详细介绍多线程的创建方式、常用方法、线程安全、线程同步、线程池以及并发和并行的概念,并结合代码案例进行讲解。 一、线程的创建方式 Java中创…

如何解决vscode powershell乱码

如何解决vscode powershell乱码 在 Visual Studio Code 中使用 PowerShell 时出现乱码,通常是由于终端编码设置或字体不匹配导致的。以下是解决 PowerShell 乱码问题的步骤: 设置 PowerShell 的默认编码 PowerShell 默认的输出编码可能与终端编码不一…

电脑为什么会提示“msvcr120.dll丢失”?电脑找不到“msvcr120.dll文件“要怎么解决?

电脑为什么会提示“msvcr120.dll丢失”?遇到此问题该如何解决? 在我们使用电脑进行日常办公、学习或娱乐时,偶尔会遇到一些令人头疼的系统报错。其中,“msvcr120.dll丢失”这一提示,相信不少朋友都曾遇到过。这个看似…

Mybatis-plus-Join--分页查询

数据表四张: user: id,username,create_time,update_time product: id,name,price,number(库存),create_time,update_times order: id,quantity,order_time(下单时间),update_time order_detail:id,product_id,order_id,quant…

ELK系列-(五)指标收集-MetricBeat(下)

一、前文回顾 🔍 在前面的ELK系列中,我们已经搭建了ELK的核心组件,包括: ELK系列-(一)Docker部署ELK核心组件ELK系列-(二)LogStash数据处理的瑞士军刀ELK系列-(三&…