YALE和COIL20数据集的可视化(Python实现)
程序员文章站
2022-03-08 17:25:52
...
本文使用的数据集是YALE_32X32.mat和COIL20.mat数据集,这两个数据集应该是很容易就可以得到的。这里给出两个数据集链接
https://pan.baidu.com/s/1wrBpIHUjC9tCwGwVPKMPNg
提取码:s45a
用Python来可视化数据集其实很简单当然也可以用C++或Matlab可视化也可以的,但是本人偏向于喜欢用Python来而且Python的优点很多接口也很多很适合用来做人工智能。可视化数据集没有什么困难的,当然如果是新手来说,可能你首先一定要很清楚什么是图像,图像处理的一些基本概念和内容然后再去操作会更好。其实很早就想把自己半年来学习的东西总结了只不过一直没有时间刚好寒假总算有时间把当时刚开始接触人工智能的一些基本的东西写下来记录下来,算是自己的一个笔记本或日记吧。
先说下图像吧,一张图像是由像素点组成的,平常我们所看到的彩色图像有三个通道RGB三个也就是三原色通道,而黑白图像就只有一个通道,RGB图像其实就是三层图像叠加在一起组成彩色的图像,一种颜色有256个等级为0~255,如果是灰白图像那就只有一层0-255。一般在图像处理中把图像的像素组成一个矩阵,然后用矩阵的方法来处理图像对图像进行操作。其实图像处理我觉得数学真的很重要特别是线性代数,线性代数就是图像处理的基础其次就是高数,有了高数就可以在图像上试一下各种算法等。
接下来上代码:
这是YALE数据集的可视化
import numpy as np
import matplotlib.pyplot as plt
from scipy import io
import cv2 as cv
x=io.loadmat('C://Users//dell//Desktop//Maching_Learning//YALE人脸数据集可视化//.idea//Yale_32x32.mat')
#载入YALE32mat文件的方法,得到的x是一个字典,可以print一下他的shape看一下里面的属性
data=[]
print(x['fea'].shape)
#数据都存在了fea这个键值里面,print出来发现是165*1024说明有165张
#图片每张图片都有1024个特征也就是1024个像素点
num=x['fea'].shape[0]
#得到总共样本的个数165张图片
#print(x['fea'].shape[0])
for i in range(num):
img=np.array(1024)#先创建一个一行1024列的数组
img=x['fea'][i]#存放每张图片数据
img.shape=32,32#把这1x1024的数组reshape成32x32的矩阵
img=img.T#矩阵转置
data.append(img)#把处理过大小的图片存到data列表里面
data=np.array(data)#把列表转成数组矩阵型
out=[0]*15 #我们想要搞出个15行11列的一整张图先处理行上
for i in range(15): #对每一行进行遍历
out[i]=data[i*11] #换行
for j in range(10): #对每一列进行遍历
out[i]=np.hstack((out[i],data[i*11+j+1]))#将每一次的图片合在一起,np.hstack是行方向的合并矩阵
c=out[0] #上面得到了15个一行11列矩阵现在要把这15行都合在一起,np.vstack讲就是列方向上合并
for i in range(14):
c=np.vstack((c,out[i+1]))
print(c.shape)
cv.imshow("out",c)
cv.waitKey(0)
这是COIL20数据集的可视化
import numpy as np
import matplotlib.pyplot as plt
from scipy import io
import cv2 as cv
x=io.loadmat('C://Users//dell//Desktop//Maching_Learning//COIL20数据集可视化//COIL20.mat')
#导入数据集
data=[]
num=x['fea'].shape[0]
#得到数据样本的个数
#print(x['fea'].shape[0])
for i in range(num):
img=np.array(1024)
img=x['fea'][i]
img.shape=32,32
img=img.T
data.append(img)
data=np.array(data)
out=[0]*30
for i in range(30):
out[i]=data[i*48]
for j in range(47):
out[i]=np.hstack((out[i],data[i*48+j+1]))
c=out[0]
for i in range(29):
c=np.vstack((c,out[i+1]))
print(c.shape)
cv.imshow("out",c)
cv.waitKey(0)
下面分别是YALE和COIL20的可视化出来图片
上一篇: 关于时间与字符串相互转换
推荐阅读
-
python 数据结构之二分查找的递归和普通实现
-
Python实现备份EC2的重要文件和MySQL数据库到S3
-
以911新闻为例演示Python实现数据可视化的教程
-
Python JSON格式数据的提取和保存的实现
-
Python实现数据可视化看如何监控你的爬虫状态【推荐】
-
Python可视化查看数据集完整性: missingno库(用于数据分析前的数据检查)
-
python 划分数据集为训练集和测试集的方法
-
python数据可视化 – 利用Bokeh和Bottle.py在网页上展示你的数据
-
利用python和百度地图API实现数据地图标注的方法
-
Python中elasticsearch插入和更新数据的实现方法