手写数字可视化_Python数据分析与可视化

手写数字可视化

手写数字

手写数字无论是在数据可视化还是深度学习都是一个比较实用的案例。

数据在sklearn中,包含近2000份8 x 8的手写数字缩略图。

首先需要先下载数据,然后使用plt.imshow()对一些图形进行可视化:


打开cmd命令窗口,输入pip install scikit-learn
(sklearn包被启用了,要用scikit-learn包)


然后在jupyter notebook中输入以下代码

python 复制代码
from sklearn.datasets import load_digits
import matplotlib.pyplot as plt

digits = load_digits(n_class=6)
fig, ax = plt.subplots(8, 8, figsize=(6, 6))
for i, axi in enumerate(ax.flat):
    axi.imshow(digits.images[i], cmap='binary')
    axi.set(xticks=[], yticks=[])

plt.show()

输出图

总体


流形学习

由于每个数字都由64像素的色相构成,因此可以将每个数字看成是一个位于64维空间的点,即每个维度表示一个像素的亮度。但是想通过可视化来描述如此高维度的空间是非常困难的。

一种解决方案是通过降维技术,在尽量保留数据内部重要关联性的同时降低数据的维度,例如流形学习。

下面展示如何用流形学习将这些数据投影到二维空间进行可视化:

python 复制代码
from sklearn.datasets import load_digits
from sklearn.manifold import Isomap
iso = Isomap(n_components=2)
digits = load_digits(n_class=6)
projection = iso.fit_transform(digits.data)
plt.scatter(projection[:, 0], projection[:, 1], lw=0.1,
c=digits.target, cmap=plt.cm.get_cmap('cubehelix', 6))
plt.colorbar(ticks=range(6), label='digit value')
plt.clim(-0.5, 5.5)

输出结果

总体

上面使用了离散型颜色条来显示结果,调整ticks和clim参数来改善颜色条。这个结果向我们展示了一些数据集的有趣特性。

例如数字5与数字3在投影中有大面积重叠,说明一些手写的5与3难以区分,因此自动分类算法也更容易搞混它们。其它的数字,像数字0与数字1,隔得特别远,说明两者不太可能出现混淆。

相关推荐
徐小黑ACG23 分钟前
Golang 基础05 结构体struct
开发语言·算法·golang
优橙教育40 分钟前
零基础学AI应用开发要多久?3个月能到什么水平
服务器·开发语言·网络·php
SEO_juper1 小时前
用 Python 写一个 GEO 可见性检查脚本:你的网站现在能被 AI 引用吗
开发语言·人工智能·爬虫·python·seo·外贸独立站
数智工坊1 小时前
视觉SLAM第12讲|地图构建:单目稠密重建、RGB-D点云与八叉树地图全解析
人工智能·深度学习·矩阵·机器人
西柚小萌新1 小时前
【LLM&&AI应用开发 八股文】--4.3.Agent智能体(下)
java·开发语言·数据库
北极有牛1 小时前
cpp学习笔记--常量指针
java·开发语言·算法
GPU实战笔记1 小时前
云端 GPU 训练的账户余额提醒:它能说明什么,不能说明什么?
深度学习·算法·成本管理·gpu云计算·云端训练
半杯咖啡半行码2 小时前
C++ 编程与 STL 模板:从泛型编程到内存安全详解
开发语言·c++
Aloudata技术团队2 小时前
Metric Layer 建设指南:如何先从核心指标层启动企业语义工程
数据分析
caoerzhong2 小时前
JeeWMS 开源 WMS 部署避坑指南:Java 仓库管理系统的环境基线、四类根因与可复现交付
java·开发语言·开源