SVC进行图像识别——万图识别

1.导入模块

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
#SVC知识向量机学习模型
from sklearn.svm import SVC
#读取二进制文件模块
import pickle as pickle
#数据降维处理模块
from sklearn.decomposition import PCA
#绘图模块
import matplotlib.pyplot as plt
%matplotlib inline

2.获取训练数据和测试数据

#图片文件根目录(本地文件)
base_path = '../day14/day14/kinds-of-pictures/data_batch_'

#定义以二进制方式读取图片数据的函数
def load_batch_data(i):
    file_path = base_path + str(i)
    # 打开文件,以2进制形式读取
    with open(file_path,mode='rb') as file:
        data = pickle.load(file,encoding='ISO-8859-1')
    train = data['data']
    target = data['labels']
    return train,target

#将从不同文件中读取的数据合并成一个数据
for i in range(1,6):
    if i == 1:
        train,target = load_batch_data(i)
    else:
        train_next,target_next = load_batch_data(i)
        train = np.concatenate((train,train_next))
        target = np.concatenate((target,target_next))

# 为了节省时间,获取少量训练数据和测试数据
X_train,y_train = train[:5000],target[:5000]
x_test,y_test = train[-1000:],target[-1000:]

3.用PCA技术对数据进行降维处理

#创建pca对象
pca = PCA(n_components=0.9,whiten=True)
#理解数据
pca.fit(X_train,y_train)
#降维处理
X_train_pca = pca.transform(X_train)
x_test_pca = pca.transform(x_test)

4.使用机器学习模型进行训练和预测

#创建SVC
svc = SVC(kernel='rbf')
#训练数据
svc.fit(X_train_pca,y_train)
#预测数据
y_pre = svc.predict(x_test_pca[:100])

5.展示效果

plt.figure(figsize=(12,18))
icon_name = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
for i in range(100):
    plt.subplot(10,10,i+1)
    plt.imshow(x_test[i].reshape(3,32,32).transpose([1,2,0]))
    true_name = icon_name[y_test[i]]
    predict_name = icon_name[y_pre[i]]
    title = 'T:'+true_name+'\nP:'+predict_name
    plt.title(title)
    plt.axis('off')

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值