刚刚开始在一个视频上学习机器学习,不懂的还是很多,这也算作是学习机器学习的笔记吧
KNN算法,K nearest neighbor 最近的K个邻居,了解一个算法,先从了解一个问题开始,现在问题如下,有很多的数字图片,每个图片上面有一个数字,每个图片是28*28像素的的,灰度值从0~255,我们把每个图片看作是一个1X784的一行矩阵,因为784=28*28,矩阵上的数字大小表示该像素点的灰度值,有一些已知的图像和未知的图像,当然这里的图像都是使用矩阵表示的,现在需要通过已知图像的数字来预测未知图像的数字
KNN算法其实是比较需要预测的和已知的结果的用例之间的相似度,寻找相似度最接近的K个已知用例作为预测和分类结果
我们这里使用的相似度比较方法是余弦比较,计算公式如图片所示,所谓余弦比较,就是将带预测的像素矩阵与已知的矩阵的每行求余弦乘积,在所有的乘积中选取最大的数值的那一组作为预测值,因为越大越接近一的表示两者相似度越高
这是在一个黑板课教学视频python的算法,可供参考
# -*- coding: utf-8 -*- import pandas as pd import numpy as np import time def normalize(x): """ linalg.norm(x), return sum(abs(xi)**2)**0.5 apply_along_axis(func, axis, x), """ norms = np.apply_along_axis(np.linalg.norm, 1, x) + 1.0e-7 return x / np.expand_dims(norms, -1) def normalize2(x): """ linalg.norm(x), return sum(abs(xi)**2)**0.5 apply_along_axis(func, axis, x), """ norms = np.apply_along_axis(np.mean, 1, x) + 1.0e-7 return x - np.expand_dims(norms, -1) def nearest_neighbor(norm_func,train_x, train_y, test_x): train_x = norm_func(train_x) test_x = norm_func(test_x) # cosine corr = np.dot(test_x, np.transpose(train_x)) argmax = np.argmax(corr, axis=1) preds = train_y[argmax] return preds def validate(preds, test_y): count = len(preds) correct = (preds == test_y).sum() return float(correct) / count if __name__=='__main__': TRAIN_NUM = 220 TEST_NUM = 420 # Read data 42000 data = pd.read_csv('train.csv') ## print data train_data = data.values[0:TRAIN_NUM,1:] train_label = data.values[0:TRAIN_NUM,0] test_data = data.values[TRAIN_NUM:TEST_NUM,1:] test_label = data.values[TRAIN_NUM:TEST_NUM,0] norm_funcs = [normalize,normalize2] for norm_f in norm_funcs: t = time.time() preds = nearest_neighbor(norm_f,train_data, train_label, test_data) acc = validate(preds, test_label) print("%s Validation Accuracy: %f, %.2fs" % (norm_f.__name__,acc, time.time() - t))
这段代码里面包含两种比较函数,其中第一种就是使用余弦回归计算得到的,我们看一下预测结果:
normalize Validation Accuracy: 0.815000, 0.12s normalize2 Validation Accuracy: 0.770000, 0.03s
可见,使用余弦比较相似度的算法最终的识别率能达到八成以上,当然数据量越大越准确,当数据到达2200个的时候,准确率能到90%
另外还附加一个数据文件(见附录)
相关推荐
"深入探究五电平NPC逆变器的载波移相控制策略及Matlab Simulink 2016b版本的仿真实现",五电平NPC逆变器的载波移相控制 matlab simulink 2016b版本 ,核心关键词:五电平NPC逆变器; 载波移相控制; MATLAB Simulink; 2016b版本。,"2016b版Matlab Simulink仿真五电平NPC逆变器载波移相控制"
springboot中医养生系统
2021年03月C语言四级
2022年03月Python五级实操
"adas Acc自适应巡航系统算法设计文档:某自动驾驶公司算法设计与优化详解",adas Acc 自适应巡航系统算法设计说明书 某自动驾驶公司Acc算法设计文档说明 ,Adas;Acc;自适应巡航系统;算法设计;自动驾驶公司。,自适应巡航系统算法设计手册:Acc算法设计与优化指南
da_1737107771650
EsFFT-main.zip 图像清晰度检测算法EsFFT Python源码
电梯图纸大全:主板、变频器及GVF3控制板原理图等,各类电梯图纸,主板,变频器图纸 E:\各类电梯图纸,主板,变频器图纸\图纸 ├─0VFR2B-403.404 HVIB..pdf 6.46MB ├─1_2_1_PV33-3L.pdf 601.59KB ├─1_PV33-3L.pdf 601.59KB ├─1_RV33-4NV(1).pdf 1.64MB ├─778 P1.pdf 28.67MB ├─ABA26800AKT--GDCB线路板图纸.pdf 4.18MB ├─ACD4 UD- 403图纸 KDA26800ACC.pdf 1.5MB ├─GECB 程序版 ABA26800AML.pdf 3.5MB ├─GECB-AP.pdf 6.5MB ├─GECB-EN主板GBA26800LC.pdf 2.24MB ├─gvf3.hgp主控制板原理图.pdf
2021年1月食品安全管理体系
重点复习题一
"基于双重介质模型的COMSOL瓦斯抽采流固耦合分析:达西定律在瓦斯渗流中的应用及MPH文件支持",comsol瓦斯抽采-双重介质模型 流固耦合模型 用达西定律实现瓦斯渗流 提供mph文件 ,comsol;瓦斯抽采;双重介质模型;流固耦合模型;达西定律;瓦斯渗流;mph文件,"Comsol瓦斯双重介质流固耦合模拟"
基于ANPC-VSG非线性负载下虚拟同步发电机控制策略及中点电位平衡技术研究,ANPC(有源中点钳位NPC)-VSG(非线性负载),基于A型有源三电平逆变器的非线性负载下同步发电机控制,中点电位平衡控制,电压电流双闭环控制,基波提取算法。 1.VSG,非线性负载 2.电压电流双闭环,基波提取算法 3.提供相关参考文献 支持simulink2022以下版本,联系跟我说什么版本,我给转成你需要的版本(默认发2016b)。 ,ANPC; VSG; 非线性负载; 电压电流双闭环控制; 基波提取算法; 中点电位平衡控制; 参考来源; Simulink 2022以下版本,基于ANPC-VSG的虚拟同步发电机控制策略研究:中点电位平衡与电压电流双闭环控制算法优化
2020年09月Scratch三级理论B
2021年09月机器人五级理论
"Comsol仿真:构建变压器匝间短路5%的电磁振动噪声模型,深入探究电磁场分布、磁密分布、振动形变及噪声分布等多维度结果",comsol仿真,变压器匝间短路5%的电磁振动噪声模型 包括电磁场分布,磁密分布,振动形变,噪声分布等结果 ,关键词:comsol仿真; 变压器匝间短路; 电磁振动噪声模型; 电磁场分布; 磁密分布; 振动形变; 噪声分布。,COMSOL仿真:变压器匝间短路5%电磁振动噪声模型及多场分布研究
基于Intel Core i7第六代处理器的PXIe控制器——高性能、灵活接口、广泛适用,PXI PXIe控制器 4Link架构 16GB带宽 兼容主流PXIe机箱 设计文件 原理图&PCB FPGA源码 可直接制板 1 概述 控制器采用Intel? Core?i7 第六代高性能处理器,内存最大可支持32G DDR4。该系统PXI Express的link配置为通用的4Port 4lan的模式,最大的数据吞吐量为8GB S。 控制器还提供丰富灵活的 I O接口,包括1个VGA接口,两个DisplayPort接口,4个USB3.0接口,可以连接高速的外部设备,2个千兆以太网口,2个USB2.0接口可以连接其他外部设备或者USB接口的仪器。产品设计经过严格测试已成熟应用,能长时间稳定可靠地工作,可广泛应用于工业自动化控制,军用计算机领域。 2 性能特性 ?超强的处理性能,支持Intel? Core? i7-6822EQ 2.0GHz处理器 ?支持双通道 DDR4 SODIMM 1600MHz内存,最大可达32 GB(默认8GB) ?最大系统带宽支持 16 GB s ?PXI
基于FPGA的ATSHA204(mod208)国产加密芯片控制代码:工程实现与代码详解手册,基于FPGA实现的ATSHA204(国产型号mod208)加密芯片的控制工程 代码包括唤醒 读写锁定配置 数据 OTP区及密钥验证等操作。 包含源代码 仿真工程及代码讲解和芯片手册的讲解 ,基于FPGA的ATSHA204加密芯片控制工程; 唤醒; 读写; 锁定配置; OTP区; 密钥验证; 源代码; 仿真工程; 代码讲解; 芯片手册讲解。,基于FPGA的ATSHA204(Mod208)加密芯片控制:工程代码及验证指南
HUAWEI-LiteOS-Studio-Setup-x64-1.45.9
2022年06月机器人六级理论
线性自抗扰LADRC与PI控制:永磁同步电机控制中的性能对比与优势分析,线性自抗扰LADRC和PI控制对比永磁同步电机控制 相比与PI外环,线性自抗扰外环无超调 ,LADRC控制; PI控制; 永磁同步电机控制; 线性自抗扰外环无超调,"线性自抗扰LADRC与PI控制对比于永磁同步电机:无超调优势明显"