基于Bayes、决策树和SVM的图像分类

这篇具有很好参考价值的文章主要介绍了基于Bayes、决策树和SVM的图像分类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、数据集描述

       本实验数据集为一个垃圾分类图片数据集,总共包含cardboard、glass、metal、paper、plastic、trash六大类,在文件夹分别将其命名为0、1、2、3、4、5,将数据划分为训练集和测试集。

(1)读取数据集,使用循环依次读取图片,使用cv2.imread()方法打开图片。python代码如下:

	X = []  
	Y = []  
	# file = 'Garbage_classification'  
	for i in range(0, 6):  
	    # 遍历文件夹,读取图片  
	    for f in os.listdir("Garbage_classification/%s" % i):  
	        # 打开一张图片并灰度化  
	        Images = cv2.imread("Garbage_classification/%s/%s" % (i, f)) 
	        image = cv2.resize(Images, (256, 256), interpolation=cv2.INTER_CUBIC)  
	        hist = cv2.calcHist([image], [0, 1], None, [256, 256], [0.0, 255.0, 0.0, 255.0])  
	        X.append(((hist / 255).flatten()))  
	        Y.append(i)  
	X = np.array(X)  
	Y = np.array(Y)  

(2)使用train_test_split()方法按照训练集占比70%,测试集占比30%,对数据集进行划分。

	# 切分训练集和测试集  
	X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.3, random_state=1)  

二、 使用Bayes进行图像分类

       贝叶斯算法(Bayesian algorithm)利用贝叶斯定理对已知数据进行推理,进而进行分类、回归等任务。在分类问题中,贝叶斯算法基于训练数据构建一个模型,该模型能够计算一个给定输入向量属于每个类别的概率。贝叶斯算法的优点在于可以使用先验知识来提高分类准确性,并且在样本数据较少的情况下也能够产生良好的结果。
Python代码实现如下:

	# bayes图像分类  
	clf = BernoulliNB(alpha=6,binarize=0)  
	clf.fit(X_train, y_train)  #训练拟合数据  
	predictions_labels = clf.predict(X_test)   # 得到预测数据  
	score = clf.score(X_test,y_test)  #计算准确率  
	print('准确率为:{}'.format(score*100))  
	#计算kappa系数  
	kappa_value = cohen_kappa_score(y_test, predictions_labels)  
	print('kappa系数为:{}'.format(kappa_value))  
	print(u'算法评价:')  
	print(classification_report(y_test, predictions_labels))  
	#开始绘画混淆举证  
	cm = confusion_matrix(y_test,predictions_labels)  
	cm = pd.DataFrame(cm,columns=["cardboard","glass","metal","paper","plastic","trash"],index=["cardboard","glass","metal","paper","plastic","trash"])  # 指定混淆举证行列的名称  
	plt.figure(dpi=200, figsize=(5, 5)) # 设置图像尺寸和大小  
	sns.heatmap(cm,cmap="YlGnBu_r",fmt="d",annot=True)  #seaborn画图  

使用精度、召回率和F1以及混淆矩阵以及kappa系数以及准确率来评判分类精度,具体数据如下表所示:
svm图像分类代码,机器学习、深度学习,机器学习,人工智能
kappa系数为:0.404,准确率为:52.04%。

混淆矩阵如下图所示:
                                                               svm图像分类代码,机器学习、深度学习,机器学习,人工智能

三、 使用决策树进行图像分类

       决策树算法(Decision Tree algorithm)是一种逼近离散函数值的方法。它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。本质上决策树是通过一系列规则对数据进行分类的过程。决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程。包含特征选择、决策树的生成和决策树的剪枝过程。
Python代码实现如下:

	# 基于决策树的图像分类处理  
	clf = DecisionTreeClassifier(max_depth=11,max_features=83,min_samples_leaf=2,min_samples_split=12)  
	
	clf.fit(X_train, y_train)  #训练拟合数据  
	predictions_labels = clf.predict(X_test)   # 得到预测数据  
	score = clf.score(X_test,y_test)  #计算准确率  
	  
	print('准确率为:{}'.format(score*100))  
	
	#计算kappa系数  
	kappa_value = cohen_kappa_score(y_test, predictions_labels)  
	print('kappa系数为:{}'.format(kappa_value))  
	print('算法评价:{}'.format(classification_report(y_test, predictions_labels))) 
	 
	#开始绘画混淆举证  
	cm = confusion_matrix(y_test,predictions_labels)  
	cm = pd.DataFrame(cm,columns=["cardboard","glass","metal","paper","plastic","trash"],index=["cardboard","glass","metal","paper","plastic","trash"])  # 指定混淆举证行列的名称  
	plt.figure(dpi=200, figsize=(5, 5)) # 设置图像尺寸和大小  
	sns.heatmap(cm,cmap="YlGnBu_r",fmt="d",annot=True)  #seaborn画图  

使用精度、召回率和F1以及混淆矩阵以及kappa系数以及准确率来评判分类精度,具体数据如下表所示:
svm图像分类代码,机器学习、深度学习,机器学习,人工智能
kappa系数为:0.406,准确率为:52.17%。
混淆矩阵如下图所示:
                                                               svm图像分类代码,机器学习、深度学习,机器学习,人工智能

四、 使用SVM进行图像分类

       SVM是支持向量机(Support Vector Machine)的缩写,是一种常用的监督学习算法,可用于分类和回归问题。在分类问题中,SVM会将不同类别的样本映射到高维空间中,并且在该空间中找到一个超平面,使得不同类别的样本能够被最大化地分开。SVM算法的优点在于可以处理高维数据,并且可以处理非线性分类问题。SVM算法通过核函数来实现对高维数据的处理,而且可以通过调整核函数的参数来适应不同的数据分布。
Python代码实现如下:

	# 基于支持向量机的图像分类处理  
	from sklearn import svm  
	clf = svm.SVC()  
	clf.fit(X_train, y_train)  #训练拟合数据  
	predictions_labels = clf.predict(X_test)   # 得到预测数据  
	score = clf.score(X_test,y_test)  #计算准确率  
	print('准确率为:{}'.format(score*100))  
	#计算kappa系数  
	kappa_value = cohen_kappa_score(y_test, predictions_labels)  
	print('kappa系数为:{}'.format(kappa_value))  
	print('算法评价:{}'.format(classification_report(y_test, predictions_labels)))  
	#开始绘画混淆举证  
	cm = confusion_matrix(y_test,predictions_labels)  
	cm = pd.DataFrame(cm,columns=["cardboard","glass","metal","paper","plastic","trash"],index=["cardboard","glass","metal","paper","plastic","trash"])  # 指定混淆举证行列的名称  
	plt.figure(dpi=200, figsize=(5, 5)) # 设置图像尺寸和大小  

使用精度、召回率和F1以及混淆矩阵以及kappa系数以及准确率来评判分类精度,具体数据如下表所示:
svm图像分类代码,机器学习、深度学习,机器学习,人工智能
kappa系数为:0.577,准确率为:66.13%。
混淆矩阵如下图所示:
                                                               svm图像分类代码,机器学习、深度学习,机器学习,人工智能

五、 分类算法对比

对Bayes、决策树、SVM使用精度(Presicion)来进行分类对比,具体数据如下表所示:
svm图像分类代码,机器学习、深度学习,机器学习,人工智能
由于分类类别较多,同时数据集的数量有限,各大分类器在分类的效果中并未体现出很高的精准率,特别是在trash的分类中,决策树和Bayes分类的准确率较低。三类算法中,Bayes的速度最快。由数据的精度对比可知,在该项目中,SVM的表现最为出色。文章来源地址https://www.toymoban.com/news/detail-801664.html

到了这里,关于基于Bayes、决策树和SVM的图像分类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于传统检测算法hog+svm实现图像多分类

    直接上效果图:    代码仓库和视频演示b站视频005期: 到此一游7758258的个人空间-到此一游7758258个人主页-哔哩哔哩视频 代码展示: 数据集在datasets文件夹下 运行01train.py即可训练 训练结束后会保存模型在本地 运行02pyqt.py会有一个可视化的界面,通过点击按钮加载图片识别

    2024年02月14日
    浏览(33)
  • 机器学习实战-系列教程8:SVM分类实战3非线性SVM(鸢尾花数据集/软间隔/线性SVM/非线性SVM/scikit-learn框架)项目实战、代码解读

    本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 SVM分类实战1之简单SVM分类 SVM分类实战2线性SVM SVM分类实战3非线性SVM 使用PolynomialFeatures模块进行预处理,使用这个可以增加数据维度 polynomial_svm_clf.fit(X,y)对当前进行训练传进去X和y数据 SVM分类实战

    2024年02月07日
    浏览(43)
  • 基于机器学习算法:朴素贝叶斯和SVM 分类-垃圾邮件识别分类系统(含Python工程全源码)

    本项目采用朴素贝叶斯和支持向量机(SVM)分类模型作为基础,通过对垃圾邮件和正常邮件的数据进行训练,旨在实现垃圾邮件的自动识别功能。 通过训练这两个分类模型,我们的目标是建立一个高效准确的垃圾邮件识别系统。当接收到新的邮件时,系统将对邮件文本进行预

    2024年02月09日
    浏览(38)
  • 机器学习实战:Python基于支持向量机SVM-RFE进行分类预测(三)

    1.1 支持向量机的介绍 支持向量机( Support Vector Machine,SVM )是一种监督学习的分类算法。它的基本思想是找到一个能够最好地将不同类别的数据分开的超平面,同时最大化分类器的边际(margin)。SVM的训练目标是最大化间隔(margin),即支持向量到超平面的距离。 具体地,

    2024年02月05日
    浏览(42)
  • 机器学习之SVM分类器介绍——核函数、SVM分类器的使用

    机器学习算法——KD树算法介绍以及案例介绍 机器学习的一些常见算法介绍【线性回归,岭回归,套索回归,弹性网络】 一、SVM支持向量机介绍 1.1、SVM介绍 1.2、几种核函数简介 a、sigmoid核函数  b、非线性SVM与核函数 重要参数kernel作为SVC类最重要的参数之一,“kernel\\\"在skl

    2024年02月04日
    浏览(29)
  • 【数据分类】基于蜣螂优化算法优化支持向量机的数据分类方法 DBO-SVM分类算法【Matlab代码#47】

    详细介绍此处略,可参考DBO算法介绍 支持向量机(Support Vector Machine,SVM)是一种常用的监督学习算法,用于二分类和多分类问题。它的目标是找到一个超平面或者决策边界,将不同类别的样本点分开,并使得离决策边界最近的样本点的间隔最大化。 SVM的基本思想是将样本点

    2024年02月15日
    浏览(51)
  • 机器学习——SVM多分类问题

    目录 线性SVM 1.什么是SVM? 线性二分类器的最优超平面 1、超平面 2、最优超平面 3、最优分类面 4、支持向量与支持向量机 非线性SVM   1、常见的核函数 2、SVM案例 3.举例分析 多分类SVM 1. 直接法 2. 间接法   1.什么是SVM? 1、超平面 根据百度百科的解释,超平面是n维欧式空间

    2024年02月03日
    浏览(33)
  • 基于支持向量机SVM的港口分类,SVM原理,SVM工具箱详解

    目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 完整代码和数据下载链接: 基于支持向量机SVM的港口分类(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88636296 SVM应用实例, 基于支持向量机SVM的港口

    2024年02月03日
    浏览(34)
  • 第29步 机器学习分类实战:支持向量机(SVM)建模

    支持向量机(SVM)建模。 先复习一下参数(传送门),需要调整的参数有: ① kernel:{‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’},默认为’rbf’。使用的核函数,必须是“linear”,“poly”,“rbf”,“sigmoid”,“precomputed”或者“callable”中的一个。 ② c:浮点

    2024年02月02日
    浏览(42)
  • 机器学习实验——使用决策树和随机森林对数据分类

    使用决策树算法和随机森林算法对income_classification.csv的收入水平进行分类。训练集和测试集的比例是7:3,选取适当的特征列,使得针对测试样本的分类准确率在80%以上,比较2种分类方法的准确率。 数据说明: 特征列: 分类标签列:income 1、读入数据并显示数据的维度和前

    2024年02月04日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包