二分类
from sklearn import svm
import numpy as np
w=[]
train_x=[]
train_y=[]
test_x=[]
test_y=[]
def Init():
global train_x,train_y,test_x,test_y
with open(r'C:\Users\Administrator\Desktop\模式识别\分类器作业\train-images.idx3-ubyte', 'rb') as f:
file = f.read()
with open(r'C:\Users\Administrator\Desktop\模式识别\分类器作业\train-labels.idx1-ubyte', 'rb') as f:
lab = f.read()
with open(r'C:\Users\Administrator\Desktop\模式识别\分类器作业\t10k-images.idx3-ubyte', 'rb') as f:
file2 = f.read()
with open(r'C:\Users\Administrator\Desktop\模式识别\分类器作业\t10k-labels.idx1-ubyte', 'rb') as f:
lab2 = f.read()
for i in range(0, 60000):
item = lab[8 + i]
num = int(str(item).encode('UTF-8'), 16)
if (num != 5 and num != 8): continue
IMG_ = [int(str(item).encode('UTF-8'), 16) for item in file[16 + i * 784: 16 + (i + 1) * 784]]
train_x.append(IMG_)
if num == 8:
train_y.append(-1)
else :
train_y.append(1)
train_x = np.array(train_x)
for i in range(0, 10000):
item = lab2[8 + i]
num = int(str(item).encode('UTF-8'), 16)
if (num != 5 and num != 8): continue
IMG_ = [int(str(item).encode('UTF-8'), 16) for item in file2[16 + i * 784: 16 + (i + 1) * 784]]
test_x.append(IMG_)
if num==8:
test_y.append(-1)
else:
test_y.append(1)
test_x = np.array(test_x)
def Train():
global w,train_x,train_y,test_x,test_y
n=len(train_x)
m=len(test_x)
predictor = svm.SVC(gamma='scale', C=1.0, decision_function_shape='ovr', kernel='rbf')
predictor.fit(train_x[:n], train_y[:n])
w=predictor.predict(test_x)
def Test():
global w,train_x,train_y,test_x,test_y
n=len(train_x)
m=len(test_x)
s=0
# print(len(w))
# print(w)
# print(len(test_y))
# print(test_y)
for i in range(0,m):
s+=(w[i]==test_y[i])
print("The accuracy is %.2f"%(s*100/m))
Init()
Train()
Test()

多分类
with open(r'C:\Users\Administrator\Desktop\模式识别\分类器作业\train-labels.idx1-ubyte', 'rb') as f:
lab = f.read()
with open(r'C:\Users\Administrator\Desktop\模式识别\分类器作业\t10k-images.idx3-ubyte', 'rb') as f:
file2 = f.read()
with open(r'C:\Users\Administrator\Desktop\模式识别\分类器作业\t10k-labels.idx1-ubyte', 'rb') as f:
lab2 = f.read()
for i in range(0, 60000):
item = lab[8 + i]
num = int(str(item).encode('UTF-8'), 16)
#if (num != 5 and num != 8): continue
IMG_ = [int(str(item).encode('UTF-8'), 16) for item in file[16 + i * 784: 16 + (i + 1) * 784]]
train_x.append(IMG_)
train_y.append(num)
train_x = np.array(train_x)
for i in range(0, 10000):
item = lab2[8 + i]
num = int(str(item).encode('UTF-8'), 16)
#if (num != 5 and num != 8): continue
IMG_ = [int(str(item).encode('UTF-8'), 16) for item in file2[16 + i * 784: 16 + (i + 1) * 784]]
test_x.append(IMG_)
test_y.append(num)
test_x = np.array(test_x)
def Train():
global w,train_x,train_y,test_x,test_y
n=len(train_x)
m=len(test_x)
predictor = svm.SVC(gamma='scale', C=1.0, decision_function_shape='ovr', kernel='rbf')
predictor.fit(train_x[:n], train_y[:n])
w=predictor.predict(test_x)