支持向量机(SVM)图像分类-训练,手写数据集(datasets.load_digits())

SVM(支持向量机)图像分类是在1964年提出的,当时被称为广义肖像算法(generalized portrait algorithm)。其早期工作来自前苏联学者Vladimir N. Vapnik和Alexander Y. Lerner在1963年发表的研究。 1964年,Vapnik和Alexey Y. Chervonenkis对广义肖像算法进行了进一步讨论并建立了硬边距的线性SVM。

SVM图像分类的优点主要有:

分类能力强:SVM算法具有较强的分类能力,特别是对于一些复杂的、非线性可分的数据集,SVM算法往往能够获得比其他算法更好的分类效果。
适用性广:SVM算法可以应用于多种类型的分类问题,包括二分类、多分类问题等。
核函数选择灵活:SVM算法中的核函数选择灵活,不同的核函数可以适用于不同类型的数据集。
特征选择简单:SVM算法在进行特征选择时,只需要对输入数据进行简单的预处理,即可获得较好的分类效果。

然而,SVM图像分类也存在一些缺点:

对参数和核函数的选择敏感:SVM算法的性能对参数和核函数的选择非常敏感,不同的参数和核函数可能导致完全不同的分类结果。
计算量大:SVM算法的计算量较大,对于大规模数据集的分类可能会变得非常耗时。
对噪声和异常值敏感:SVM算法对噪声和异常值比较敏感,如果数据集中存在噪声或异常值,可能会导致分类精度下降。
对多分类问题处理不够理想:虽然SVM算法可以应用于多分类问题,但是对于一些多类别的数据集,SVM算法的分类效果可能不够理想。

总的来说,SVM图像分类在很多情况下能够表现出优秀的性能,但也需要针对具体问题调整参数和核函数,并处理噪声和异常值等问题。

import os
import joblib#保存模型
from PIL import Image
from sklearn.svm import SVC#c是分类,r是回归
from sklearn.preprocessing import StandardScaler#标准化
from sklearn import datasets
from sklearn.model_selection import train_test_split
import numpy
#读数据
iris=datasets.load_digits()
x=iris.data
y=iris.target
############################################
#写这一段是可以观察数据集的样子
# x=x[3]
# y=y[3]
# list=[]
# for i in x:
#     if i==0:
#         list.append(0)
#     else:
#         list.append(255)
# x=numpy.array(list)
# x=x.reshape(8,8)
# x= Image.fromarray(x)  # 输出的是4通道图
# x = x.convert('1')
# resultPath = r'D:\联想电脑\python新代码\ggb\best'
# x.save(os.path.join(resultPath, '11') + '.jpg')  # 前面列表遍历还有ecoph+=1每轮次数
# print(y)
###############################################
#标准化
std=StandardScaler()#这一步是必要的,对象化
# x_std=StandardScaler.fit_transform(x)
x_std=std.fit_transform(x)
print(len(x_std))
#拆分训练集
x_train,x_test,y_train,y_test=train_test_split(x_std,y,test_size=0.3)
print(len(x_train),len(x_test),len(y_train),len(y_test))
print('++',x_train)
#SVM建模
svm_classification=SVC()
svm_classification.fit(x_train,y_train)
#模型读取
save_path='D:\联想电脑\python新代码\ggb\cunchu'
joblib.dump(svm_classification,f'{save_path}\svm——class.pkl')
#建模效果
a=svm_classification.score(x_test,y_test)
print(a)

本文是作者好奇驱使下自我尝试的代码,仅供参考

  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值