knn

手写体识别——Knn算法和logistic算法

做~自己de王妃 提交于 2020-01-09 01:03:22
手写体识别——Knn算法和logistic算法 Knn算法 导入手写体数据 from sklearn . datasets import load_digits ldg = load_digits ( ) ldg {'data': array([[ 0., 0., 5., ..., 0., 0., 0.], [ 0., 0., 0., ..., 10., 0., 0.], [ 0., 0., 0., ..., 16., 9., 0.], ..., [ 0., 0., 1., ..., 6., 0., 0.], [ 0., 0., 2., ..., 12., 0., 0.], [ 0., 0., 10., ..., 12., 1., 0.]]), 'target': array([0, 1, 2, ..., 8, 9, 8]), 'target_names': array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), 'images': array([[[ 0., 0., 5., ..., 1., 0., 0.], [ 0., 0., 13., ..., 15., 5., 0.], [ 0., 3., 15., ..., 11., 8., 0.], ..., [ 0., 4., 11., ..., 12., 7., 0.], [ 0., 2., 14., ...,

Q: KNN in R — strange behavior

谁说我不能喝 提交于 2020-01-07 11:32:01
问题 (in continuation to this post) Does anyone know why the below KNN R code gives different predictions for different seeds? This is strange as K<-5, and thus the majority is well defined. In addition, the floating numbers are large -- so no precision of data problem arises + the data is scaled and centered. library(class) from = -(2^30) to = -(from) seed <- -229881389 set.seed(seed) K <- 5 m = as.integer(runif(1, K, 20)) n = as.integer(runif(1, 5, 1000)) train = matrix(runif(m*n, from, to),

Q: KNN in R — strange behavior

ⅰ亾dé卋堺 提交于 2020-01-07 11:29:46
问题 (in continuation to this post) Does anyone know why the below KNN R code gives different predictions for different seeds? This is strange as K<-5, and thus the majority is well defined. In addition, the floating numbers are large -- so no precision of data problem arises + the data is scaled and centered. library(class) from = -(2^30) to = -(from) seed <- -229881389 set.seed(seed) K <- 5 m = as.integer(runif(1, K, 20)) n = as.integer(runif(1, 5, 1000)) train = matrix(runif(m*n, from, to),

机器学习算法—KNN算法原理

人走茶凉 提交于 2020-01-07 02:49:50
机器学习算法—KNN算法原理 概述: KNN算法一般也会经常被称为K邻近算法,其核心思想是根据训练集中的样本分类计算测试集中样本与训练集中所有样本的距离,根据所设定的K值选取前K个测试样本与训练样本最近的结果,结果中大多数训练样本所处在的类别即是本测试样本的类别。因训练样本的分类结果为已知因此KNN算法属于有监督学习算法。 算法原理: 1、以下图样本散点图展示训练集的整体分布情况 从散点图中可以发现训练集的数据分类数量为3个类别,分别为蓝色类别、红色类别和黄色类别,训练样本总数为15个。 2、导入第一个测试样本 3、需要根据已知的训练样本分类结果判断测试样本的类别,因此计算测试样本与所有训练样本的距离 因训练样本数量为15,所以计算完成的距离参数为15个。 4、K值是KNN算法中唯一需要设定的参数,假定K值为3则在15个距离参数中选择最近的3个 统计3个距离中大部分训练样本所处的分类即为本测试样本的分类,本次分类中距离最近的3个训练样本有2个属于红色类别,因此本测试样本被分类为红色 5、对下一个测试样本以相同方式进行距离计算和分类 注意事项: 1、K的取值尽量为奇数以确保距离计算结果必定会有一个K个距离中包括较多的类别,比如例子中取3,则3个中有2个训练样本为红色类别以此判断测试样本属于红色类别。如K取4产生下图中的情况 4个距离参数中,2个训练样本为红色类别

【1】KNN(K-nearest neighbors algorithm)

隐身守侯 提交于 2020-01-05 15:09:08
基本原理 KNN算法又叫最近邻居法,是一种非常简单易于掌握的分类算法。 其基本原理是,存在一个已知标签的数据集合,也就是训练样本集。 这个样本集中的每一个数据所属的分类都是已知的。 当一个没有标签的新数据需要确定自己属于哪个分类的时候, 只需要把新数据的每个特征和训练集中的每个数据的特征进行比较, 找出其中和新数据最相似(最近邻)的k个数据, 算法取这k个数据中出现次数最多的标签作为新数据的类别。 通常k不大于20。 代码实现 假如现在又四个已知点 , [ 1.0 , 1.1 ], [ 1.0 , 1.0 ], [ 0 , 0 ], [ 0 , 0.1 ], 类别标签分别是A、A、B、B 如果给定一个新的点[0, 0],那么怎么判断它属于A还是B呢? 按照KNN算法原理,需要执行以下操作: 计算训练集中各点与当前点之间的距离(本文采用最经典的欧式距离) 计算训练集中各点与当前点之间的距离(本文采用最经典的欧式距离) 按照距离递增次序对各点排序 选取与当前点距离最小的k个点 确定前k个点所在类别的出现频率 返回前k个点出现频率最高的类别,即为分类结果。 以下代码实现了KNN算法的分类过程 # 创建训练数据集def creatDataSet(): group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]]) labels = ['A

KNN算法

女生的网名这么多〃 提交于 2020-01-05 15:08:41
一、 概念: KNN(K Near Neighbor):K 个最近的邻居,即每个样本都可以用它最接近的 K 个邻居来代表。 当 k=1 时,?可以用红方块代表,因为 k=1 时,方块离?最近 当 k=5 时,?可以用三角代表,因为 k=5 时, 5 个离 ? 最近的图片中,有三个是三角,少数服从多数,所以可以用三角代表 二、判别方法 1、计算已知类别数据集中的点与当前点之间的距离 2、按距离递增次序排序 3、 选取当前点距离最小的 K 个点 4、 统计前 k 个点所在类别出现的概率 5、 返回前 k 个点出现频率最高的类别作为当前点的预测类别 三、例题 1、根据欧式距离公式计算出《唐人街探案》各特征和其它影片各特征之间的距离 算出所有距离: 取 k=5 时,按递增排序,前 4 个电影都是喜剧片,有一个是爱情片,所以《唐人街探案》属于喜剧片 四、KNN 特点 1、 优点 : 简单有效、重新训练的代价低、算法复杂度低、适合类域交叉样本、适用大样本自动分类 2、 缺点:惰性学习、类别分类不标准化、输出解释性不强、不均衡性、计算量大 过拟合:什么都学,主要的和次要的都学,把次要的当成主要的学,没有重点 欠拟合:基本的特征都没学会 K 值选择会对 KNN 的结果产生重大影响 如果选择较小的 k 值,就相当于用较小的领域中的训练实例进行预测,“学习”的近似误差会减小

Recreate Tensor From String

依然范特西╮ 提交于 2020-01-04 07:48:17
问题 I am using tensorflow.js(node) as a way of preprocessing image files to tensors. const tf = require('@tensorflow/tfjs'); require("@tensorflow/tfjs-node") const mobilenetModule = require('@tensorflow-models/mobilenet'); const knnClassifier = require('@tensorflow-models/knn-classifier'); const { loadImage, createCanvas } = require('canvas') When I create a classifier, it saves a Tensor class object as a key:value pair. After creating this object, I stringify it, and write it to a file so I can

SMOTE initialisation expects n_neighbors <= n_samples, but n_samples < n_neighbors

大兔子大兔子 提交于 2019-12-30 11:28:05
问题 I have already pre-cleaned the data, and below shows the format of the top 4 rows: [IN] df.head() [OUT] Year cleaned 0 1909 acquaint hous receiv follow letter clerk crown... 1 1909 ask secretari state war whether issu statement... 2 1909 i beg present petit sign upward motor car driv... 3 1909 i desir ask secretari state war second lieuten... 4 1909 ask secretari state war whether would introduc... I have called train_test_split() as follows: [IN] X_train, X_test, y_train, y_test = train_test

SMOTE initialisation expects n_neighbors <= n_samples, but n_samples < n_neighbors

霸气de小男生 提交于 2019-12-30 11:28:03
问题 I have already pre-cleaned the data, and below shows the format of the top 4 rows: [IN] df.head() [OUT] Year cleaned 0 1909 acquaint hous receiv follow letter clerk crown... 1 1909 ask secretari state war whether issu statement... 2 1909 i beg present petit sign upward motor car driv... 3 1909 i desir ask secretari state war second lieuten... 4 1909 ask secretari state war whether would introduc... I have called train_test_split() as follows: [IN] X_train, X_test, y_train, y_test = train_test

kNN: training, testing, and validation

守給你的承諾、 提交于 2019-12-30 05:00:06
问题 I am extracting image features from 10 classes with 1000 images each. Since there are 50 features that I can extract, I am thinking of finding the best feature combination to use here. Training, validation and test sets are divided as follows: Training set = 70% Validation set = 15% Test set = 15% I use forward feature selection on the validation set to find the best feature combination and finally use the test set to check the overall accuracy. Could someone please tell me whether I am doing