刚刚开始在一个视频上学习机器学习,不懂的还是很多,这也算作是学习机器学习的笔记吧
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%
另外还附加一个数据文件(见附录)
相关推荐
kNN,全称为K最近邻(K-Nearest Neighbors),是机器学习领域中最基础且直观的算法之一。它属于监督学习方法,主要用于分类和回归问题。kNN算法基于一个简单的思想:未知类别的样本可以被分类为其最近的k个已知类别...
在众多的机器学习算法中,K最近邻(K-Nearest Neighbors, KNN)算法是一个简单却实用的监督学习方法,常用于分类和回归问题。 KNN算法的核心思想是“物以类聚”,即假设新样本会与训练集中最相似的K个样本类别一致...
机器学习实战 - k近邻算法(KNN算法)总结 适合机器学习实战入门新手 K-近邻算法,又称为 KNN 算法,是数据挖掘技术中原理最简单的算法。 KNN 的工作原理:给定一个已知类别标签的数据训练集,输入没有标签的新数据...
机器学习中的KNN(K-Nearest Neighbors)算法是一种基于实例的学习,也被称为懒惰学习,因为它在预测阶段才进行计算。KNN的核心思想是:一个样本的类别由其最近邻的K个样本的类别决定,其中K通常取奇数以避免平局。...
在本课程"宅着宅着就学习惯了"中,我们深入探讨了机器学习领域中的一个基础算法——K近邻(K-Nearest Neighbors,简称KNN)。KNN算法是一种监督学习方法,广泛应用于分类和回归问题。下面将详细阐述KNN算法的基本...
在机器学习领域,K-近邻(K-Nearest Neighbors,简称KNN)算法是一种简单而有效的分类和回归方法。本资源包“机器学习实战-knn算法代码及数据集”专注于KNN算法的实现与应用,特别是针对手写数字识别的问题。下面将...
在机器学习领域,KNN(K-Nearest Neighbors)算法是一种广泛应用的监督学习方法,尤其在分类问题中表现出色。KNN算法基于实例学习,其核心思想是“近朱者赤,近墨者黑”,即一个未知样本点的类别通常由其最近邻的K个...
机器学习算法实践:knn算法实现分类,计算识别准确率(鸢尾花数据集) 机器学习算法实践:knn算法实现分类,计算识别准确率(鸢尾花数据集) 机器学习算法实践:knn算法实现分类,计算识别准确率(鸢尾花数据集) ...
报告概述了基于PCA(主成分分析)和KNN(K最近邻)算法的毒蘑菇分类预测实验,旨在解决误食毒蘑菇导致的安全问题。...同时,实验报告也展示了机器学习在实际问题中的应用,有助于加深对机器学习算法的理解和实践。
综上所述,KNN算法是机器学习中一种基础且实用的分类方法,尽管存在一些局限性,但通过适当的优化和调整,仍然能在多种场景下发挥重要作用。在实际应用中,我们需要结合具体问题来选择合适的距离度量、K值,并考虑...
**机器学习实战——KNN算法代码与数据解析** 在机器学习领域,K-近邻(K-Nearest Neighbors,简称KNN)算法是一种简单而有效的分类和回归方法。KNN算法基于实例学习,它的核心思想是:一个样本的类别由其最近的K个...
KNN,全称为K-Nearest Neighbors,是十大经典机器学习算法之一,因其简单而有效的特性,在数据挖掘和模式识别领域广泛应用。本篇将详细阐述KNN算法的基本原理、实施步骤以及如何选择合适的K值。 KNN算法的核心思想...
KNN,全称为K-Nearest Neighbors,是机器学习领域中最基础且广泛应用的监督学习算法之一。这个算法基于一个简单直观的原理:一个样本的类别可以由其最近的K个邻居来决定,这里的“近”通常是根据特征空间中的欧氏...
在本作业中,学生将深入理解并实现一种基础的机器学习算法——K近邻(K-Nearest Neighbors,简称KNN)。KNN是监督学习中的非参数方法,广泛应用于分类和回归问题。该作业主要涵盖了以下几个方面: 一、KNN算法理论 ...
### 机器学习十大算法之kNN详解 #### 一、引言 在众多机器学习算法中,k近邻算法(k-Nearest Neighbors,简称kNN)是一种简单且直观的方法,它通过计算未知样本与训练集中每个样本的距离,选取距离最近的k个样本...
这里通过python的绘图工具Matplotlib包可视化实现机器学习中的KNN算法。 需要提前安装python的Numpy和Matplotlib包。 KNN–最近邻分类算法,算法逻辑比较简单,思路如下: 1.设一待分类数据iData,先计算其到已...
机器学习算法KNN(K近邻)应用实例 使用KNN(K近邻)算法对是否容易得糖尿病问题进行预测。 资源中包括完成的KNN算法训练和实现过程,以及用于机器学习的糖尿病数据集。 数据特征包括: Pregnancies:怀孕次数 ...
机器学习中的KNN算法,全称K-Nearest Neighbors,是一种基于实例的学习方法,也是非参数监督学习算法的一种。KNN算法最早由E. Fix和J. L. Hodges在1951年提出,它简单易懂,且在许多实际问题中表现出较好的效果。KNN...
在机器学习领域,KNN(K-Nearest Neighbors)是一种简单而强大的监督学习算法,常用于分类任务。本主题将深入探讨KNN算法,并通过一个经典的实例——鸢尾花数据集来阐述其应用。 首先,KNN算法的基本思想是...