图像识别案例在线实验闯关Educator头歌答案分享

📅 2026/7/9 18:18:28
图像识别案例在线实验闯关Educator头歌答案分享
第1关手写体图像数据集初识# -*- coding: utf-8 -*- #读取机器学习包sklearn内置的手写体图像数据集输出数据集的基本信息 #图像像素数据集的大小x_size(元组)第1个元素为行数第2个元素为列数 #图像标签向量y #返回 (x_size,y) def return_values(): import sklearn.datasets asklearn.datasets.load_digits() Xa.data #图像像素数据集 Ya.target #图像标签向量 x_size X.shape y Y return (x_size,y) #********** End **********#第2关基于全像素特征的手写体图像识别模型def return_values(): import sklearn.datasets asklearn.datasets.load_digits() #2 提取数据 Xa.data Ya.target #3 划分测试集和训练集 from sklearn.model_selection import train_test_split x_train,x_test,y_train,y_testtrain_test_split(X,Y,test_size0.2,random_state4) #4构建支持向量机模型 import sklearn.svm as svm from sklearn.svm import SVC clf svm.SVC(kernellinear) clf.fit(x_train,y_train) rvclf.score(x_train, y_train); y1clf.predict(x_test) ry1-y_test vlen(r[r0])/len(y1) return (rv,v) #********** End **********#第3关基于全像素特征的人脸识别模型# -*- coding: utf-8 -*- #读取机器学习包sklearn内置的人脸图像数据集 #按80%训练和20%测试进行随机划分构建支持向量机分类模型(线性核函数) #返回模型的准确率rv和测试集的预测准确率rs。 def return_values(): #1 读取数据集 import sklearn.datasets asklearn.datasets.fetch_olivetti_faces() #2 提取数据 Xa.data Ya.target from sklearn.decomposition import PCA pcaPCA(n_components0.95) pca.fit(X) X1pca.transform(X) from sklearn.model_selection import train_test_split x_train,x_test,y_train,y_testtrain_test_split(X1,Y,test_size0.2,random_state4) import sklearn.svm as svm from sklearn.svm import SVC clf svm.SVC(kernellinear) clf.fit(x_train,y_train) rvclf.score(x_train, y_train); y1clf.predict(x_test) ry1-y_test rslen(r[r0])/len(y1) return (rv,rs) #********** End **********#第4关基于像素主成分的人脸识别模型# -*- coding: utf-8 -*- #读取机器学习包sklearn内置的人脸图像数据集 #对像素特征数据做主成分分析并提取主成分要求累计贡献率在95以上。 #基于提取的主成分数据作为输入特征数据 #按80%训练和20%测试进行随机划分构建支持向量机分类模型(线性核函数) #返回模型的准确率rv和测试集的预测准确率rs。 from sklearn.decomposition import PCA #主成分分析模块 def return_values(): #1 读取数据集 import sklearn.datasets asklearn.datasets.fetch_olivetti_faces() #2 提取数据 Xa.data Ya.target from sklearn.decomposition import PCA pcaPCA(n_components0.95) pca.fit(X) X1pca.transform(X) from sklearn.model_selection import train_test_split x_train,x_test,y_train,y_testtrain_test_split(X1,Y,test_size0.2,random_state4) import sklearn.svm as svm from sklearn.svm import SVC clf svm.SVC(kernellinear) clf.fit(x_train,y_train) rvclf.score(x_train, y_train); y1clf.predict(x_test) ry1-y_test rslen(r[r0])/len(y1) return (rv,rs) #********** End **********#第5关彩色图像识别模型from PIL import Image import numpy as np import os def return_values(): path图片2/ # 纸币图像文件夹 fnameos.listdir(path) Xnp.zeros((len(fname),9)) # 预定义自变量9个颜色矩特征 Ynp.zeros(len(fname)) # 预定义因变量面额值 for i in range(len(fname)): imgImage.open(pathfname[i]) # 读取第i张图片 imimg.split() # 提取RGB通道并归一化截取中心100x100区域 Rnp.array(im[0])/255 row_1int(R.shape[0]/2)-50 row_2int(R.shape[0]/2)50 con_1int(R.shape[1]/2)-50 con_2int(R.shape[1]/2)50 RR[row_1:row_2,con_1:con_2] Gnp.array(im[1])/255 GG[row_1:row_2,con_1:con_2] Bnp.array(im[2])/255 BB[row_1:row_2,con_1:con_2] # 构造X计算三个通道的一阶、二阶、三阶颜色矩 # R通道 r1 np.mean(R) r2 np.std(R) a_r np.mean(np.abs(R - r1)**3) r3 a_r**(1./3) # G通道 g1 np.mean(G) g2 np.std(G) a_g np.mean(np.abs(G - g1)**3) g3 a_g**(1./3) # B通道 b1 np.mean(B) b2 np.std(B) a_b np.mean(np.abs(B - b1)**3) b3 a_b**(1./3) X[i, :] [r1, r2, r3, g1, g2, g3, b1, b2, b3] # 构造Y从文件名提取面额值 png_name fname[i] Y[i] float(png_name.split(_)[0]) # 划分训练集和测试集构建支持向量机模型 from sklearn.model_selection import train_test_split from sklearn.svm import SVC x_train, x_test, y_train, y_test train_test_split(X, Y, test_size0.2, random_state4) clf SVC(class_weightbalanced, random_state0) # 使用平衡类别权重 clf.fit(x_train, y_train) # 计算准确率 rv clf.score(x_train, y_train) # 训练集准确率 rs clf.score(x_test, y_test) # 测试集准确率 return (rv, rs)第6关彩色图像识别模型拓展 任务 现有1元、5元、10元、20元、50元、100元共6种面额的纸币彩色图像,储存在图片文件夹内相关信息及要求如下 1每种纸币均从正、反两面及两个不同的方向进行采集图像各10张即每种纸币采集40张6种货币则总图片有240张。 2图片的命名为面额值_采集序号.png比如1元纸币40张依次命名为1_1.png~1_40.png其他同理。 3读取图片文件夹计算每张图片的R、G、B三个颜色通道的一阶、二阶、三阶颜色矩特征共9个特征指标数据记为自变量X 4同时构造纸币面额标签数据集记为因变量Y。 5按80%训练和20%测试进行随机划分数据集构建支持向量机分类模型 6返回模型的准确率rv和测试集的预测准确率rs。 from PIL import Image import numpy as np import os def return_values(): import os path图片/ fnameos.listdir(path) Xnp.zeros((len(fname),9)) #预定义自变量即9个颜色矩阵特征指标 Ynp.zeros(len(fname)) #预定义因变量 for i in range(len(fname)): imgImage.open(pathfname[i]) #读取第i张图片 imimg.split() Rnp.array(im[0])/255 #R通道 row_1int(R.shape[0]/2)-50 row_2int(R.shape[0]/2)50 con_1int(R.shape[1]/2)-50 con_2int(R.shape[1]/2)50 RR[row_1:row_2,con_1:con_2] Gnp.array(im[1])/255 #G通道 GG[row_1:row_2,con_1:con_2] Bnp.array(im[2])/255 #B通道 BB[row_1:row_2,con_1:con_2] #构造X png_namefname[i] X[i]png_name.split(_)[0] #构造Y png_namefname[i] Y[i]png_name.split(_)[0] #建模及计算 from sklearn.model_selection import train_test_split x_train,x_test,y_train,y_testtrain_test_split(X,Y,test_size0.2,random_state4) import sklearn.svm as svm from sklearn.svm import SVC clf svm.SVC(kernellinear) clf.fit(x_train,y_train) rvclf.score(x_train, y_train); y1clf.predict(x_test) ry1-y_test rslen(r[r0])/len(y1) return (rv,rs)