k-近邻算法的简单Java版本

一,机器学习介绍

    机器学习算法主要分为监督学习算法,无监督学习算法。其中监督学习算法需要的数据包括样本,如训练样本,和每组数据的标签,即所属的类别;而无监督学习只有样本数据,我们需要构建出样本与样本之间的差异。常见的分类算法,回归算法属于监督学习算法,如K-近邻,决策树,logistic回归,朴素贝叶斯,SVM等;聚类算法属于无监督学习算法,如K-均值等。对于监督学习,机器学习算法需要解决的问题是求解出样本特征与期望输出之间的映射关系。

    机器学习算法的一般流程为:收集数据->准备数据->分析数据->训练算法->测试算法->使用算法。

二,

举例:根据表中提供的信息,求最后一部电影的电影类型?下图是每部电影的打斗镜头数、接吻镜头数以及电影评估类型

本文结合k-近邻分类算法的一般步骤,利用python代码实现。

k-近邻分类算法的一般步骤:

(1)导入数据

 from numpy import * 
 import operator 
 
 def createDataSet(): 
 	group = array([[3,104],[2,100],[1,81],[101,10],[99,5],[98,2]]) 
 	label = [love,love,love,action,action,action] 
 	return group, label
(2)分类器的实现

 def classify(x, dataSet, label, k): 
 
 	dataSetSize = dataSet.shape[0]  
  	x = [1,3] 
  	print(tile(x,(3,1))) 
  	result [[1,3],[1,3],[1,3]] 
 	diffMat = tile(x, (dataSetSize, 1)) - dataSet 
 	sqDiffMat = diffMat ** 2  
 	sqDistance = sqDiffMat.sum(axis=1) 
 	distances = sqDistance ** 0.5 
 
  
 	sortedDistIndicies = distances.argsort() 
 	classCount = {} 
 	for i in range(k): 
 		voteIlabel = label[sortedDistIndicies[i]] 
 		classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1 
  
  
 	sortedClassCount = sorted(classCount.iteritems(), 
 	key = operator.itemgetter(1), 
 	reverse = True
 	return sortedClassCount[0][0]
(3)测试新数据

	group , labels = createDataSet() 
	x = [18, 90] 
	print(classify(x,group,labels,3)) 

(4)实验结果

  1 love 


参考:http://blog.csdn.net/songzitea/article/details/20789079

         http://sysuleiw.diandian.com/post/2013-07-26/40050689321       

         http://my.oschina.net/u/1412321/blog/194174

       


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值