刚刚开始在一个视频上学习机器学习,不懂的还是很多,这也算作是学习机器学习的笔记吧
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%
另外还附加一个数据文件(见附录)
相关推荐
机器学习实战 - k近邻算法(KNN算法)总结 适合机器学习实战入门新手 K-近邻算法,又称为 KNN 算法,是数据挖掘技术中原理最简单的算法。 KNN 的工作原理:给定一个已知类别标签的数据训练集,输入没有标签的新数据...
K最邻近结点算法(k-Nearest Neighbor algorithm)的缩写形式,是电子信息分类器算法的一种。KNN方法对包容型数据的特征变量筛选尤其有效。
【宅着宅着就学习惯了】机器学习课程——KNN算法实战代码(更新) 1. KNN算法实战(一) 2. KNN算法实战(二) 3. KNN算法实战-习题数据
机器学习算法之KNN算法 样本数据 具体操作方法参考 https://www.php3.cn/a/313.html
机器学习算法实践:knn算法实现分类,计算识别准确率(鸢尾花数据集) 机器学习算法实践:knn算法实现分类,计算识别准确率(鸢尾花数据集) 机器学习算法实践:knn算法实现分类,计算识别准确率(鸢尾花数据集) ...
机器学习实战-knn算法代码及数据集
机器学习报告-机器学习大作业16页-基于PCA和KNN算法的毒蘑菇分类预测-1.研究意义2.数据描述3.模型描述4.算法实现5.运行结果及意义说明6.总结(原创资源,作者的机器学习课程报告)
机器学习knn算法实现,工程使用pycharm建立,包括机器学习实战的代码和自己重写的部分代码,增加部分函数的使用方法介绍。
机器学习十大算法之KNN算法实现,调试可运行。。详细注释,在代码中加深对knn算法原理的理解。KNN经典实例,可以根据此应用扩展成其他应用
机器学习实战——KNN算法代码+数据
机器学习KNN算法KNN.py
这里通过python的绘图工具Matplotlib包可视化实现机器学习中的KNN算法。 需要提前安装python的Numpy和Matplotlib包。 KNN–最近邻分类算法,算法逻辑比较简单,思路如下: 1.设一待分类数据iData,先计算其到已...
kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来...
机器学习十大算法:kNN 机器学习十大算法:kNN
机器学习算法之KNN 2、KNN案例:鸢尾花数据分类
机器学习算法KNN(K近邻)应用实例 使用KNN(K近邻)算法对是否容易得糖尿病问题进行预测。 资源中包括完成的KNN算法训练和实现过程,以及用于机器学习的糖尿病数据集。 数据特征包括: Pregnancies:怀孕次数 ...
KNN(K- Nearest Neighbor)法即K最邻近法,最初由 Cover和Hart于1968年提出,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路非常简单直观:如果一个样本在特征空间中的K个最相似(即特征...
KNN分类算法原理,KNN分类算法Python实战,KNN算法补充。
用于高光谱遥感影像分类的机器学习脚本,其中使用了KNN算法(K-Nearest Neighbors Algorithm)来对遥感影像进行分类。 在高光谱遥感影像分类中,KNN算法是一种基于距离度量的分类方法。其基本思想是对于一个待分类...
机器学习算法knn课件,机器学习算法knn课件,机器学习算法knn课件。