knn

How do I use knn model for new data in R?

烂漫一生 提交于 2020-03-25 19:27:52
问题 I've just written a knn model in R. However, I don't know how to use the output to predict new data. # split into train (treino) and test (teste) treino_index <- sample(seq_len(nrow(iris)), size = round(0.75*nrow(iris))) treino <- iris[treino_index, ] teste <- iris[-treino_index, ] # take a look at the sample head(treino) head(teste) # save specie from later treino_especie = treino$Species teste_especie = teste$Species # exclude species from train and test dataset treino = treino[-5] teste =

Getting TypeError: '(slice(None, None, None), 0)' is an invalid key

送分小仙女□ 提交于 2020-03-21 11:14:11
问题 Trying to plot the decision Boundary of the k-NN Classifier but is unable to do so getting TypeError: '(slice(None, None, None), 0)' is an invalid key` h = .01 # step size in the mesh # Create color maps cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF','#AFAFAF']) cmap_bold = ListedColormap(['#FF0000', '#00FF00', '#0000FF','#AFAFAF']) for weights in ['uniform', 'distance']: # we create an instance of Neighbours Classifier and fit the data. clf = KNeighborsClassifier(n_neighbors=6,

python机器学习之KNN算法

跟風遠走 提交于 2020-03-20 23:30:22
K邻近算法(kNeighbrClassifier/KNN):原理为 欧几里得距离+最近+投票(权重)+概率    根据距离的远近进行分类   欧几里得距离:多维空间中各点之间的距离       缺点: 时间复杂度和空间 复杂度较大    注 意:当训练样本数据少的时候,样本比例一定要相同   KNN算法分类电影 import numpy import pandas #导入Excel文件 from sklearn.neighbors import KNeighborsClassifier #机器学习算法库,没有深度学习算法 movie=pandas.read_excel(r"D:\Python\代码\Machine-Learn\1-KNN\data\movie.xlsx",sheet_name=0) movie 电影名称 武打镜头 接吻镜头 分类情况 0 大话西游 36 1 动作片 1 杀破狼 43 2 动作片 2 前任3 0 10 爱情片 3 战狼2 59 1 动作片 4 泰坦尼克号 1 15 爱情片 5 新余心愿 2 19 爱情片 movie=pandas.read_excel(r"D:\Python\代码\Machine-Learn\1-KNN\data\movie.xlsx",sheet_name=0) x=movie[["武打镜头","接吻镜头"]]

机器学习之初识KNN算法——针对泰坦尼克号生存记录建模的两种方法

我只是一个虾纸丫 提交于 2020-03-16 09:46:41
KNN算法原理 本篇博客基于《机器学习实战》实现 算法原理简要概括,重在代码实现 k-近邻算法(kNN)的工作原理是:存在一个样本数据集合,称训练样本集,并且样本集中每个数据都存在标签,即样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似的数据(距离最近)的分类标签。 如图,图中绿点的标签是未知的,但已知它属于蓝方块和红三角二者其一,怎么判断出它属于哪一方呢? kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。 在上图实线圆圈内,红三角有两个,而蓝方块只有一个,所以它是红三角的可能性大;但在虚线圈内,红三角有两个,蓝方块却有三个,那么它是蓝方块的可能性就越大;所以对于kNN算法, k的取值不同 ,得出的结果可能也会不同,k的取值很大程度上决定了这个模型的准确率。 KNN算法步骤 收集数据:爬虫、公开数据源 数据清洗:处理缺失值、无关特征 导入数据,转化为结构化的数据格式 数据归一化、标准化 计算距离(欧氏距离最通用) 对距离升序排列,取前K个 判断测试数据属于哪个类别 计算模型准确率 KNN算法实现 其中 Pclass,Sex,Age,SibSp,Parch

机器学习KNN算法之手写数字数字识别

强颜欢笑 提交于 2020-03-16 09:36:47
算法简介 手写数字识别是KNN算法一个特别经典的实例,其数据源获取方式有两种,一种是来自MNIST数据集,另一种是从UCI欧文大学机器学习存储库中下载,本文基于后者讲解该例。 基本思想就是利用KNN算法推断出如下图一个32x32的二进制矩阵代表的数字是处于0-9之间哪一个数字。 数据集包括两部分,一部分是训练数据集,共有1934个数据;另一部分是测试数据集,共有946个数据。所有数据命名格式都是统一的,例如数字5的第56个样本—— 5_56.txt ,这样做为了方便提取出样本的真实标签。 数据的格式也有两种,一种是像上图一样由0、1组成的文本文件;另一种则是手写数字图片,需要对图片做一些处理,转化成像上图一样的格式,下文皆有介绍。 算法步骤 收集数据:公开数据源 分析数据,构思如何处理数据 导入训练数据,转化为结构化的数据格式 计算距离(欧式距离) 导入测试数据,计算模型准确率 手写数字,实际应用模型 由于所有数据皆由0和1构成,所以不需要数据标准化和归一化这一步骤 算法实现 处理数据 在计算两个样本之间的距离时,每一个属性是一一对应的,所以这里将32x32的数字矩阵转化成1x1024数字矩阵,方便计算样本之间距离。 #处理文本文件 def img_deal(file): #创建一个1*1024的一维零矩阵 the_matrix = np.zeros((1,1024)) fb =

2.机器学习之KNN

☆樱花仙子☆ 提交于 2020-03-13 15:02:33
K-最近邻(k-Nearest Neighbor,KNN)分类算法,kNN算法的核心思想是: 如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性 。打个比方:你们想了解我是个怎样的人,然后你们发现我的身边关系最密切的朋友是一群逗逼,所以你们可以默认我也是一个逗逼。 例如:如下图所示,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,因此绿色圆被赋予红色三角形那个类;如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。 数据分析当中KNN通过测量不同特征值之间的距离来进行分类的。存在一个样本数据集合,也称作训练样本集,并且样本集中的每个数据都存在标签,所选择的邻居都是已经正确分类的对象,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的数据后,将这个没有标签的数据的每个特征与样本集中的数据对应的特征进行比较,然后提取样本中特征最相近的数据(最近邻)的分类标签;即利用训练数据对特征向量空间进行划分,并将划分结果作为最终算法模型。对于任意n维输入向量,分别对应于特征空间中的一个点,输出为该特征向量所对应的类别标签或预测值。 一般而言,我们只选择样本数据集中前k个最相似的数据,这就是KNN算法中K的由来,通常k是不大于20的整数。最后

KNN算法及其改进

僤鯓⒐⒋嵵緔 提交于 2020-03-12 11:24:34
KNN算法优缺点 优点 (1) 精度高 (2) 对异常值不敏感:某个异常值对整个结果不造成影响; (3) 无数据输入假定:无数据的独立性等假设; 缺点 (1) 计算复杂度高:因为要计算的点需要与所有点计算距离,所以复杂度很高; (2) 空间复杂度高:因为需要加载所有的样本; 适应的数据范围 数值型和标称型(是或者否) 算法原理 K值选择 如果选择较小的K值 – 近似误差会减小(针对训练集),估计误差会增大(针对测试集或验证集); – 对噪声比较敏感; – 容易过拟合(模型复杂),泛化能力差; 如果选择较大的K值 – 近似误差增大,估计误差会减小; – 整体模型变得简单; 距离选择 欧式距离:对异常值更敏感 曼哈顿距离 马氏距离:可以消除样本间的相关性,协方差矩阵可以降低样本差异性; 算法改进 KD树 – 对K维空间的实例点进行存储以便快速检索; – 是二叉树,相当于不断用垂直与坐标轴的超平面将K维空间切分构成一系列K维超矩形区域; 例子 以中值作为切割点,对x轴从小到大排序 (2,3), (4,7), (5,4), (7,2), (8,1), (9,6) 此时x轴的中值位置为(7,2);(2,3), (4,7), (5,4)作为左节点,(8,1), (9,4)作为右节点,分别对y轴切分; 最终树结构如下: kd树查找(假设查找(2,4.5)节点) 通过KD树,找到最后一个叶子节点为

【学习笔记】KNN(最近邻)

半世苍凉 提交于 2020-03-08 02:18:03
综述 1.1 Cover和Hart在1968年提出了最初的邻近算法 1.2 分类(classification)算法 1.3 输入基于实例的学习(instance-based learning), 懒惰学习(lazy learning)即临时抱佛脚,不提前训练好模型 1.4 为了判断未知实例的类别,以所有已知类别的实例作为参照 算法 步骤: 选择参数K 计算未知实例与所有已知实例的距离 选择最近K个已知实例 根据少数服从多数的投票法则(majority-voting),让未知实例归类为K个最邻近样本中最多数的类别 距离(Euclidean Distance) n维上的距离: 例子 import math def ComputeEuclideanDistance ( x1 , y1 , x2 , y2 ) : d = math . sqrt ( math . pow ( ( x1 - x2 ) , 2 ) + math . pow ( ( y1 - y2 ) , 2 ) ) return d d_ag = ComputeEuclideanDistance ( 3 , 104 , 18 , 90 ) print ( 'd_ag:' , d_ag ) 计算G点到每个点距离 优缺点 优点: 简单,易于理解,容易实现 通过对K的选择可具备丢噪音数据的健壮性 缺点:

机器学习算法理论及实战(一)——KNN算法

百般思念 提交于 2020-03-05 21:06:04
目录: 一、介绍 二、工作流程 三、示例 四、用Python实现 1.模拟数据及绘图 2.KNN过程 3.使用scikit-learn中的KNN 五、KNN的优缺点 1.优点 2.缺点 六、KNN的应用 1.银行系统 2.计算信用等级 3.政治 4.其他领域 一、介绍 K最近邻(KNN)算法是一种监督的ML算法,可用于分类以及回归预测问题。但是,它主要用于行业中的分类预测问题。以下两个属性将很好地定义KNN: 惰性学习算法 :因为它没有专门的训练阶段,并且在分类时将所有数据用于训练。 非参数学习算法 :因为它不假设有关基础数据的任何信息 。 二、工作流程 K最近邻(KNN)算法使用“特征相似性”来预测新数据点的值,这意味着,将根据新数据点与训练集中的点的匹配程度为该新数据点分配一个值。我们可以通过以下步骤了解其工作方式: 步骤1: 加载训练以及测试数据。 步骤2: 选择K的值,即最近的数据点(K可以是任何整数)。 步骤3: 对于测试数据中的每个点,请执行以下操作: 借助以下任意一种方法来计算测试数据与训练数据的每一行之间的距离: 欧几里得距离,曼哈顿距离或汉明距离 。 最常用 的距离计算方法是欧几里得。 基于距离值,将它们按升序排序。 然后它将从排序后的数组中选择前K行。 现在,它将基于这些行中最多出现的类别为测试点分配这一个类。 步骤4: 结束。 三、示例

Kmeans算法与KNN算法的区别

被刻印的时光 ゝ 提交于 2020-03-05 09:52:22
最近研究数据挖掘的相关知识,总是搞混一些算法之间的关联,俗话说好记性不如烂笔头,还是记下了以备不时之需。 首先明确一点KNN与Kmeans的算法的区别: 1.KNN算法是分类算法,分类算法肯定是需要有学习语料,然后通过学习语料的学习之后的模板来匹配我们的测试语料集,将测试语料集合进行按照预先学习的语料模板来分类 2Kmeans算法是聚类算法,聚类算法与分类算法最大的区别是聚类算法没有学习语料集合。 K-means算法是聚类分析中使用最广泛的算法之一。它把n个对象根据他们的属性分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。其聚类过程可以用下图表示: 如图所示,数据样本用圆点表示,每个簇的中心点用叉叉表示。(a)刚开始时是原始数据,杂乱无章,没有label,看起来都一样,都是绿色的。(b)假设 数据集可以分为两类,令K=2,随机在坐标上选两个点,作为两个类的中心点。(c-f)演示了聚类的两种迭代。先划分,把每个数据样本划分到最近的中心点 那一簇;划分完后,更新每个簇的中心,即把该簇的所有数据点的坐标加起来去平均值。这样不断进行”划分—更新—划分—更新”,直到每个簇的中心不在移动为 止。 该算法过程比较简单,但有些东西我们还是需要关注一下,此处,我想说一下"求点中心的算法" 一般来说,求点群中心点的算法你可以很简的使用各个点的X