关于比赛最新进展&更多的知识点解读
关注公众号“不太灵光的程序员”
数据挖掘是从大量历史数据中抽取潜在的,有价值的知识或规则的过程。数据可视化对于快速分析数据,表示高维数据方面非常直观,有效。
我们选择鸢花数据(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) |
# 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()
# 进行简单的数据查看,我们可以利用 .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())
散点图是指数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,通常用于回归分析,据此可以选择合适的函数对数据点进行回归拟合。
多组散点图通常用于聚类,能直观地看出每组数据点的分布。
从下面的图片可以发现,在2D情况下不同的特征组合对于不同类别的花的散点分布,以及大概的区分能力。
# 合并标签和特征信息
# 进行浅拷贝,防止对于原始数据的修改
iris_all = iris_features.copy()
iris_all['target'] = iris_target
?
# 特征与标签组合的散点可视化
sns.pairplot(data=iris_all, diag_kind='hist', hue='target')
plt.show()
箱线图(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()
在尽量保证原始数据分布不变的情况下,使用质量较高的可视化样本,通过对约简后的数据集进行可视化,来达到有效减少可视化时间的目的。
同时三维模型还支持用户交互性操作。
# 选取其前三个特征绘制三维散点图
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)这两个类别的特征,其特征的边界具有一定的模糊性(边界类别混杂,没有明显区分边界),对后面建模的预测能力上会有影响。
虽然每天发送高(hao)精(nan)专(dong)的资讯文章给大家,大家还是很给面子的都来...
第一次遇到这个问题, 是大概两年前写代码高亮, 从当时的解决方案到现在一共有三...
1.写在前面 这学期因为各种课内考试,竞赛活动,项目, (和女朋友约会 )等消耗了...
微软已经提前推送了Windows 10 21H1更新,不过对于普通用户来说,还要在等等才能...
本文讲述使用JSP实现用户登录,包括用户登录、注册和退出功能等。 1.系统用例图 ...
Mysql数据库三——mysql数据库高级操作 一、指定主键的另一种方式 二、克隆/复制...
一、问题描述 如何在内核中操作某个文件? 问题 二、操作函数 1. 分析 在用户态,...
本文代码地址https://github.com/njulhy/funny_code/blob/main/cnn_feature_visu...
本文是介绍了jsp技术实现动态页面到静态页面的方法,分享给大家,具体如下: 对...
哨兵 在一个典型的一主多从的Redis系统中,当主数据库遇到异常中断服务后,需要...