支持向量机分类python_支持向量机SVM-对图像进行分类原理讲解和代码示例

支持向量机SVM-对图像进行分类原理讲解和代码示例

对于图像分类,我们往往都想到卷积神经网络,深度学习,可是深度学习很多时候需要很大的计算开销,而且代码编写和调试也较为复杂,对于小型且特征明显数据集的图像分类,有点小试牛刀

今天我们就奖一种机器学习的算法SVM对图像进行分类

今天我们讲的一个实例是关于一个三分类问题,数据是工业中的图片。

我已将数据集和测试集发在我的资源中,需要练习的可以下载

对于图像分类,比较少见,图像的的数据为一种三通道的二维像素点的形式,对于这种数据形式,往往我们使用卷积神经网络去建立模型,但是就算量往往太大,不能在短时间内求解,我们想到,将二维图片展平,即使用python opencv 库的flatten 函数将图片从二维降到一维,这样就可以将数据用于传统的机器学习算法建模。

但同时对于图片而言一张图片size800x600那么展平之后的都像素点数量为480000个,也就是说一个样本的特征向量的长度为480000,这对于计算机而言大大增加了计算量。同时一张图片中其实很多信息是不需要的,所以我们考虑到对数据进行降维,将图片用函数resize到(30,30)也就是(800,600)->(30,30)。

在resize之在讲三通道像素点进行转换,转换成灰度图像,之后再展平,就可以把图像转换成一个长度为900的向量。

之后,我们将数据投入svm进行训练,考虑到数据是较为复杂的,同时特征向量长度太大,数据在超平面的分布是趋近线性分布的概率很小,所以我们直接尝试分线性支持向量机,使用核函数“rbf”,经过多次调试得到gamma的最佳取值为:0.001。

下面看代码

trian.py

#import sys

#import os

#import cv2

#import numpy as np

#from sklearn.svm import SVC

#from sklearn .model_selection import train_test_split

#import time

#import pickle

#SHAPE=(30,30)

#def getImageData(directory):

# s=1

# feature_list=list()

# label_list= list()

# num_classes=0

# for root,dirs,files in os.walk(directory):

# for d in dirs :

# num_classes+=1

# images=ps

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值