机器学习实验二——k-近邻算法实例(书上)

一.k-近邻算法电影类别分类

参照:博客一

实现代码

import numpy as np
import operator


def knn(trainData, testData, labels, k):
    # 计算训练样本的行数
    rowSize = trainData.shape[0]
    # 计算训练样本和测试样本的差值
    diff = np.tile(testData, (rowSize, 1)) - trainData
    # 计算差值的平方和
    sqrDiff = diff ** 2
    sqrDiffSum = sqrDiff.sum(axis=1)
    # 计算距离
    distances = sqrDiffSum ** 0.5
    # 对所得的距离从低到高进行排序
    sortDistance = distances.argsort()

    count = {}

    for i in range(k):
        vote = labels[sortDistance[i]]
        count[vote] = count.get(vote, 0) + 1
    # 对类别出现的频数从高到低进行排序
    sortCount = sorted(count.items(), key=operator.itemgetter(1), reverse=True)

    # 返回出现频数最高的类别
    return sortCount[0][0]
trainData = np.array([[5, 8], [4, 1], [3, 3], [4, 4]])
labels = ['动作片', '动作片', '爱情片', '爱情片']
testData = [4, 2]
X = knn(trainData, testData, labels, 3)
print(X)

实验结果

二.手写识别系统

首先得有两个数据文件夹测试集和训练集(testDigits和trainingDigits里的数据要不一样),里面存放不同写法的数字。训练集中的数据作为训练样本 ,之后在测试集中检验 

需要识别的数字已经用图像处理软件处理过。如下图所示,具有相同的像素和形状:都是32像素×32像素的黑白图像。黑白像素分别由0和1表示. 然后再转换成文本存储形式存储。例如,如下三张图是直接从TEXT文档中截取的数字0,1,2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值