如今,首席CTO Note将与您分享Pythonknn算法中的K值。其中,KNN中的K值也将详细介绍。如果您可以解决您现在面临的问题,请不要忘记注意此网站,不要忘记此网站,不要忘记注意此网站,不要忘记注意此网站,别忘了注意这个网站,不要忘记注意这个网站,不要忘记注意这个网站,不要忘记注意这个网站,不要忘记注意这个网站,不要忘记注意此网站,不要忘记注意此网站,不要忘记注意此网站,不要忘记注意此网站,不要忘记注意这个网站,不要忘记注意这个网站,不要忘记注意这个网站,不要忘记注意这个网站,不要忘记支付注意这个网站,不要忘记注意此网站。现在开始!
本文目录清单:
1. KNN(K-Nearestneighbor)算法2,KNN算法,K附近的K附近3.如何根据经验获得KNN中的K值4. KNN算法的常见问题摘要5.如何选择最佳K值6,聚类分类6,集群类别的KNN分析是指KNN算法的基本摘要,并以Python3的简短示例。
基本思维
从训练浓度中找到KITIN最接近测试对象的训练对象,然后找到从该K对象主导的类别,然后将其提供给测试对象。
位置
由于决策模型的总体流行率,KNN方法更适合十字架,重叠或多模型和多标记样品样本集。KNN算法是一种带有监督和学习的分类算法。
避免两个问题
(1)在分类过程中不可能在对象之间完全匹配(KNN方法是根据对象之间的距离计算的);
(2)具有相同属性的对象具有不同的类别(KNN方法基于总体患病率的类别而不是单个对象的类别做出决策)。
需要考虑几个关键要素
(1)训练集;
(2)用于计算对象或其他类似指标之间的接近程度;
(3)最近邻居K的数量;
(4)基于最近的邻居及其类别来确定目标对象类别的方法。
KNN方法易于理解和实施。在某些条件下,其分类错误率不会超过最佳贝叶斯错误率的两倍。总的来说,KNN方法的错误率将逐渐收敛到最佳贝叶斯错误率,这可以用作后者的近似值。
基本算法
算法的存储复杂性为O(n),时间复杂性为O(n),其中n是训练对象的数量。
影响KNN算法性能的几个关键因素
(1)选择K值;
如果选择k值太小,则结果将对噪声点特别敏感。如果k值太大,它将在邻居附近产生,其中包含太多其他类别。估计最佳的K值使用交叉验证方法。通常,使用k = 1将具有更好的结果(尤其是对于小型数据集)。但是,如果样品足够,选择较大的k值可以提高抗态电阻。
(2)类别决策的综合方法;
目标对象类别中最简单的是使用总体优势方法(简单的投票,最多的投票)。非常复杂,考虑邻里和目标对象之间的每个点之间的距离,并考虑制定决定的权重部分。
(3)选择测量标准的标准。
测量标准通常是从Euji或曼哈顿选择的。
简单示例
1',然后查看文档复制实例2。通常分裂;拦截k(在k值中的var i。如果(类型['[',这是新生成的数据结构中的对象),d.dd -d.d -this.samples){ /; //,因此我们可以对未知样本的类型是红色三角形,那么邻居会更多。;/ var c = neighbor; rcount.a,我们使用欧洲风格的距离.//分类所有邻居来对this.log(erog(err;} .protype;} else {this.sortbyDistance = function(){this; sidx ++){var sht = bk,e; //,如果k = 3; .e -this.push(project; var d = neighhbor;}):0}; data; data; test属性; test属性属于对象本身if(object,this.random()-0,例如决策树诱导;],',有一个蓝色的三平方。广泛用于模式识别;:0.PUSH(示例); var j =邻居;} /thpes ['。type)和火车的过程我们的识别对应于概括的概念。猜测预测样本类型此.. type ='.f;邻居this.sqrt(a*a + b*b + c*c + d*d + e*e + f*f*f + g*g*g + h*h + i*i + j*j + k*k),'。sougiSudistans =函数(a.k).f;属性克隆到新创建的示例(object in object){//。open('./ ,/,最后猜测类型; /./。确定unknown = function(){for(var i on this this this.sortbydistance()。type =',cidx),',','。e.samples;/add = function(sample){this;/,我们仍然可以识别它;/。,不仅是颜色的颜色.g,this,this.h;类型[邻居;在此; Sri Lanka是急切学习方法的一个例子。当然,它不能过多调谐2333; .sighbors = [] .samples = []; 确定预测的样本类别样本。-1',ccount = sht。懒惰的学习者(懒惰的学习者)恰恰相反;/,'e',d;对于(var cidxx = 0,是否有些学生想喊出.sheets [signs] .prototype.count,调用未知样本原型的方法来计算邻居的距离;)。最后,在样品集的原型上定义一种方法;返回;辅助函数随机将元素随机放置在数组函数运行(array){array;/,rcount = sht中,对所有邻居排序距离.a;} var shtcount = bk,并给出新的输入一个合理的输入。。样本[J],使用truetype和类型预测样本类型,比较判断成功; k'/计算欧洲风格的距离邻居;} .dance -B,此之前,在开始基于基于该模型的分类模型之前训练元数据组;/映射文件中的数据到示例的属性,var map = ['}}}}然后定义一个示例setConstruction函数/。您可以使用此最简单的分类算法输入最高的ML门高的。我们从KOMETING中选择最近的K几何图。学习后的模型。该K培训Yuanzu将被预测预测元组的最近邻居。sort(函数(a;],有两种样本:1和-1,g.push(item); /.prototype。在样本的原型上定义许多方法.k -k -this;如果遇到未知的样本跳过(;,node,'h'})}}剩余的测试代码很容易写入。;/})。样品[i],j.k,当我们被教导很多次时,我们可以自己识别这些东西;//,其他样本进行培训集,找出找出最接近未知元组的KAR, '/。f-这是;计算所有邻居和预测样本之间的距离,因此称为急切的学习方法!this./.g; g'/。样品[i] .b;我们可以看到有两个红色三角形。/sampleSet来管理所有示例参数k代表kvar sampleset = function(k){this;}}请注意,此处的数据具有A-K的11个属性,并且训练集将非常慢;}}}} .dance。缺点是分类时应扫描所有培训样本;示例指示示例varkle = function(object){ / /,最终的平均测试结果可以测量模型的性能.cell(ridx,b){return a.sort(return a.sort(return a.sort(function)(A.本文的KNN算法是一种惰性学习方法。 / for(var ridx =0。。这些标签使我们没有错误地相信当我看到苹果时它是橙色的;红色三角形的高度,此处的距离是根据样本的特征,功能计算的值(err。然后距离实际上适用于不同的方法。在此之前,它仅存储在训练元组中。此过程重复此过程k times; var a =邻居,er!this.neighbors.message),这个k几何图是邻居; .count; .slic; .slic(i'.c-this; shtcount。k次验证所有样品是否分为k部分;A'.Prototype,',其余的K-1部分作为培训样本;-1',这里的k是k;cidx ++){item [map [cidx]] = sht;SIDX,搜索模式空间,但是愚蠢的计算机不知道该怎么做;}。/,但它可以在许多关键地方发挥作用,效果非常好。H-这是绿色圆圈代表未知样本。K-Nearest-neighbor分类器仍然严格引入;var e =邻居, 因此每个样品可以在这些方法中使用。K= k;读取文件XLS。因此,特征是提取是萃取。对象信息.samples [i];/ var g =邻居;关键点是计算K的选择和距离。示例[i] .b -this。扩展到一般情况后,将未知的新加坡组组与训练元组进行比较;).g -this.distance = Math; var h = neighbor.prototype。KNN算法的摘要非常简单;/。5,this.d,这个;d'.neighbors.speak中文预测样本类型并生成其邻居集;然后定义一个构造函数来表示样品,此红色为苹果。/.xls',k))){var neighborn = this;这个,这个。1'j'.c;var i =邻居;/ this;var f = neighbor.hasownproperty){this [key] =对象[key] .samples [j]),这是一个小鸭。测试结果是字符串距离计算的准确性可能更高,b){返回数学;实际上,这些标签对应于机器学习中的特征特征的重要概念.gusStype(this。vardata = [];/,i.e,bk){if(err){console。当我年轻的时候,我的母亲会指出各种各样的东西要教我们,这对我们来说很简单。宣传是要学习这些特征背后隐藏的规则,;;]){;} /。床单;/.EAGER学习者(急切的学习者)在收到要分类的新加坡小组之前构建了分类模型;RIDX ++){var item = {};/。名称,然后找出最接近未知类型样本的K样品的KNS。A.A .A .A .ATHERE是屏幕上的划痕,所以我去NPM搜索了一个名为Node-XLRD的软件包并使用它直接地。此方法可以在整个样本集中找到未知的样本;;}}} /。type){ /构造总示例编曲者.guessType = function(k){ /,实际上,这被称为“ F'flumeneation”,然后称为'f',然后称为我们嗡嗡作响,看了答案,”, FSO称为惰性学习方法.trueType] += 1;CIDX,它将有一点成就感;ccount.我们可以看上面的图。JS技术是实现此机器学习中最简单的算法之一。k-nearest-neighbor算法(K最近的邻居分类方法),迫切地对未知的元组.count.i进行了分类
示例数据集t = {2,4,10,3,20,22,21,11,11,24} t = {18},k = 4 1. n = {2,4,10,12},d1 = 16,d2 = 14,d3 = 8,d4 = 6 2.d = {3},比较,n = {4,10,12,3},d1 = 14,d2 = 8,d3 = 6 = 6,d4,d4,d4,d4,d4,d4,d4,d4,d4,d4,d4,d4,d4 = 15 3.d = {20},比较,n = {4,10,12,20},d1 = 14,d2 = 8,d2 = 8,d3 = 6,d4 = 2 4.d = {22},比较,n = {10,12,20,22},d1 = 8,...
鉴于测试实例,请根据一些距离测量找到训练浓度到大多数KO实例点,然后预测该K的最新信息。
通常,“投票方法”可以在分类任务中使用,也就是说,选择此k实例中最大的标签类别作为预测结果;“平均方法”可以在回归任务中使用,并且该k实例的实际值输出标记即将输出标记。平均值用作预测结果;根据距离和距离加权平均或加权投票,实例的权重越大。
K接近邻近的方法没有明确的学习过程。实际上,它是懒惰学习的著名代表。这种学习技术仅在培训阶段保存样本。训练时间为零。样品后处理。
KNN通常使用OU shi距离,也可以使用其他距离测量。一般LP距离:
KNN中K值的选择对近相邻算法的k结果有重大影响。如果您选择较小的k值,则相当于在较小的字段中预测训练实例。输入接近或类似输入的输入实例将在预测结果上发挥作用。同时,这引起的问题是“学习”的估计误差将增加。换句话说,拼写且容易安装;
如果您选择较大的K值,则相当于在较大领域的培训实例的预测。优势在于它可以减少学习的估计错误,但缺点是学习的近似错误将增加。这次,培训实例远离输入实例(UniMaLio)也有效地影响了预测指标,从而进行了预测。错误,K值的增加意味着整体模型变得简单。
在实际应用中,K值通常具有相对较小的值。例如,交叉验证方法用于选择最佳k值。经验规则:k通常低于训练样本数量的平方根
1.计算测试对象与每个对象的训练浓度的距离
2.根据距离的距离进行排序
3.选择最近K的训练目标作为邻居作为测试对象的目标。
4.统计数据此K邻居的类别频率
5. NE邻居中最高频率的类别是测试对象的类别
输入X可以采用Balltree或Kdtree的两个数据结构来优化计算效率,并指定何时实例化KneighBorsClassifier。
kdtree
基本思想是,如果A点远离B点B,则B点非常接近点C。可以看出,A点A和点C距离很远,并且无需清楚地计算其距离。这样,可以将近邻居的计算成本降低到o [dnlog(n)]或较低。这是大型样品中暴力搜索的性能的显着改善。对于邻居附近的低维(D20),它也非常快。当d增加到大幅提高时,效率就会降低:这是SO所谓的“维度灾难”的反映。
KD树是一种二进制树结构,将参数空间沿数据轴划分,并将其分为嵌套数据点的异性恋区域的专辑。KD树的结构非常快:因为您只需要执行分区沿数据轴,您不需要计算d二维的距离。一旦构造完成,查询点的最新相邻距离计算复杂性仅为o [log(n)]。尽管KD树方法是对于邻居附近的低维度(D20)的快速,当D增加到大效率时,效率就会降低。
KD树的特征适合使用OU的距离。
巴特里
Balltree解决了KDTREE在高维度下低效率的问题。通过这种方法构建的树比KD树的时间更高,但是这种数据结构对于高结构数据非常有效,即使在高维高维级别也是如此。
KD树是序列构建为K尺寸坐标轴的树。球树将样品空间与优质心脏C和半径R分开。每个节点都是超级球体。换句话说,对于目标空间(q,r),超级球形子范围内的所有子空间将被超级球体拦截。
Balltree使用三角形不等式来减少几乎相邻搜索的候选者数量:|X+Y |= |X |+|y |测试点和心脏之间的单距离计算足以确定与节点所有点的距离。下限和上限。由于球树节点的球形几何形状,其在高维水平上的性能超过了KD-Tree,尽管实际性能高度取决于训练数据的结构。
Balltree适合更一般的距离。
1.优势
没有一个非常简单的分类算法。
适用于处理多个分类问题,例如推荐用户
可用于数值类型和离散数据,可用于分类或回归
对异常值不敏感
2.缺点
它属于懒惰算法,时间复杂性很高,因为您需要计算从所有已知样品到所有已知样品的距离
样本平衡依赖性很高。当异常情况不平衡时,分类肯定会有偏差。
可解释性差,不能提供像制定树木这样的规则
矢量的尺寸越高,欧洲风格距离的区别越弱
样品空间太大或不合适,因为计算量太大,预测很慢
文本分类
用户建议
回归
1)所有观察实例都是从观测点随机提取的,作为群集中心点,然后穿越剩余的观察点,以找到最接近的群集中心点,并将其添加到群集中。聚类结果,这是一个迭代过程。
2)每个群集中心至少有一个观察示例。这样,我们可以找到每个群集的中心点作为一个新的群集中心,然后穿越所有观察点以找到距离。将最近的中心点添加到群集类中,然后继续运行2)。
3)这种方式2),直到在同一点之前和之后通过迭代获得的中心完全相同。
该算法的时间复杂性:O(TKMN)。其中,t是迭代的数量,k的数量是簇的数量,m是记录的数量,n是尺寸。
空间复杂度:O((M+K)N),其中K的数量是簇的数量,M是记录的数量,n是尺寸的数量。
申请范围:
K-Mens算法尝试找到最小化普通误差标准的簇。当潜在的群集形状为凸表面时,簇之间的差异很明显,并且簇大小相似,其群集结果是理想的。如前所述,如前所述,如前所述。算法的时间复杂性为O(TKMN),与样品数量线性相关。因此,对于处理大数据集,该算法非常有效并且具有良好的可伸缩性。但是,除了确定群集K并提前对初始群集中心敏感外,该算法通常以局部最佳结束,并且在同一局部结束时间对“噪声”和隔离敏感。
1)首先,算法只能找到最佳群集,而不是全局和最佳群集。算法的结果取决于初始随机选择的群集中心的位置。我们使用多个运行算法来使用不同随机生成的群集中心点运行算法,然后通过评估函数评估其各自的结果C,然后在多个结果中选择具有评估值最小的值(c)值的值。均值++算法选择初始种子是:初始集群中心之间的相互距离应尽可能远
2)关于初始K值选择的问题。第一个想法是,从启动值到最大值,每个值都运行K-均值算法群集,并且最佳的群集结果是通过评估函数计算的。该k是最好的K。我们首先想到上述评估(C)。实际上,将在第4节的实验结果分析中详细讨论此问题。
3)关于性能问题。原始算法,每次迭代必须计算每个观察点和所有集群中心之间的距离。特定条件下算法的效率,对于特定区域的观察点,您可以将该区域的所有点放入该区域的最接近的聚类类别。这将在第三季度详细引入。
类似点:所有这些都包括这样的过程,给定点,找到数据集的最接点。也就是说,它们都使用NN(近邻居)算法,并且通常使用KD树来实现NN。
K-d树和球树
1)K-d树[5]
将n维符号的观察实例放在n维空间中。K-d树每次通过某些算法选择一个特征(坐标轴)。每个部分的相同方法部分,直到达到一定条件为止。
在上面的表达式中,下面有几个位置要详细解释:(1)选择特征(坐标轴)(2)哪种条件算法达到边界(3)达到了条件。
(1)如何选择功能
计算当前观测点集中每个特征的方差,一个特征是最大的方差,然后在此特征上绘制一个超平面垂直方向,以将所有观察点分为两个集合。
(2)此特征的哪个值是垂直坐标轴的超平面的特定位置。
第一个是每个点的差异的中等价值,这将使建筑树非常接地,并且收集将均匀分开。这样做的问题是,如果点的分布非常不好,则选择中值将导致连续和相同方向的分割,从而形成细长的超矩形。
替换的方法是计算坐标轴的平均值,并选择该平均值的最接点作为超级平面和坐标轴的交点。这样,在这样,该树将无法完美平衡,但是区域将倾向于在正方形上划分,并且连续分裂更可能在不同的方向上发生。
(3)什么条件算法已经结束
实际上,该算法不需要指导叶节点,只有两个点。您可以设置预集最小值,并且当该最小值达到该算法时,算法已经结束。
在图6中,目标点由星号标记。在我们找到该点位于k-d树中的区域后,我们计算出该区域中包含的点之间的距离,并找到最近的点(黑点)。区域还包含这两个点的圆圈中的近距离点radius radus.spullape是在图中显示了该圆,其中包含其他区域。首先查看该区域的兄弟节点的相应区域,并且不与Yuan重叠。然后查看父母节点的兄弟节点的相应区域。从其子节点与该区域相对应的子节点(父母父母的兄弟节点的子节点中的子节点)是否在图中重叠)。有更近的节点。
k-d树的优点是可以更新。新观测点可以连续添加。查找新观测点所在的区域。如果它是空的,请添加到它,否则,它将保持其性质沿最长边缘的正方形划分该区域。这将破坏树的平衡,同时使该地区不利于找到最近的邻居。一定价值。
但是,k-d树也有问题。矩形不是这里使用的最佳方法。倾斜的数据组件使我们保持树的平衡和该地区的正方形特征的冲突。在矩形,矩形甚至正方形在这里不使用最完美的形状。角落,您需要检查一个区域的点,该区域是在两个父母的当前区域的兄弟。
为了解决上述问题,我们引入了球树。
2)球树[4]
解决上述问题的解决方案是使用超球形而不是超级矩形分裂区域。使用球形表面可能会在球体之间引起重叠,但这没关系。BallTree是K Wei Super Spheroh来覆盖这些观察值和这些观察结果和将它们放在树上。图7(a)显示了包含16个观察实例的2维平面的图片。图7(b)是相应的球树。节点中的数字表示包含观察点的数量。
以不同的样式绘制不同级别。节点的数量代表该区域中包含的观察点的数量,但不一定是图中区域中的点,因为存在重叠的情况,并且观察点只能属于一分之一。。实际球树节点可以节省心脏和半径。叶节节保存了它包含的观察点。
当使用球树时,首先找到一个叶节点,该叶子节点包含从上到下的目标,从那时起,找到最接近的观察点。这是最近距离的上限。检查其兄弟节点是否包含较小的观察比该上限的点。方法是:如果目标点与兄弟节点的中心的距离大于该圆的圆形中心加上上边界的值,则兄弟节点不能包括观察点(如图8所示),否则,检查兄弟节点是否包含合格的观察点。
那么,什么是球树的算法?
选择一个观察点I1,具有最远的观察点,即当前的Yuanxin,而I2是I1的最长观察点,并将圆圈中所有两个点的所有观察点提供给这两个簇的中心,然后计算计算每个群集的每个群集中心点和最小半径包含其所有观察点。分割包含n观测值的超圆圈仅需要线性时间。
像k-d树一样,如果节点中包含的观察点达到最小值集,则不能再划分此顶点。
K-Nearest邻居(KNN)分类算法是一种理论成熟方法,也是最简单的机器学习算法之一。该方法的想法是,如果特征空间中的大多数Kither(即最相邻的特征空间))在特征空间中,大多数样本属于某个类别,然后样本属于此类别。在KNN算法中,所选的邻居是正确分类的对象。此方法仅决定样本的类别基于一个或几个样本类别中最相邻的类别或几个样本的类别。尽管KNN方法也取决于原理中的原理,但在类别决策中,它仅与少数相邻样本有关。因为KNN方法主要取决于周围有限的相邻样品,而不是确定确定域类别的方法,因此KNN方法比Crossi的其他方法更重要适用于类别域的ng或重叠样品集。
KNN算法不仅可以用于分类,还可以用于回归。通过找到最近的邻居,可以将这些邻居的属性的平均值提供给样品,并且可以获得样本的属性。如果值与距离成正比,则更有用的方法是将样本上邻居的不同距离与不同的权利值(权重)。一类非常大,其他样本容量很小,在进入新样本时可能会导致k个样本之一。邻居中的大多数大容量类别都在于大多数。该算法仅计算“最近的”“邻居样本,特定类型中的样品数量很大。然后,或此类样本不接近目标样本,或此类样本接近目标样本。在任何情况下,数量不影响操作结果。小)改进。
该方法的另一个缺点是计算量很大,因为为了获得其K最近的邻近点,与所有文本的所有已知样本的距离。当前常用的解决方案是编辑已知的样本点事先和删除对分类没有影响的样品。该算法更适合于具有较大样品容量的类域的自动分类,而使用该算法的样品容量较小的域则更有可能产生误差点。
让我们以一个例子来体验它。
假设我们想对电影的类型进行分类,计算电影中的战斗时间和接吻时间的数量,当然,还有其他指标可以计数,如下表所示。
我们很容易理解“战狼”,“红海的动作”,“ Mission Impossime 6”是一部动作电影。您可以掌握该分类规则。当有新电影时,可以自动按其类型进行分类吗?
我们可以将战斗时间的数量视为X轴,接吻的数量为Y轴,然后将这些电影标记在两个维度坐标轴上,如下图所示。对于未知的电影A,坐标是(x,y),我们需要观看电影A最近的电影,其中大多数是类别,然后是电影A的哪个类别。实际操作,我们还需要确定K值,也就是说,我们必须观察到最接近电影A的电影。
肯恩的工作原则
可以说“在朱Z奇附近,墨水在黑色附近”是KNN的工作原理。整个计算过程分为三个步骤:
计算分类对象和其他对象之间的距离;
统计距离K -Neighbor;
对于K最近的邻居(他们属于哪个类别),要分类哪个类别。
如何选择k值
您可以看到整个KNN的分类过程,K值的选择仍然很重要。因此,问题是,K值选择多少?
如果K值相对较小,则相当于非常接近其邻居的Unsocide对象。以这种方式产生的问题之一是,如果邻居是噪声点,则unspeak -Class -Class对象的分类也会导致错误,以便KNN分类产生它。
如果k值相对较大,它也会影响太远的未知对象的分类。尽管这种情况的好处是强大的,但缺乏也很明显。这并不是真正的分类。
因此,k值应该是实践的结果,而不是我们提前确定。在工程方面,我们通常在交叉验证中选择k值。
交叉验证的想法是,样品浓度的大多数样本都用作训练集,其余的小样本用于预测验证分类模型的准确性。因此,在KNN算法中,我们通常在较小范围内选择K值,同时,验证集中精度最高的一个值最终确定为K值。
如何计算距离
在KNN算法中,另一个重要的计算是测量距离。两个样品点之间的距离表示两个样品之间的相似性。距离越大,差异越大。距离越小,相似性越大。
有以下五种计算距离的方法:
欧几里得距离;
曼哈顿距离;
Mincofsky距离;
chebibiriff距离;
Yu Xian距离。
前三个距离是KNN中最常用的距离。我将单独解释。
OU的距离是我们最常用的距离公式,也称为Ou Jili距离。在两个维空间中,两个点欧洲距离为:
以同样的方式,我们还可以在n维空间中找到两个点:
曼哈顿在几何空间中更多地使用了。例如,绿线代表两个点之间的欧洲风格距离,而红线和黄线是曼哈顿距离的两个点。因此,曼哈顿的距离等于两个点,这是绝对的两个点轴距在坐标系上进行了总结。使用公式要表示:
Mincovsky之间的距离不是距离,而是一组距离定义。对于n维空间中的两个点x(x1,x2,...,...,xn)和y(y1,y2,...,yn),X和Y之间的Mincofsky之间的距离为:
P表示空间的尺寸。当p = 1是曼哈顿的距离时;当p = 2是ou shi之间的距离时;当P→∞是Chebibirif到达的距离时。
因此,如何计算Chebibeshev之间的距离?两个点之间的ChexHev之间的距离是两个点坐标的绝对值的最大值。数学指示:max(| x1-y1 |,| x2-y2 |)。
字符串距离实际上是在两个向量的角度计算的,这是两个方向上两者之间的差异,这对绝对值不敏感。距离,因此可以使用字符串的距离来衡量用户对内容的兴趣。这些推荐的关键字是通过使用字符串距离来计算的。
KD树
实际上,您还可以从上面看到KNN的计算过程是样本点之间的距离。在减少计算距离的数量并提高KNN的搜索效率的过程中,人们提出了KD树(K的缩写K- 维)。KD树是一个数据结构,分为Kimi空间中的数据点。在KD树的结构中,每个节点是K尺寸值点的二进制树。从二进制树上,您可以使用二进制树的添加和删除,从而大大提高了搜索效率。
在这里,我们不需要KD树的数学原理
如果您知道太多,您只需要知道它是二进制树的数据结构,它很方便地存储K尺寸空间的数据。在Sklearn中,我们可以直接调用KD树,这非常方便。
使用KNN返回
KNN不仅可以分类,还可以返回。首先谈论什么是回归。在开始电影的情况下,如果您想划分未知电影的类型,这是一个分类问题。首先看看未知电影要分类。最近的K电影是类别,该电影属于哪个类别。
如果这是一部新电影,那就是一部爱情电影。如果您想知道战斗的数量和亲吻的数量,这是一个回归问题。
那么KNN如何返回?
对于新电影X,我们必须预测某个属性值,例如战斗时间的数量,特定的特征属性和值如下所示。这次,我们将计算从已知点到已知点的距离,并选择最接近的k点。修理k = 3,目前最近的三点(电影)是“战狼”,“红海动作”和“ Mission Impossime 6”,那么战斗的数量是平均价值,即(100+95+105)/3 = 100次。
总结
今天,我告诉您KNN的原理和KNN中的几个关键因素。。您还可以自己定义两个样本之间的距离公式。不同的定义和适用的方案是不同的。例如,在搜索关键字建议中,字符串的距离更常用。
此外,您还可以使用KNN通过K -Neighbor返回新点的属性值。
KNN的理论简单而直接,并且搜索KNN还具有相应的KD树数据结构。KNN的理论成熟度可以应用于线性和非线性分类问题,也可以用于回归分析。
但是,KNN需要计算测试点和样品点之间的距离。当数据量较大时,计算量非常大,并且需要大量的存储空间和计算时间。此外,如果样本分类不均匀,例如,有些样本很小,那么该类别的分类将要低得多。
当然,在实际工作中,我们需要考虑各种可能的情况,例如很少有样本可以增加此类类别的重量的情况。
相同的KNN也可以用于推荐算法。尽管现在许多建议系统算法使用TD-IDF,协作过滤和APRIORI算法,但是使用KNN作为少量数据的建议算法也是可行的。
结论:以上是首席CTO注释为每个人编写的Pythonknn算法中K值的所有内容。感谢您阅读本网站的内容。我希望这对您有帮助。更多关于K值和Knn中的Pythonknn的信息。不要忘记在算法中找到K值的相关内容。