「11」Python实战篇:利用KNN进行电影分类

上一期文章:「10」民主投票法——KNN的秘密 中,我们剖析了KNN算法的本质和特点、局限。这里我们用python代码进行KNN的实现。第1部分是KNN的基础算法步骤,第2部分是一个电影分类的实战项目。

 

OK, let's begin~

KNN算法实现

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 4 import csv
 5 import random
 6 import math
 7 import operator
 8 
 9 # 加载数据集
10 def loadDataset(filename, split, trainingSet = [], testSet = []):
11     with open(filename, 'r') as csvfile:
12         lines = csv.reader(csvfile)
13         dataset = list(lines)
14         for x in range(len(dataset)-1):
15             for y in range(4):
16                 dataset[x][y] = float(dataset[x][y])
17             if random.random() < split:  #将数据集随机划分
18                 trainingSet.append(dataset[x])
19             else:
20                 testSet.append(dataset[x])
21 
22 # 计算点之间的距离,多维度的
23 def euclideanDistance(instance1, instance2, length):
24     distance = 0
25     for x in range(length):
26         distance += pow((instance1[x]-instance2[x]), 2)
27     return math.sqrt(distance)
28 
29 # 获取k个邻居
30 def getNeighbors(trainingSet, testInstance, k):
31     distances = []
32     length = len(testInstance)-1
33     for x in range(len(trainingSet)):
34         dist = euclideanDistance(testInstance, trainingSet[x], length)
35         distances.append((trainingSet[x], dist))   #获取到测试点到其他点的距离
36     distances.sort(key=operator
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图灵的猫.

小二,给客官上酒!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值