计算机视觉与应用 课件 9.4 基于机器学习的图像分类算法_第1页
计算机视觉与应用 课件 9.4 基于机器学习的图像分类算法_第2页
计算机视觉与应用 课件 9.4 基于机器学习的图像分类算法_第3页
计算机视觉与应用 课件 9.4 基于机器学习的图像分类算法_第4页
计算机视觉与应用 课件 9.4 基于机器学习的图像分类算法_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

9.4基于机器学习的图像分类算法CONTENTS目录概述01KNN算法02决策树03伯努利分布朴素贝叶斯04支持向量机SVM05CONTENTS目录概述01KNN算法02决策树03伯努利分布朴素贝叶斯04支持向量机SVM05机器学习的算法很多,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的。可以利用以下算法进行图片分类:KNN、决策树、朴素贝叶斯、支持向量机SVC。概述CONTENTS目录概述01KNN算法02决策树03伯努利分布朴素贝叶斯04支持向量机SVM051.KNN算法(1)概念kNN算法又称为K近邻分类(k-nearestneighborclassification)算法。最简单平凡的分类器也许是那种死记硬背式的分类器,记住所有的训练数据,对于新的数据则直接和训练数据匹配,如果存在相同属性的训练数据,则直接用它的分类来作为新数据的分类。这种方式有一个明显的缺点,那就是很可能无法找到完全匹配的训练记录。kNN算法则是从训练集中找到和新数据最接近的K条记录,然后根据他们的主要分类来决定新数据的类别。该算法涉及3个主要因素:训练集、距离或相似的衡量、K的大小。KNN算法(2)KNN特点KNN是一种非参的、惰性的算法模型。非参的意思并不是说这个算法不需要参数,而是意味着这个模型不会对数据做出任何的假设,与之相对的是线性回归。也就是说KNN建立的模型结构是根据数据来决定的。惰性又是什么意思呢?同样是分类算法,逻辑回归需要先对数据进行大量训练(tranning),最后才会得到一个算法模型。而KNN算法却不需要,它没有明确的训练数据的过程,或者说这个过程很快。1)优点简单,易于理解,易于实现,无需估计参数,无需训练。适合对稀有事件进行分类(例如当流失率很低时,比如低于0.5%,构造流失预测模型)。特别适合于多分类问题(multi-modal,对象具有多个类别标签),例如根据基因特征来判断其功能分类,kNN比SVM的表现要好。2)缺点懒惰算法,对测试样本分类时的计算量大,内存开销大,评分慢。可解释性较差,无法给出决策树那样的规则。KNN算法(3)KNN训练和评估1)导入分类问题:fromsklearnimportdatasetsfromsklearn.model_selectionimporttrain_test_splitfromsklearn.neighborsimportKNeighborsClassifier回归问题:fromsklearnimportdatasetsfromsklearn.model_selectionimporttrain_test_splitfromsklearn.neighborsimportKNeighborsRegressorKNN算法2)加载数据加载iris的数据,把属性存在X,类别标签存在y:iris=datasets.load_iris()iris_x=iris.datairis_y=iris.targetprint(iris_x)print(iris_y)把数据集分为训练集和测试集,其中test_size=0.3,即测试集占总数据的30%:x_train,x_test,y_train,y_test=train_test_split(iris_x,iris_y,test_size=0.3)print(y_train)print(y_test)KNN算法3)训练knnclf=KNeighborsClassifier(n_neighbors=5)knnrgr=KNeighborsRegressor(n_neighbors=3)knnclf.fit(X_train,y_train)4)预测y_pre=knnclf.predict(x_test)KNN算法CONTENTS目录概述01KNN算法02决策树03伯努利分布朴素贝叶斯04支持向量机SVM052、决策树决策树(decisiontree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。决策树的优点:1)易于理解和解释。树木可以被可视化;2)只需要很少的数据准备,数据可以不规范化,但是需要注意的是,决策树不能有丢失的值;3)使用该树的花费是用于训练树的数据点个数的对数;4)能够处理多输出问题。5)使用白盒模型。如果给定的情况在模型中是可观察到的,那么对这种情况的解释很容易用布尔逻辑来解释。相比之下,在黑盒模型中(例如,在人工神经网络中),结果可能更难以解释。6)可以使用统计测试来验证模型。决策树决策树的缺点:1)容易过拟合。为了避免这个问题,可以进行树的剪枝、或在叶节点上设置所需的最小样本数量或设置树的最大深度。2)决策树是不稳定的,数据中的微小变化可能会导致生成完全不同的树。在集成中使用决策树可以缓解这个问题。3)有些概念很难学,因为决策树不容易表达它们,例如异或奇偶性或多路复用问题。4)如果某些类别占主导地位,决策树学习器就会创建有偏见的树。因此,建议在与决策树匹配之前平衡数据集。决策树(3)训练和评估鸢尾花分类为例:1)导入fromsklearnimportdatasetsimportpandasaspdfromsklearn.model_selectionimporttrain_test_splitfromsklearn.treeimportDecisionTreeClassifierimportgraphvizfromsklearn.treeimportexport_graphviz决策树2)加载iris=datasets.load_iris()features=pd.DataFrame(iris.data,columns=iris.feature_names)target=pd.DataFrame(iris.target,columns=['type'])train_feature,test_feature,train_targets,test_targets=train_test_split(features,target,test_size=0.33,random_state=42)model=DecisionTreeClassifier()model.fit(train_feature,train_targets)model.predict(test_feature)决策树3)评价训练模型fromsklearn.metricsimportaccuracy_scoreaccuracy_score(test_targets.values.flatten(),model.predict(test_feature))4)预测image=export_graphviz(model,out_file=None,feature_names=iris.feature_names,class_names=iris.target_names)graphviz.Source(image)决策树CONTENTS目录概述01KNN算法02决策树03伯努利分布朴素贝叶斯04支持向量机SVM053.伯努利分布朴素贝叶斯适用于伯努利分布,也适用于文本数据(此时特征表示的是是否出现,例如某个词语的出现为1,不出现为0)绝大多数情况下表现不如多项式分布,但有的时候伯努利分布表现得要比多项式分布要好,尤其是对于小数量级的文本数据伯努利分布朴素贝叶斯(3)训练和评估1)导入fromsklearn.naive_bayesimportBernoulliNB2)创建模型bNB=BernoulliNB()3)将字符集转词频集fromsklearn.feature_extraction.textimportTfidfVectorizertf=TfidfVectorizer()tf.fit(X_train,y_train)X_train_tf=tf.transform(X_train)4)训练bNB.fit(X_train_tf,y_train)5)预测x_test=tf.transform(test_str)bNB.predict(x_test)伯努利分布朴素贝叶斯CONTENTS目录概述01KNN算法02决策树03伯努利分布朴素贝叶斯04支持向量机SVM054、支持向量机SVM支持向量机SVM可以解决线性分类和非线性分类问题。(1)线性分类在训练数据中,每个数据都有n个的属性和一个二类类别标志,我们可以认为这些数据在一个n维空间里。我们的目标是找到一个n-1维的超平面(hyperplane),这个超平面可以将数据分成两部分,每部分数据都属于同一个类别。其实这样的超平面有很多,我们要找到一个最佳的。因此,增加一个约束条件:这个超平面到每边最近数据点的距离是最大的。也成为最大间隔超平面(maximum-marginhyperplane)。这个分类器也成为最大间隔分类器(maximum-marginclassifier)。支持向量机是一个二类分类器。(2)非线性分类SVM的一个优势是支持非线性分类。它结合使用拉格朗日乘子法和KKT条件,以及核函数可以产生非线性分类器。支持向量机SVM(3)训练和评估1)导入处理分类问题:fromsklearn.svmimportSVC2)创建模型(回归时使用SVR)svc=SVC(kernel='linear')svc=SVC(kernel='rbf')svc=SVC(kernel='

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论