KNN入门练习

Kaggle数据挖掘入门之KNN算法--Didit Recognizer 由于本人也是在数据挖掘的入门阶段,以下内容仅为个人练习经验和见解,如有不恰当之处,希望能与其他人探讨。 在开始之前先说说要准备或者说要具备的知识: 1、学习过python,不需要什么精通,起码要知道python的基本数据结构和大的框架; 2、了解KNN(最近邻域)算法的基本原理,这里我就不多说了,百度一下就能找到,因为我觉得自己没别人解释的好; 阅读详情

Knn算法简略入门

作为一名弱弱的大一新生,看了一个下午的IEEE论文,勉强看懂了论文的一丝皮毛,然而我并不会用矩阵处理,直接模拟矩阵处理时间复杂度过高且繁琐(MATLAB真的很重要),只好拿着思路直接模拟啦
(p.s.学好英语和线代真的很重要Orz)
贴几张论文的图这里写图片描述

这里写图片描述

基本步骤:

1.读入数据集
2.K值处理
    选出训练集D'(选用留出法处理数据集)
    用训练集进行训练k从2~sqrt(n)
    对训练集中的所有元素进行k临近判断,比较正确率
    求精度比较得到一个k
3.测试模型
    用测试集测试比较正确率是否符合预期否则从新执行step2

这里写图片描述

代码展示

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
#define FOR(i,j,k) for(i=j;i<+k;++i)
#define mal 0x7fffffff
#define R(x) (rand() % x)
using namespace std;
struct ma{
    int x,y,t,d;
    int c;
}; 
ma a[10000];
ma b[10000];
ma c[10000];
int n,m,u;
int sqr(int x)
{
    return x*x;
}
void ca(int x,int y,ma a)
{
    a.d=abs(x-a.x)+abs(y-a.y);
}
void init()
{
    freopen("1.txt","r",stdin);
    scanf("%d",&n);
    int i;
    m=n*0.8;
    FOR(i,1,n)
       {
            scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].c);
            a[i].t=0;
       }
}
void clset()
{
    int dis;
    int i,j,k;
    i=0;
    while(i<m)
        {
            dis=R(n)+1;
            if (!a[dis].t)
                {
                    a[dis].t++;
                    i++;
                }
        }
    j=0;
    k=0;
    FOR(i,1,n)  
    {
        if (a[i].t) b[j++]=a[i];    
        else c[k++]=a[i];
    }
    u=k;
} 
int comp(ma x,ma y)
{
    return x.d<y.d;
}
double acr[10000]={0};
int chk()
{
    int i,j,k;
    int ans1;
    int ans2;
    int ar;
    int lsar=-mal;
    int ans;
    int cj[10000];
    FOR(k,2,sqrt(n))
    {
        ar=0;
        FOR(i,1,m)
            {
                FOR(j,1,m)
                {
                    ca(b[j].x,b[j].y,b[i]);
                }
                sort(b+1,b+1+n,comp);
                memset(cj,0,sizeof(c));
                ans1=-mal;
                FOR(j,1,k)
                {
                    cj[b[j].c]++;
                    if (ans1<cj[b[j].c]) 
                        {
                            ans1=cj[b[j].c];
                            ans2=b[j].c;
                        }
                }//zhao dao k ling jin
                if (ans2==b[i].c) ar++;
             }
        if (ar>lsar) {
                        lsar=ar;
                        ans=k;
                     }
        }
    return ans;
}
int test(int k)
{
    int i,j,l;
    double ar=0;
    int ans1,ans2;
    int cj[10000];
    FOR(i,1,u)
    {
        FOR(j,1,m)
            {
                ca(c[j].x,c[j].y,b[i]);
            }
        sort(b+1,b+1+n,comp);
        ans1=0;
        FOR(j,1,k)
            {
                cj[b[j].c]++;
                    if (ans1<cj[b[j].c]) 
                        {
                            ans1=cj[b[j].c];
                            ans2=b[j].c;
                        }
                } 

            if  (ans2==c[i].c) ar++;
   }
   ar=ar/(double)u;
   if (ar>0.8) return 1;else return 0;
}
int done(int x,int y,int k)
{
    int i,j,l;
    int ans1,ans2;
    int cj[100000];
    FOR(j,1,n)
            {
                ca(x,y,a[j]);
            }
        sort(a+1,a+1+n,comp);
        ans1=0;
        FOR(j,1,k)
            {
                cj[a[j].c]++;
                    if (ans1<cj[a[j].c]) 
                        {
                            ans1=cj[a[j].c];
                            ans2=a[j].c;
                        }
            }
    return ans2;         
}
int main()
{
    init();
    int k,x,y;
    do
    {
        clset();
        k=chk();
    }while(test(k));
    while(scanf("%d%d",&x,&y)!=EOF)
    {
        printf("%d",done(x,y,k));
    }
    return 0;
}









昂,入门新生,如有错误恳请不吝赐教!

参考资料

Discriminant Adaptive Nearest Neighbor Classification

Trevor Hastie and Rolbert Tibshirani

IEEE TRANSACTIONS ON PAITERN ANALYSIS AND MACHINE INTELLIGENCE, VOL. 18, NO. 6, JUNE 1996

《机器学习》周志华

K近邻算法(KNN)及案例(Python) 1 算法简介 K近邻算法(英文为K-Nearest Neighbor,因而又简称KNN算法)是非常经典的机器学习算法。 K近邻算法的原理非常简单:对于一个新样本,K近邻算法的目的就是在已有数据中寻找与它最相似的K个数据,或者说“离它最近”的K个数据,如果这K个数据大多数属于某个类别,则该样本也属于这个类别。 (K的含义)以下图为例,假设五角星代表爱情片,三角形代表科幻片。此时加入一个新样本正方形,需要判断其类别。当选择以离新样本最近的3个近邻点(K=3)为判断依据时,这3个点由1个五角星和2个三角形 阅读详情

相关推荐

【机器学习】K-近邻算法(KNN)全面解析

K-近邻算法(K-Nearest Neighbors, KNN)是一种基于实例的学习方法,属于监督学习范畴。它的工作原理简单直观:给定一个训练数据集,对新的输入实例,KNN算法通过计算其与训练集中每个实例的距离,找出距离最近的K个邻居,然后根据这些邻居的类别(对于分类任务)或值(对于回归任务)来预测新实例的类别或值。KNN因其简单高效和无需训练过程的特点,在众多领域中得到广泛应用,如模式识别、推荐系统、图像分类等。KNN算法的核心思想是“物以类聚”,即相似的数据应有相似的输出。

鑫宝的博客 6638

[机器学习]练习KNN算法-曼哈顿距离

曼哈顿距离是指在几何空间中两点之间的距离,其计算方法是通过将两点在各个坐标轴上的差值的绝对值相加得到。在二维空间中,曼哈顿距离可以表示为两点在横纵坐标上的差值的绝对值之和;在三维空间中,则是在三个坐标轴上的差值的绝对值之和。想象你在城市道路里,要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。实际驾驶距离就是这个“曼哈顿距离”。而这也是曼哈顿距离名称的来源,曼哈顿距离也称为城市街区距离(City Block distance)。

weixin_68609410的博客 1041

R语言--邻近算法KNN

KNN(k邻近算法)是机器学习算法中常见的用于分类或回归的算法。它简单,训练数据快,对数据分布没有要求,使它成为机器学习中使用频率较高的算法,并且,在深度学习大行其道的今天,传统可解释的简单模型在工业大数据领域的应用更为广泛。本文介绍KNN算法的基本原理和用R代码实现。 算法介绍 KNN的核心思想可以用平常的俗语表示"物以类聚,人以群分",就是相似的东西很有可能具有相似的属性。k邻近法假设给定一个训练数据集,其中的数据标签已给。对于新的样本,找到与其k个最近邻的训练数据,这k个训练数据的多数属于某个类,.

jhr112的博客 1万+

[学习笔记] [机器学习] 3. KNN( K-近邻算法、距离度量:曼哈顿距离,切比雪夫距离、K值选择、kd树、鸢尾花种类预测、特征工程、交叉验证、网格搜索、Facebook签到位置、数据分割)

K-近邻算法、距离度量:曼哈顿距离,切比雪夫距离、K值选择、kd树、鸢尾花种类预测、特征工程、交叉验证、网格搜索、Facebook签到位置、数据分割

Le0v1n 的博客 6161

近邻算法KNN(带你原理 实践)

近邻算法是一种简单而有效的监督学习算法,在许多领域都有广泛的应用。然而,它也存在一些缺点,如计算量大、维数灾难等。未来可以研究如何优化距离计算、降低算法复杂度、处理高维数据等问题,以提高近邻算法的性能和应用范围。同时,也可以探索将近邻算法与其他机器学习算法相结合的方法,以充分利用各自的优点,提高预测精度和稳定性。

2303_79387663的博客 1642

K近邻算法(KNN)的概述与实现

KNN是一种简单但功能强大的算法,适用于分类和回归任务。然而,其计算成本和对K值的敏感性使其在处理大规模数据集或高维数据时存在一定的局限性。随着数据规模的增加,优化KNN的计算速度和性能成为一个值得探索的方向。你是否有使用KNN算法进行项目的经验?在实践中你会选择什么样的距离度量方法?欢迎分享你的看法和经验!

m0_62710548的博客 2243

机器学习 --- kNN算法

将 kNN 算法称为机器学习算法中最简单的算法一点都不为过,因为该算法的思想用一句化就能概括,即:“近朱者赤,近墨者黑”。 第1关:实现kNN算法 任务描述 本关任务:补充 python 代码,完成 kNNClassifier 类中的 fit 函数与 predict 函数。实现 kNN 算法的训练与预测功能。 相关知识 为了完成本关任务,你需要掌握 kNN 算法的算法流程。 kNN 算法的算法流程 kNN 算法其实是众多机器学习算法中最简单的一种,因为该算法的思想完全可以用 8 个字来概括:“近朱者赤,近墨

学习日常分享 1万+

机器学习实战k-邻近算法(kNN)简单实施代码解读

一.概念k-邻近算法是最简单的机器学习算法之一。k-邻近算法采用测量不同特征值之间的距离(具体说是欧氏距离)的方法进行分类。输入待分类的数据后,计算输入特征与样本集数据对应特征的距离,选择样本集中与输入特征距离最小的前k个样本,统计这k个样本数据中出现次数最多的类别作为新数据的分类。二.kNN的简单实施代码及注释from numpy import * import operatordef creat

SCUT_Arucee的博客 3269

【python】KNN模型训练及应用01

KNN模型训练及应用

-笔记- 1993

【C++】C++异常语法、使用、规范、异常安全及异常的优缺点

实际中我们可以可以去继承exception类实现自己的异常类。但是实际中很多公司像上面一样自己定义一套异常继承体系。因为C++标准库设计的不够好用。如果有一个块抛出一个异常,捕获异常的方法会使用 try 和 catch 关键字。try 块中放置可能抛出异常的代码,try 块中的代码被称为保护代码。C++ 提供了一系列标准的异常,定义在 中,我们可以在程序中使用这些标准的异常。异常是一种处理错误的方式,

weixin_51692487的博客 1525

不止是回退SDK:深入解读UE5.2编译时那个烦人的C4756警告与INFINITY宏的变迁

本文深入解析了UE5.2源码编译时出现的C4756警告及其背后的技术原因,探讨了Windows SDK中INFINITY宏的变迁对Unreal Engine的影响。文章详细介绍了微软修改INFINITY定义的技术考量,并提供了UE5.2应对此类问题的灵活解决方案,包括通过BuildConfiguration.xml文件精确控制工具链版本,确保构建系统的可重复性和可配置性。

weixin_27180827的博客 311

机器学习 —— KNN算法简单入门

机器学习 —— KNN算法简单入门第1关:手动实现简单kNN算法1 KNN算法简介1.1 kNN 算法的算法流程1.2 kNN 算法的优缺点1.3 编程要求+参数解释2. 代码实现3. 个人总结3.1 numpy库的学习3.1.1 NumPy Ndarray 对象3.2 python基本语法3.3 手写knn待改进第2关:红酒分类1. 基础知识1.1 数据集介绍1.2 StandardScaler的使用1.3 KNeighborsClassifier的使用1.4 编程要求+测试说明2. 代码实现3. 总结3

HALF愚笨角 5980

国腾|GM8775C替换TC358775/MIPI转双通道LVDS

1 产品概述 GM8775C 型DSI 转双通道 LVDS 发送器产品主要实现将MIPI DSI 转单/双通道 LVDS 功能,MIPI 支持 1/2/3/4 通道可选,最大支持 4Gbps 速率。LVDS时钟频率最高154MHz,最大支持视频格式为 FULL HD(1920 x 1200)。 该芯片主要应用于手持设备、双屏显示,大屏幕显示等应用需求。 2 产品特征 a) I/0电源电压:1.8V /3.3V; b) core 电源电压...

Vasse的博客 1073

☀️机器学习入门☀️(二) KNN分类算法 | 附加小练习

目录1. 聚类与分类1.1 聚类1.2 分类2. 关于KNN算法练习第一题:第二题: 1. 聚类与分类 1.1 聚类 聚类是将数据对象的集合分成相似的对象类的过程。使得同一个簇(或类)中的对象之间具有较高的相似性,而不同簇中的对象具有较高的相异性,并且事先不知道数据集本身有多少类别,属于无监督学习。 e.g: 比如预测某一学校的在校大学生的好朋友团体,我们不知道大学生和谁玩的好玩的不好,我们通过他们的相似度进行聚类,聚成n个团体,这就是聚类。 1.2 分类 分类就是事先已知道数据集中包含多少种类,从而对数据

面向生活编程 4121

2025美赛E题为农业留出空间(附代码+全保姆教程)Making Room for Agriculture

有机农业的核心在于减少化学投入,促进自然控制和可持续性。变量定义CCC: 作物种群III: 害虫种群PPP: 天然捕食者种群(蝙蝠、鸟类等)BBB: 生物多样性水平(以种类数量表示)SSS: 土壤健康指数(影响植物繁殖与作物生长)EEE: 农业生态系统的整体稳定性。

博客 1495

MATLAB 基于 Baker 映射和 Logistic 混沌序列的图像加解密实现

图像加密是信息安全领域的重要研究方向,在数字版权保护、隐私保护等领域有着广泛应用。本文将介绍基于 MATLAB 的 Baker 映射和 Logistic 混沌序列的图像加解密算法,该算法利用混沌系统的初值敏感性和伪随机性,能够有效地对图像进行加密和解密。基于 Baker 映射和 Logistic 混沌序列的图像加解密算法是一种有效的方法,可以应用于数字版权保护、隐私保护等领域。MATLAB 提供了强大的工具和函数,可以方便地实现该算法。

走向CTO的路上... 935

机器学习入门——K-近邻算法实例练习(代码详细注解)

按照《机器学习实战》一书中的顺序进行学习,总结自己的理解。 一、K-近邻算法的思想 简单说,k近邻算法采用测量不同特征值之间的距离方法进行分类。 即本算法是一个分类算法。 问题格式: 当输入一部电影M,包含特征值 (亲吻次数=5,打斗次数=100),问电影M的所属类别(爱情片or动作片)? 算法思路: 1.首选要有样本测试集,即n部包含对应特征值和标签的电影列表,如: 2.将电影M与n部电影作比较(通过欧氏距离公式来计算特征值之间的距离) 3.将计算结果由小到大排序,找出距离最近的前3部(一般不大于.

Liverwhles 1920

YOLOv11改进 | Conv/卷积篇 | 利用Hype-YOLO提出MANet增强YOLOv11特征提取能力

本文给大家带来的最新改进机制是由Hype-YOLO提出的MANet结构,其是一种C3、C2f、C3k2的升级版,用于增强特征提取能力。MANet可以理解为C2f的升级版,其整合了DSConv和C2f结构,这些模块的组合使得信息流动更加丰富,有助于在训练过程中提高梯度流动,从而增加基础特征的语义深度。官方发布的数据中HypeYOLO的精度是高于YOLOv11的,本文内容包含MAnet替换C3k2的教程以及原理介绍。欢迎大家订阅我的专栏一起学习YOLO,购买专栏读者联系读者入群获取进阶项目文件!

Snu77的博客 2161

K-邻近算法(KNN)

1. KNN 算法原理 k-近邻算法(k-Nearest Neighbour algorithm)的工作原理:给定一个已知标签类别的训练数据集,输入没有标签的新数据后,在训练数据集中找到与新数据最邻近的 k 个实例,如果这 k 个实例的多数属于某个类别,那么新数据就属于这个类别。即由那些离新数据最近的 k 个实例来投票决定新数据归为哪一类。 最邻近分类算法是数据挖掘分类(classificat...

wangprince2017 1万+

dToF直方图之美_deadtime死区时间

IMX459的死区时间可以在6ns,这个时间是什么级别,车载激光雷达激光器的光脉宽一般都在4ns以上,也就是这个时间贴近去SPAD的死区时间,这就导致了pile up会非常弱,不会有太多数量的光子计数堆积,加上某些SPAD设计,对TDC有一些更深入的考量,所以不需要去校正pile up算法。Sensor层面决定了pile up的复杂程度,如果一个dToF的SPAD一致性非常好,那么pile up校正可以简单到极致,也就是一句代码的事,比如IMX611,优秀到不需要后端去考虑校正pile up。

致力于lidar应用开发 2149

在SAP系统中创建物料 860000000000000082(物料描述为“8680月球广寒宫坦克车”)时,系统报出了一个错误

摘要:SAP系统创建物料"8680月球广寒宫坦克车"时出现"C+020"错误,提示评估区域C916未在物料分类账中设置为生产性。解决方案需进入"会计-控制-产品成本控制-实际成本核算"路径,将评估区域C916手动设置为生产性状态。该操作需由具备权限的系统管理员或FICO顾问执行,建议操作前进行数据备份或在测试环境验证。完成设置后即可重新创建物料。

金牌架构师 391

KNN算法(k近邻算法)原理及总结

KNN 算法,或者称 k最邻近算法,是有监督学习中的分类算法。它可以用于分类或回归问题,但它通常用作分类算法。

m0_74405427的博客 14万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

邻近算法 KNN

待完善,预习用 邻近算法 KNN,K-NearestNeighbor 属于数据挖掘-分类技术 分类算法 K最近邻 即:每个样本可以用它最接近的K个邻近值来代表 近邻算法就是将数据集合中的每一个记录进行分类的方法。 基本思想 要判断一个新数据的类别,就看它的邻居。根据新数据的特征得到在相应属性空间中的坐标,看附近的数据都是什么类别。 KNN中的K表示邻居的数量,K=3就是通过最近的3个样本来判断数据类别。 计算距离时,可以用两点间的直线距离(欧氏距离),也可以使用坐标轴距离绝对值的和(曼哈顿距离).

pocket_eight的博客 1534

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

K近邻算法(k-nearest neighbor,KNN)

K近邻算法(k-nearest neighbor,KNN) 经过一周昏天黑地的加班之后,终于到了周末,又感觉到生活如此美好,遂提笔写一写KNN,这个也许是机器学习众多算法中思想最为简单直白的算法了,其分类思想,总结起来就一句话:近朱者赤,近墨者黑。当然,KNN也可以用于回归任务,在回归任务中,采用“平均法”,即把离预测样本最近的K个样本的label(连续值)取平均作为预测结果,也可以根据距离远近进...

天泽28的专栏 6255

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

邻近算法(KNN)原理简单解析

邻近算法(KNN)原理简单解析 一、什么是邻近算法1.1简介1.2核心思想1.3 算法流程1.4 优缺点二、实例演示KNN算法 一、什么是邻近算法 1.1简介 邻近算法,或者说K最近邻(KNN,K-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是K个最近的邻居的意思,说的是每个样本都可以用它最接近的K个邻近值来代表。近邻算法就是将数据集合中每一个记录进行分类的方法 。 1.2核心思想 KNN算法的核心思想是,如果一个样本在特征空间中的K个最相邻的样本中的大多

我玩的很开心的博客 6110

机器学习——K-近邻算法(KNN)

K-近邻算法(K-Nearest Neighbors, 简称 KNN)是一种基于实例的机器学习算法,广泛应用于分类和回归任务。它通过计算数据点之间的相似度(通常是距离度量),然后预测新的数据点的标签或数值。在图像分类任务中,KNN 可以通过计算图像特征向量之间的距离来分类,例如手写数字识别。KNN 可用于垃圾邮件检测,通过比较新邮件和历史邮件的相似性,判断其类别。原则,根据 kkk 个最近邻居的类别进行投票,选出出现最多的类别。基于用户相似度的推荐系统中,KNN 常用于查找兴趣相似的用户群体。

CYTLOVELY的博客 4919
上一篇: knn算法的部分处理操作
下一篇: 电路实验^_^
Cherry_37
博客等级 码龄9年 4粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值