图像数据集:
Task1:在机器学习库中寻找图像集并下载。
在寻找的过程中发现网站内的图像集较少,大多为文档集。此处通过百度搜索UCI机器学习数据集,最终找到图像数据集,链接如下。
http://archive.ics.uci.edu/ml/machine-learning-databases/faces-mld/
下载其中的压缩包——faces.tar.gz
Task2: 显示图像数据集
① 任意选三个人,每个人取三张照片。将这些照片统一放到一个文件夹中,准备读取。
② 但是在程序运行时却无法辨别照片。错误:PIL.UnidentifiedImageError: cannot identify image file 'pictures/at33_left_angry_open.pgm' 。查询资料后,将文件后缀改为txt进行查看,发现该图片原为P2模式的pgm文件,无法用PIL的方式读取。解决无果下决定重新选择图片。
③ 通过定位网页中的关键词“图像”,寻找合适的图像集。寻得如下链接:
http://archive.ics.uci.edu/ml/machine-learning-databases/CorelFeatures-mld/
③ 运行代码:
import PIL.Image as Image
import os
#图片拼接(九宫图)
def join_pictures():
path='pictures/'
size=256 #每张小图片的大小
format=['.jpg'] #图片格式
n=3
row=n #行数
col=n #列数
image_names=[name for name in os.listdir(path) for item in format if
os.path.splitext(name)[1] == item]
# 创建新图
new_picture=Image.new('RGB',(col*size,row*size))
# 遍历将旧图贴到对应位置
for i in range(0,row):
for j in range(0,col):
old_picture=Image.open(path+image_names[col*i+j]).resize((size,size),Image.ANTIALIAS)
new_picture.paste(old_picture,(j*size,i*size))
return new_picture.save('D:\\ML\\first\\result.jpg') # 保存新图
join_pictures()
④ 结果展示:
在网页中寻找其他图片进行拼接,得到如下九宫格:
文档数据集:
Task1:在机器学习库中寻找文档集并下载。
文档数据集寻找较为方便。这里选择 Iris Data Set 中的 iris.data 进行下载,修改文件类型为文本文档。链接如下:
http://archive.ics.uci.edu/ml/machine-learning-databases/iris/
文件中的数据分别为:
sepal length in cm | 花萼长度,单位cm |
sepal width in cm | 花萼宽度,单位cm |
petal length in cm | 花瓣长度,单位cm |
petal width in cm | 花瓣宽度,单位cm |
class | 种类: Iris Setosa/ Iris Versicolour / Iris Virginic |
Task2:展示文档数据集中两两特征之间的关系(部分)
① 运行代码:
import pandas as pd
import matplotlib.pyplot as plt
#转化为dataframe格式
iris_data = pd.read_table('iris.txt',header=None,sep=',')
#print(iris_data.shape[0])
#为不同种类iris设置颜色进行区分
Colors = []
for i in range(iris_data.shape[0]):
m = iris_data.iloc[i,-1]
if m=='Iris-setosa':
Colors.append('green')
elif m=='Iris-versicolor':
Colors.append('purple')
elif m=='Iris-virginica':
Colors.append('red')
#绘图
plt.subplot(1,2,1)
plt.scatter(iris_data.iloc[:,0],iris_data.iloc[:,1],c=Colors,edgecolors='black')
plt.xlabel("sepal length")
plt.ylabel("sepal width")
plt.subplot(1,2,2)
plt.scatter(iris_data.iloc[:,0],iris_data.iloc[:,2],c=Colors,edgecolors='black')
plt.xlabel("sepal length")
plt.ylabel("petal length")
plt.show()
② 结果展示:
通过散点图查看文档数据集中的数据,可以较为清楚地看出数据之间的关联性。
如:Iris-setosa 的sepal length 集中在(0,6),而petal length 集中在(1,2),当一只iris同时满足这两个条件时,很大可能是属于setosa的品种。
参考资料:
https://blog.csdn.net/ahaotata/article/details/84027000 Python将多张图片进行合并
https://bbs.csdn.net/topics/397511449?list=lz pd.read_table读取文本文件时的分隔符问题
http://archive.ics.uci.edu/ml/index.php 机器学习数据库