import numpy as np
import struct
import os
from sklearn import svm
from sklearn import preprocessing
from sklearn.model_selection import GridSearchCV
import time
path = 'E:\\sy3'
def load_mnist_train(path, kind='train'):
labels_path = os.path.join(path,'%s-labels.idx1-ubyte'% kind)
images_path = os.path.join(path,'%s-images.idx3-ubyte'% kind)
with open(labels_path, 'rb') as lbpath:
magic, n = struct.unpack('>II',lbpath.read(8))
labels = np.fromfile(lbpath,dtype=np.uint8)
with open(images_path, 'rb') as imgpath:
magic, num, rows, cols = struct.unpack('>IIII',imgpath.read(16))
images = np.fromfile(imgpath,dtype=np.uint8).reshape(len(labels), 784)
return images, labels
def load_mnist_test(path, kind='t10k'):
labels_path = os.path.join(path,'%s-labels.idx1-ubyte'% kind)
images_path = os.path.join(path,'%s-images.idx3-ubyte'% kind)
with open(labels_path, 'rb') as lbpath:
magic, n = struct.unpack('>II',lbpath.read(8))
labels = np.fromfile(lbpath,dtype=np.uint8)
with open(images_path, 'rb') as imgpath:
magic, num, rows, cols = struct.unpack('>IIII',imgpath.read(16))
images = np.fromfile(imgpath,dtype=np.uint8).reshape(len(labels), 784)
return images, labels
train_images,train_labels=load_mnist_train(path)
test_images,test_labels=load_mnist_test(path)
X = preprocessing.StandardScaler().fit_transform(train_images)
X_test = preprocessing.StandardScaler().fit_transform(test_images)
X_train = X[0:6000]
y_train = train_labels[0:6000]
x_test = X_test[0:10000]
y_test = test_labels[0:10000]
print(time.strftime('%Y-%m-%d %H:%M:%S'))
model_svc = GridSearchCV(svm.SVC(), param_grid={"C": [0.1, 1, 10], "gamma": [1, 0.1, 0.01]}, cv=3)
# model_svc = svm.SVC(kernel='poly', C=0.1, gamma=0.01)
model_svc.fit(X_train, y_train)
print("The best parameters are %s with a score of %0.2f"% (model_svc.best_params_, model_svc.best_score_))
print(time.strftime('%Y-%m-%d %H:%M:%S'))
# y_pred = model_svc.predict(x_test)
#
# print(model_svc.score(x_test, y_test))