python分类算法论文_机械去学习(六)-基于KNN分类算法的系统自动区分影戏的题材不同类型完成…

1分类算法弁言

大家都知道,影戏也可以依照题材分类,但是题材自身是怎样界说的?由谁来断定某部影戏属于哪一个题材?也就是说同一题材的影戏具有独特哪些公共空间明显特征?这些都是停止影戏分类时必需要考虑的成绩。

举措片中也会存在接吻镜头,恋爱片中也会存在打架场景,不能够纯粹依托是否存在打架或许亲吻来判断影片的不同类型。

恋爱片中的亲吻镜头更多,举措片中的打架场景也更频繁,基于此类场景在某部影戏中出现的次数也可以用来停止影戏分类。

那么说怎样基于影戏中出现的亲吻、打架呈现的次数,运用k-一衣带水算法结构顺序,系统自动区分影戏的题材不同类型。

2KNN算法及工作原理

k-一衣带水(KNN算法接纳丈量差别明显特征值之间的间隔办法停止分类。

存在一个样本数据集合,也称作性训练样本集,而且样本较为集中每一数据都存在标签,即我晓得样本较为集中每一数据与所属分类的对应之间的关系。

输出也没标签的新数据后,将新数据的每一明显特征与样本较为集中数据对应的明显特征停止比拟,接着算法提取样本较为集中明显特征最相似数据(前段时间邻)分类标签。

普通而言,只可以选择样本数据较为集中前k个最相似的数据,一般k不大于20整数。最初,可以选择k个最类似数据中呈现次数最多的分类,作为新数据的分类。

3KNN第一个实例:影戏的分类

3.1项目中引见

举措,恋爱,悲剧,大灾难…???

运用打架和接吻镜头数分类电影

每部电影的打架镜头数、接吻镜头数和影戏评价不同类型

已知影戏与未知电影的间隔

得到间隔后,可以选择前k个影戏来判别未知影戏的不同类型

3.2怎样求距离?——欧氏距离公式

二维空间

多维空间

3.3k-一衣带水算法的普通流程

1搜集数据:也可以运用任何办法。作文题材

2预备数据:间隔盘算所需要的数值,最好是构造化的数据花样。

3剖析数据:也可以运用任何办法。

4性训练算法:此具体步骤不适用于k-一衣带水算法。

5测试算法:盘算错误的率。

6运用算法:先需求输出样本数据和结构化的输入后果,接着运转k-一衣带水算法断定输

入数据辨别属于哪一个分类,最初使用对计算出的分类中执行后续的处置。

3.4数据预备:运用 Python导入数据

importnumpiasnp

defcreateDataSet:

“””创立数据集”””

#每组数据包括打架数和接吻数;

#每组数据对应的标签不同类型;

la小说题材bel=[\’Roman\’,\’Roman\’,\’Roman\’,\’A ction\’,\’A ction\’,\’A ction\’]

returngroup,labels

3.5施行 KNN算法

对未知种别属性的数据较为集中的每一点顺次中执行以下操作方式:

1盘算已知种别数据较为集中的点与以后点之间的间隔;

2依照间隔递减次第排序;

3所选与以后点距离最小的k个点;

4确认前k个点所在种别的呈现高频率;

5前往前k个点呈现高频率最高的种别作为以后点的展望分类。

defclassifiinx,dataSet,labels,k:

“””

KNN分类算法完成

:paraminx:要预测电影的数据,e.g.[18,90]

:paramdataSet:传入已知数据集,e.g.group非常于x

:paramlabels:传入标签,e.g.label非常于y

:paramk:KNN外面的k也就是要可以选择几个近邻

:return:影戏类新的排序

“””

dataSetS=dataSet.s影视题材hape[0]#6,2–6行2列 ===>6可获取行数

#tile会重复inx把它反复成(dataSetSize,1型的矩阵

#x1-y1,x2-y2

diffMat=np.tileinx,dataSetSize,1-dataSet

#平方

sqDiffMat=diffMat**2

#相加,axis=1行相加

sqDistanc=sqDiffMat.sumaxis=1

#开根号

distanc=sqDistanc**0.5

#排序索引:输入的序列号ind短片题材ex而不是值

sortedDistIndici=distance.argsort

#printsortedDistIndici

classCount={}

foriinrangk:

#可获取排前k个的标签名;

voteLabel=labels[sortedDistIndicies[i]]

classCount[voteLabel]=classCount.getvoteLabel,0+1

sortedClassCount=sortclassCount.item,

key=lambdad:f四季题材loatd[1],

reverse=Tru

returnsortedClassCount[0]

3.6怎样测试分类器

分类器并不会得到百分百正确的后果,也可以运用多种办法检测分类器的准确率。

为了测试分类器的好效果,也可以运用已知答案的数据,固然谜底不能够通知分类器,磨练分类器给出的后果是否契合预期后果。

完满分类器的错误的率为0

最差分类器的错误的率是1.0

完好代码

importnumpiasnp

defcreateDataSet:

“””创立数据集”””

#每组数据包括打架数和接吻数;

#每组数据对应的标签不同类型;

label=[\’Roman\’,\’Roman\’,\’Roman\’,\’A ction\’,\’A ction\’,\’A ction\’]

returngroup,labels

defclassifiinx,dataSet,labels,k:

“””

KNN分类算法完成

:paraminx:要预测电影的数据,e.g.[18,90]

:paramdataSet:传入已知数据集,e.g.group非常于x

:paramlabels:传入标签,e.g.label非常于y

:paramk:KNN外面的k也就是要可以选择几个近邻

:return:影戏类新的排序

“””

dataSetS=dataSet.shape[0]#6,2–6行2列 ===>6可获取行数

#tile会重复inx把它反复成(dataSetSize,1型的矩阵

#x1-y1,x2-y2

diffMat=np.tileinx,dataSetSize,1-dataSet

#平方

sqDiffMat=diffMat**2

#相加,axis=1行相加

sqDistanc=sqDiffMat.sumaxis=1

#开根号

distanc=sqDistanc**0.5

#排序索引:输入的序列号index而不是值

sortedDistIndici=distance.argsort

#printsortedDistIndici

classCount={}

foriinrangk:

#可获取排前k个的标签名;

voteLabel=labels[sortedDistIndicies[i]]

classCount[voteLabel]=classCount.getvoteLabel,0+1

sortedClassCount=sortclassCount.item,

key=lambdad:floatd[1],

reverse=Tru

returnsortedClassCount[0][0]

if__na学生题材me__==\’__main__\’:

group,label=createDataSet

result=classifi[3,104],group,label,5

print”[3,104]影戏不同类型:”,result

好效果展现

原文链接:https://blog.csdn.net/weixin_40008644/article/details/110767060?ops_requ视频题材est_misc=%257B%2522request%255Fid%2522%253A %2522166856496116782429764990%2522%252C%2522scm%2522%253A %252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166856496116782429764990&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-13-110767060-null-null.nonecase&utm_term=%E9%A 2%98%E6%9D%90

未经允许不得转载:题材网 » python分类算法论文_机械去学习(六)-基于KNN分类算法的系统自动区分影戏的题材不同类型完成…

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

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

支付宝扫一扫打赏

微信扫一扫打赏