当前位置:主页 > 查看内容

机器学习算法:基于鸢尾花(iris)数据集的数据可视化

发布时间:2021-06-08 00:00| 位朋友查看

简介:文章目录 基于鸢尾花iris数据集的数据可视化 1、数据导入 2、查看样本数据 3、特征与标签组合的散点可视化 3.1、 散点图 3.2、 箱型图 3.2、 三维散点图 关于比赛最新进展更多的知识点解读 关注公众号“不太灵光的程序员” 基于鸢尾花iris数据集的数据可视化……


关于比赛最新进展&更多的知识点解读
关注公众号“不太灵光的程序员”

基于鸢尾花(iris)数据集的数据可视化

数据挖掘是从大量历史数据中抽取潜在的,有价值的知识或规则的过程。数据可视化对于快速分析数据,表示高维数据方面非常直观,有效。

我们选择鸢花数据(iris)进行方法的尝试训练,该数据集一共包含5个变量,其中4个特征变量,1个目标分类变量。

共有150个样本,目标变量为 花的类别 其都属于鸢尾属下的三个亚属,分别是山鸢尾 (Iris-setosa),变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica)。

包含的三种鸢尾花的四个特征,分别是花萼长度(cm)、花萼宽度(cm)、花瓣长度(cm)、花瓣宽度(cm),这些形态特征在过去被用来识别物种。

变量描述
sepal length花萼长度(cm)
sepal width花萼宽度(cm)
petal length花瓣长度(cm)
petal width花瓣宽度(cm)
target鸢尾的三个亚属类别,‘setosa’(0), ‘versicolor’(1), ‘virginica’(2)

1、数据导入

# coding=gbk
#  基础函数库
import numpy as np
import pandas as pd
# 绘图函数库
import matplotlib.pyplot as plt
import seaborn as sns
# 我们利用 sklearn 中自带的 iris 数据作为数据载入,并利用Pandas转化为DataFrame格式
from sklearn.datasets import load_iris
?
# 得到数据特征
data = load_iris()
# 得到数据对应的标签
iris_target = data.target
# 利用Pandas转化为DataFrame格式
iris_features = pd.DataFrame(data=data.data, columns=data.feature_names)
# 利用.info()查看数据的整体信息
iris_features.info()

2、查看样本数据

# 进行简单的数据查看,我们可以利用 .head() 头部.tail()尾部
# 可以设定查看的数据条数
print(iris_features.head(20))
print(iris_features.tail(20))

# 查看是否存在缺失值
print(pd.isnull(iris_features))
# 其对应的类别标签为,其中0,1,2分别代表'setosa', 'versicolor', 'virginica'三种不同花的类别。
print(iris_target)
# 利用value_counts函数查看每个类别数量
print(pd.Series(iris_target).value_counts())
# 对于特征进行一些统计描述
print(iris_features.describe())

在这里插入图片描述

3、特征与标签组合的散点可视化

3.1、 散点图

散点图是指数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,通常用于回归分析,据此可以选择合适的函数对数据点进行回归拟合。

多组散点图通常用于聚类,能直观地看出每组数据点的分布。
从下面的图片可以发现,在2D情况下不同的特征组合对于不同类别的花的散点分布,以及大概的区分能力。

# 合并标签和特征信息
# 进行浅拷贝,防止对于原始数据的修改
iris_all = iris_features.copy()
iris_all['target'] = iris_target
?
# 特征与标签组合的散点可视化
sns.pairplot(data=iris_all, diag_kind='hist', hue='target')
plt.show()

在这里插入图片描述

3.2、 箱型图

箱线图(Boxplot)也称箱须图(Box-whisker Plot),它是用一组数据中的最小值、第一四分位数、中位数、第三四分位数和最大值来反映数据分布的中心位置和散布范围,可以粗略地看出数据是否具有对称性。通过将多组数据的箱线图画在同一坐标上,则可以清晰地显示各组数据的分布差异,为发现问题、改进流程提供线索。
在这里插入图片描述

箱线图作为描述统计的工具之一,其功能有独特之处,主要有以下几点:

1.直观明了地识别数据中的异常值

2.利用箱线图判断数据批的偏态和尾重

3.利用箱线图比较几批数据的形状

利用箱型图我们也可以得到不同类别在不同特征上的分布差异情况。

for col in iris_features.columns:
sns.boxplot(x='target', y=col, saturation=0.5, palette='pastel', data=iris_all)
plt.title(col)
plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2、 三维散点图

在尽量保证原始数据分布不变的情况下,使用质量较高的可视化样本,通过对约简后的数据集进行可视化,来达到有效减少可视化时间的目的。

同时三维模型还支持用户交互性操作。

# 选取其前三个特征绘制三维散点图
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')
iris_all_class0 = iris_all[iris_all['target'] == 0].values
iris_all_class1 = iris_all[iris_all['target'] == 1].values
iris_all_class2 = iris_all[iris_all['target'] == 2].values
# 'setosa'(0), 'versicolor'(1), 'virginica'(2)
ax.scatter(iris_all_class0[:, 0], iris_all_class0[:, 1], iris_all_class0[:, 2], label='setosa')
ax.scatter(iris_all_class1[:, 0], iris_all_class1[:, 1], iris_all_class1[:, 2], label='versicolor')
ax.scatter(iris_all_class2[:, 0], iris_all_class2[:, 1], iris_all_class2[:, 2], label='virginica')
plt.legend()
plt.show()

通过对散点图、箱型图、三维散点图的分析,我们可以更直观的了解数据。

我们从可视化的可以发现’setosa’(0)特征的边界清晰,‘versicolor’(1)和 ‘virginica’(2)这两个类别的特征,其特征的边界具有一定的模糊性(边界类别混杂,没有明显区分边界),对后面建模的预测能力上会有影响。
在这里插入图片描述

;原文链接:https://blog.csdn.net/qq_23934063/article/details/115586072
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐