机器学习之kNN算法

机器学习之kNN算法

第一个机器学习算法:kNN(k-Nearest Neighbors)算法。
优点:
kNN算法比较容易掌握,同时也比较有效。
缺点:
当数据实例很大的时候,比较耗内存,同时kNN算法不能反映数据实例的内部特性。


举例一,对电影类型进行判断,根据kiss和kick数来判断电影是动作片还是爱情片,还是其他。。。:

对于如下的数据集


1.导入数据, 下列源代码保存在kNN.py中。

from numpy import *
import operator

def createDataSet():
    group = array([[3,104], [2, 100], [1, 81], [101, 10], [99, 5], [98, 2]])
    labels = ['romance','romance','romance', 'action', 'action', 'action']
    return group, labels

2.实现k-NN算法,下列源代码保存在kNN.py中

def classify0(inX, dataSet, labels, k):
	dataSetSize = dataSet.shape[0]
	diffMat = tile(inX, (dataSetSize, 1)) - dataSet
	sqDiffMat = diffMat ** 2
	sqDistances = sqDiffMat.sum(axis = 1)
	distances = sqDistances ** 0.5
	sortedDistIndicies = distances.argsort()
	classCount = {}
	for i in range (k):
		voteIlabel = labels[sortedDistIndicies[i]]
		classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1

	print(classCount)

	sortedClassCount = sorted(classCount.iteritems(), key = operator.itemgetter(1), reverse = True)
	print(sortedClassCount)
	return sortedClassCount[0][0]

3. 测试,待分类的数据为inX=[18, 90]。下列源代码保存在test.py中

import kNN
from numpy import *

trainSet, labels = kNN.createDataSet()
inX = array([[18, 90]])
k = 3
result = kNN.classify0(inX, trainSet, labels, k)
print(result)

运行的输出结果为

romance


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值