代码在jupyter上跑的非常慢,并且输出的测试准确率很低,要怎么优化代码呢?
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 np.array(images),np.array(labels)
_dir_train=r"C:\Users\lenovo\Desktop\python\mnist_train"
_dir_test=r"C:\Users\lenovo\Desktop\python\mnist_test"
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='auto', C=1.0, probability=True,max_iter=5000)
h=Xtrain.shape[1]
w=Xtrain.shape[2]
print(Ytrain.shape)
Xtrain=Xtrain.reshape(-1,784)
Xtest=Xtest.reshape(-1,784)
clf.fit(Xtrain, Ytrain);
print("train finished!")
from sklearn.metrics import accuracy_score
Ypred = clf.predict(Xtest);
ret = accuracy_score(Ytest, Ypred)
print(ret)