周志华10.6 matlab

matlab代码


%输入数据格式
filename_m='E:/database/yalefaces/yalefaces/s%d.gif';
%记录所有数据的矩阵
info=zeros(243*320,166);
%输入,将图片保存为一列
k=20;
for i=1:166
    filename=sprintf(filename_m,i);
    img = imread(filename,'gif');
    info(:,i)=img(:);
end
%进行PCA分析
coeff=pca(info);
%只保留前k个特征
coeff(:,k+1:165)=0;
info=info* (coeff * coeff');

filename_m='E:/database/yalefaces/result/s%d.gif';%我是自己先创建该文件夹存放输出
%输出图片
for i=1:166
    filename=sprintf(filename_m,i);
    img=reshape(info(:,i),243,320);
    imwrite(img,filename,'gif');
end

文件改名的python3脚本

数据集目前的命名和后缀非常凌乱,所以使用脚本

import os
import re
import sys
    
    
fileList = os.listdir(r"E:/database/yalefaces/yalefaces")
# 输出此文件夹中包含的文件名称
print("修改前:" + str(fileList)[1])
# 得到进程当前工作目录
currentpath = os.getcwd()
# 将当前工作目录修改为待修改文件夹的位置
os.chdir(r"E:/database/yalefaces/yalefaces")
# 名称变量
num = 1
# 遍历文件夹中所有文件
for fileName in fileList:
    # 匹配文件名正则表达式
    pat = ".+\."
    # 进行匹配
    pattern = re.findall(pat, fileName)
    # 文件重新命名
    os.rename(fileName, ('s'+str(num) + '.' + 'gif'))
    # 改变编号,继续下一项
    num = num + 1
print("***************************************")
# 改回程序运行前的工作目录
os.chdir(currentpath)
    # 刷新
sys.stdin.flush()
    # 输出修改后文件夹中包含的文件名称
print("修改后:" + str(os.listdir(r"E:/database/yalefaces/yalefaces"))[1])

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值