需要将提供的数据集和测试集用来调试,主要想采用(https://blog.csdn.net/weixin_41738030/article/details/100130638)这位楼主的实现方法,但如果要使用自己的测试集和数据集(都分为了标签和图片,格式是idx1-ubyte和idx3-ubyte),该如何修改?
你试试这个呢
import os
import cv2
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets
def getdata(_dir):
images= []
labels = []
for cls in os.listdir(_dir):
cls_dir = os.path.join(_dir,cls)
for file in os.listdir(cls_dir ):
img = cv2.imread(os.path.join(cls_dir,file ),-1)
images.append(img)
labels.append(int(cls))
return images,labels
_dir_train=r""
_dir_test=r""
Xtrain,Ytrain = getdata(_dir_train)
Xtest,Ytest= getdata(_dir_test)
images_and_labels=list(zip(Xtrain,Ytrain))
plt.figure(figsize=(8, 6))
for index, (image, label) in enumerate(images_and_labels[:8]):
plt.subplot(2, 4, index + 1)
plt.axis('off')
plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
plt.title('Digit: %i' % label, fontsize=20);
from sklearn import svm
clf = svm.SVC(gamma=0.001, C=100., probability=True)
clf.fit(Xtrain, Ytrain);
from sklearn.metrics import accuracy_score
Ypred = clf.predict(Xtest);
accuracy_score(Ytest, Ypred)
如果你不会直接读取这两个格式的数据,那么你可以将之转成png和txt文件
你是想用自己的数据集进行训练?
把数据按照类别放入文件夹,比如1的图片放入名字是1的文件夹,2的图片放到名字是2的文件夹....
路径不要有中文,然后把images_and_labels替换成你参考的博客里面的images_and_labels
import cv2
import os
images_and_labels= []
_dir = r"" # 输入图像路径,这个路径里面是1/2/3/4.。。的文件夹
for cls in os.listdir(_dir):
cls_dir = os.path.join(_dir,cls)
for file in os.listdir(cls_dir ):
img = cv2.imread(os.path.join(cls_dir,file ),-1)
images_and_labels.append((img,int(cls)))