菜鸟之路——机器学习之knn算法个人理解及python实现(代码片段)

Albert-YZP Albert-YZP     2022-11-22     643

关键词:

KNN(K Nearest Neighbor)

还是先记几个关键公式

距离:一般用Euclidean distance   E(x,y)√∑(xi-yi)2 。名字这么高大上,就是初中学的两点间的距离嘛。

         还有其他距离的衡量公式,余弦值(cos),相关度(correlation) 曼哈顿距离(manhatann distance)。我觉得针对于KNN算法还是Euclidean distance最好,最直观。

然后就选择最近的K个点。根据投票原则分类出结果。

首先利用sklearn自带的的iris数据集和KNN算法运行一下

 1 from sklearn import neighbors     #knn算法在neighbor包里
 2 from sklearn import datasets      #包含常用的机器学习的包
 3 
 4 knn=neighbors.KNeighborsClassifier()   #新建knn算法类
 5 
 6 iris=datasets.load_iris()              #加载虹膜这种花的数据
 7 #print(iris) #这是个字典有data,target,target_name,这三个key,太多了,就打印出来了
 8 
 9 knn.fit(iris.data,iris.target)
10 print(knn.fit(iris.data,iris.target)) #我也不知道为什么要这样fit一下形成一个模型。打印一下看看我觉得应该是为了记录一下数据的信息吧
11 
12 
13 predictedLabel=knn.predict([[0.1,0.2,0.3,0.4]])#预测一下
14 print(predictedLabel)
15 print("predictedName:",iris.target_names[predictedLabel[0]])

 

然后就自己写KNN算法啦

 1 import csv
 2 import random
 3 import math
 4 import operator
 5 
 6 #加载数据的
 7 def LoadDataset(filename,split):#split这个参数是用来分开训练集与测试集的,split属于[0,1]。即有多大的概率将所有数据选取为训练集
 8     trainingSet=[]
 9     testSet=[]
10     with open(filename,rt) as csvfile:
11          lines=csv.reader(csvfile)
12          dataset=list(lines)
13          for x in range(len(dataset)-1):
14              for y in range(4):
15                  dataset[x][y]=float(dataset[x][y])
16              if random.random()<split:      #random.random()生成一个[0,1]之间的随机数
17                 trainingSet.append(dataset[x])
18              else:
19                  testSet.append(dataset[x])
20     return [trainingSet,testSet]
21 
22 #此函数用来计算两点之间的距离
23 def enclideanDinstance(instance1,instance2,length):#legdth为维度
24     distance=0
25     for x in range(length):
26         distance+=pow((instance1[x]-instance2[x]),2)
27     return math.sqrt(distance)
28 
29 #此函数选取K个离testInstance最近的trainingSet里的实例
30 def getNeighbors(trainingSet,testInstance,k):
31     distances=[]
32     length=len(testInstance)-1
33     for x in range(len(trainingSet)):
34         dist=enclideanDinstance(testInstance,trainingSet[x],length)
35         distances.append([trainingSet[x],dist])
36     distances.sort(key=operator.itemgetter(1))#operator.itemgetter函数获取的不是值,而是定义了一个函数,取列表的第几个域的函数。
37                                               # sort中的key也是用来指定取待排序元素的哪一项进行排序
38                                               #这句的意思就是按照distances的第二个域进行排序
39     neighbors=[]
40     for x in range(k):
41             neighbors.append(distances[x][0])
42     return neighbors
43 
44 #这个函数就是从K的最邻近的实例中利用投票原则分类出结果
45 def getResponce(neighbors):
46     classVotes=
47     for x in range(len(neighbors)):
48         responce=neighbors[x][-1]
49         if responce in classVotes:
50             classVotes[responce]+=1
51         else:
52             classVotes[responce] = 1
53     sortedVotes=sorted(classVotes.items(),key=operator.itemgetter(1),reverse=True)
54     return sortedVotes[0][0]
55 
56 #这个函数从测试结果与真实结果中得出正确率
57 def getAccuracy(testSet,predictions):
58     corrrect=0
59     for x in range(len(testSet)):
60         if testSet[x][-1] ==predictions[x]:
61             corrrect+=1
62     return (corrrect/float(len(testSet)))*100
63 
64 def main():
65     split=0.67   #将选取67%的数据作为训练集
66     [trainingSet,testSet]=LoadDataset(irisdata.txt,split)
67     print("trainingSet:",len(trainingSet),trainingSet)
68     print("testSet",len(testSet),testSet)
69 
70     predictions=[]
71     k=3  #选取三个最邻近的实例
72     #测试所有测试集
73     for x in range(len(testSet)):
74         neighbors=getNeighbors(trainingSet,testSet[x],k)
75         result=getResponce(neighbors)
76         predictions.append(result)
77         print(">predicted",result,",actual=",testSet[x][-1])
78         
79     accuracy=getAccuracy(testSet,predictions)
80     print("Accuracy:",accuracy,r"%")
81     
82 if __name__ == __main__:
83     main()


里面有我对代码的理解

 运行结果为

trainingSet: 110 [[4.9, 3.0, 1.4, 0.2, ‘Iris-setosa‘], [4.7, 3.2, 1.3, 0.2, ‘Iris-setosa‘], [5.0, 3.6, 1.4, 0.2, ‘Iris-setosa‘], [5.4, 3.9, 1.7, 0.4, ‘Iris-setosa‘], [4.6, 3.4, 1.4, 0.3, ‘Iris-setosa‘], [4.4, 2.9, 1.4, 0.2, ‘Iris-setosa‘], [4.9, 3.1, 1.5, 0.1, ‘Iris-setosa‘], [5.4, 3.7, 1.5, 0.2, ‘Iris-setosa‘], [4.8, 3.4, 1.6, 0.2, ‘Iris-setosa‘], [4.3, 3.0, 1.1, 0.1, ‘Iris-setosa‘], [5.8, 4.0, 1.2, 0.2, ‘Iris-setosa‘], [5.7, 4.4, 1.5, 0.4, ‘Iris-setosa‘], [5.4, 3.9, 1.3, 0.4, ‘Iris-setosa‘], [5.7, 3.8, 1.7, 0.3, ‘Iris-setosa‘], [5.4, 3.4, 1.7, 0.2, ‘Iris-setosa‘], [4.6, 3.6, 1.0, 0.2, ‘Iris-setosa‘], [4.8, 3.4, 1.9, 0.2, ‘Iris-setosa‘], [5.0, 3.0, 1.6, 0.2, ‘Iris-setosa‘], [5.0, 3.4, 1.6, 0.4, ‘Iris-setosa‘], [5.2, 3.5, 1.5, 0.2, ‘Iris-setosa‘], [4.7, 3.2, 1.6, 0.2, ‘Iris-setosa‘], [4.8, 3.1, 1.6, 0.2, ‘Iris-setosa‘], [5.4, 3.4, 1.5, 0.4, ‘Iris-setosa‘], [5.2, 4.1, 1.5, 0.1, ‘Iris-setosa‘], [4.9, 3.1, 1.5, 0.1, ‘Iris-setosa‘], [5.0, 3.2, 1.2, 0.2, ‘Iris-setosa‘], [5.5, 3.5, 1.3, 0.2, ‘Iris-setosa‘], [4.4, 3.0, 1.3, 0.2, ‘Iris-setosa‘], [5.0, 3.5, 1.3, 0.3, ‘Iris-setosa‘], [4.5, 2.3, 1.3, 0.3, ‘Iris-setosa‘], [4.4, 3.2, 1.3, 0.2, ‘Iris-setosa‘], [5.1, 3.8, 1.9, 0.4, ‘Iris-setosa‘], [4.8, 3.0, 1.4, 0.3, ‘Iris-setosa‘], [5.1, 3.8, 1.6, 0.2, ‘Iris-setosa‘], [4.6, 3.2, 1.4, 0.2, ‘Iris-setosa‘], [5.3, 3.7, 1.5, 0.2, ‘Iris-setosa‘], [7.0, 3.2, 4.7, 1.4, ‘Iris-versicolor‘], [6.4, 3.2, 4.5, 1.5, ‘Iris-versicolor‘], [5.5, 2.3, 4.0, 1.3, ‘Iris-versicolor‘], [6.5, 2.8, 4.6, 1.5, ‘Iris-versicolor‘], [5.7, 2.8, 4.5, 1.3, ‘Iris-versicolor‘], [4.9, 2.4, 3.3, 1.0, ‘Iris-versicolor‘], [6.6, 2.9, 4.6, 1.3, ‘Iris-versicolor‘], [5.0, 2.0, 3.5, 1.0, ‘Iris-versicolor‘], [5.9, 3.0, 4.2, 1.5, ‘Iris-versicolor‘], [6.0, 2.2, 4.0, 1.0, ‘Iris-versicolor‘], [5.6, 2.9, 3.6, 1.3, ‘Iris-versicolor‘], [6.7, 3.1, 4.4, 1.4, ‘Iris-versicolor‘], [5.6, 3.0, 4.5, 1.5, ‘Iris-versicolor‘], [5.8, 2.7, 4.1, 1.0, ‘Iris-versicolor‘], [5.6, 2.5, 3.9, 1.1, ‘Iris-versicolor‘], [5.9, 3.2, 4.8, 1.8, ‘Iris-versicolor‘], [6.3, 2.5, 4.9, 1.5, ‘Iris-versicolor‘], [6.4, 2.9, 4.3, 1.3, ‘Iris-versicolor‘], [6.8, 2.8, 4.8, 1.4, ‘Iris-versicolor‘], [6.7, 3.0, 5.0, 1.7, ‘Iris-versicolor‘], [6.0, 2.9, 4.5, 1.5, ‘Iris-versicolor‘], [5.7, 2.6, 3.5, 1.0, ‘Iris-versicolor‘], [5.5, 2.4, 3.8, 1.1, ‘Iris-versicolor‘], [5.8, 2.7, 3.9, 1.2, ‘Iris-versicolor‘], [6.0, 2.7, 5.1, 1.6, ‘Iris-versicolor‘], [5.4, 3.0, 4.5, 1.5, ‘Iris-versicolor‘], [6.0, 3.4, 4.5, 1.6, ‘Iris-versicolor‘], [6.3, 2.3, 4.4, 1.3, ‘Iris-versicolor‘], [5.6, 3.0, 4.1, 1.3, ‘Iris-versicolor‘], [5.5, 2.6, 4.4, 1.2, ‘Iris-versicolor‘], [6.1, 3.0, 4.6, 1.4, ‘Iris-versicolor‘], [5.8, 2.6, 4.0, 1.2, ‘Iris-versicolor‘], [5.0, 2.3, 3.3, 1.0, ‘Iris-versicolor‘], [5.6, 2.7, 4.2, 1.3, ‘Iris-versicolor‘], [5.7, 3.0, 4.2, 1.2, ‘Iris-versicolor‘], [5.7, 2.9, 4.2, 1.3, ‘Iris-versicolor‘], [6.2, 2.9, 4.3, 1.3, ‘Iris-versicolor‘], [5.1, 2.5, 3.0, 1.1, ‘Iris-versicolor‘], [5.7, 2.8, 4.1, 1.3, ‘Iris-versicolor‘], [6.3, 3.3, 6.0, 2.5, ‘Iris-virginica‘], [5.8, 2.7, 5.1, 1.9, ‘Iris-virginica‘], [7.1, 3.0, 5.9, 2.1, ‘Iris-virginica‘], [6.5, 3.0, 5.8, 2.2, ‘Iris-virginica‘], [7.6, 3.0, 6.6, 2.1, ‘Iris-virginica‘], [4.9, 2.5, 4.5, 1.7, ‘Iris-virginica‘], [6.5, 3.2, 5.1, 2.0, ‘Iris-virginica‘], [6.4, 2.7, 5.3, 1.9, ‘Iris-virginica‘], [5.8, 2.8, 5.1, 2.4, ‘Iris-virginica‘], [6.4, 3.2, 5.3, 2.3, ‘Iris-virginica‘], [6.5, 3.0, 5.5, 1.8, ‘Iris-virginica‘], [7.7, 2.6, 6.9, 2.3, ‘Iris-virginica‘], [6.0, 2.2, 5.0, 1.5, ‘Iris-virginica‘], [6.9, 3.2, 5.7, 2.3, ‘Iris-virginica‘], [7.7, 2.8, 6.7, 2.0, ‘Iris-virginica‘], [6.3, 2.7, 4.9, 1.8, ‘Iris-virginica‘], [7.2, 3.2, 6.0, 1.8, ‘Iris-virginica‘], [6.2, 2.8, 4.8, 1.8, ‘Iris-virginica‘], [6.1, 3.0, 4.9, 1.8, ‘Iris-virginica‘], [6.4, 2.8, 5.6, 2.1, ‘Iris-virginica‘], [7.4, 2.8, 6.1, 1.9, ‘Iris-virginica‘], [6.4, 2.8, 5.6, 2.2, ‘Iris-virginica‘], [6.1, 2.6, 5.6, 1.4, ‘Iris-virginica‘], [7.7, 3.0, 6.1, 2.3, ‘Iris-virginica‘], [6.3, 3.4, 5.6, 2.4, ‘Iris-virginica‘], [6.4, 3.1, 5.5, 1.8, ‘Iris-virginica‘], [6.9, 3.1, 5.4, 2.1, ‘Iris-virginica‘], [6.7, 3.1, 5.6, 2.4, ‘Iris-virginica‘], [6.9, 3.1, 5.1, 2.3, ‘Iris-virginica‘], [5.8, 2.7, 5.1, 1.9, ‘Iris-virginica‘], [6.8, 3.2, 5.9, 2.3, ‘Iris-virginica‘], [6.7, 3.0, 5.2, 2.3, ‘Iris-virginica‘], [6.3, 2.5, 5.0, 1.9, ‘Iris-virginica‘], [6.5, 3.0, 5.2, 2.0, ‘Iris-virginica‘], [6.2, 3.4, 5.4, 2.3, ‘Iris-virginica‘]]
testSet 40 [[5.1, 3.5, 1.4, 0.2, ‘Iris-setosa‘], [4.6, 3.1, 1.5, 0.2, ‘Iris-setosa‘], [5.0, 3.4, 1.5, 0.2, ‘Iris-setosa‘], [4.8, 3.0, 1.4, 0.1, ‘Iris-setosa‘], [5.1, 3.5, 1.4, 0.3, ‘Iris-setosa‘], [5.1, 3.8, 1.5, 0.3, ‘Iris-setosa‘], [5.1, 3.7, 1.5, 0.4, ‘Iris-setosa‘], [5.1, 3.3, 1.7, 0.5, ‘Iris-setosa‘], [5.2, 3.4, 1.4, 0.2, ‘Iris-setosa‘], [5.5, 4.2, 1.4, 0.2, ‘Iris-setosa‘], [4.9, 3.1, 1.5, 0.1, ‘Iris-setosa‘], [5.1, 3.4, 1.5, 0.2, ‘Iris-setosa‘], [5.0, 3.5, 1.6, 0.6, ‘Iris-setosa‘], [5.0, 3.3, 1.4, 0.2, ‘Iris-setosa‘], [6.9, 3.1, 4.9, 1.5, ‘Iris-versicolor‘], [6.3, 3.3, 4.7, 1.6, ‘Iris-versicolor‘], [5.2, 2.7, 3.9, 1.4, ‘Iris-versicolor‘], [6.1, 2.9, 4.7, 1.4, ‘Iris-versicolor‘], [6.2, 2.2, 4.5, 1.5, ‘Iris-versicolor‘], [6.1, 2.8, 4.0, 1.3, ‘Iris-versicolor‘], [6.1, 2.8, 4.7, 1.2, ‘Iris-versicolor‘], [6.6, 3.0, 4.4, 1.4, ‘Iris-versicolor‘], [5.5, 2.4, 3.7, 1.0, ‘Iris-versicolor‘], [6.7, 3.1, 4.7, 1.5, ‘Iris-versicolor‘], [5.5, 2.5, 4.0, 1.3, ‘Iris-versicolor‘], [6.3, 2.9, 5.6, 1.8, ‘Iris-virginica‘], [7.3, 2.9, 6.3, 1.8, ‘Iris-virginica‘], [6.7, 2.5, 5.8, 1.8, ‘Iris-virginica‘], [7.2, 3.6, 6.1, 2.5, ‘Iris-virginica‘], [6.8, 3.0, 5.5, 2.1, ‘Iris-virginica‘], [5.7, 2.5, 5.0, 2.0, ‘Iris-virginica‘], [7.7, 3.8, 6.7, 2.2, ‘Iris-virginica‘], [5.6, 2.8, 4.9, 2.0, ‘Iris-virginica‘], [6.7, 3.3, 5.7, 2.1, ‘Iris-virginica‘], [7.2, 3.0, 5.8, 1.6, ‘Iris-virginica‘], [7.9, 3.8, 6.4, 2.0, ‘Iris-virginica‘], [6.3, 2.8, 5.1, 1.5, ‘Iris-virginica‘], [6.0, 3.0, 4.8, 1.8, ‘Iris-virginica‘], [6.7, 3.3, 5.7, 2.5, ‘Iris-virginica‘], [5.9, 3.0, 5.1, 1.8, ‘Iris-virginica‘]]
>predicted Iris-setosa ,actual= Iris-setosa
>predicted Iris-setosa ,actual= Iris-setosa
>predicted Iris-setosa ,actual= Iris-setosa
>predicted Iris-setosa ,actual= Iris-setosa
>predicted Iris-setosa ,actual= Iris-setosa
>predicted Iris-setosa ,actual= Iris-setosa
>predicted Iris-setosa ,actual= Iris-setosa
>predicted Iris-setosa ,actual= Iris-setosa
>predicted Iris-setosa ,actual= Iris-setosa
>predicted Iris-setosa ,actual= Iris-setosa
>predicted Iris-setosa ,actual= Iris-setosa
>predicted Iris-setosa ,actual= Iris-setosa
>predicted Iris-setosa ,actual= Iris-setosa
>predicted Iris-setosa ,actual= Iris-setosa
>predicted Iris-versicolor ,actual= Iris-versicolor
>predicted Iris-versicolor ,actual= Iris-versicolor
>predicted Iris-versicolor ,actual= Iris-versicolor
>predicted Iris-versicolor ,actual= Iris-versicolor
>predicted Iris-versicolor ,actual= Iris-versicolor
>predicted Iris-versicolor ,actual= Iris-versicolor
>predicted Iris-versicolor ,actual= Iris-versicolor
>predicted Iris-versicolor ,actual= Iris-versicolor
>predicted Iris-versicolor ,actual= Iris-versicolor
>predicted Iris-versicolor ,actual= Iris-versicolor
>predicted Iris-versicolor ,actual= Iris-versicolor
>predicted Iris-virginica ,actual= Iris-virginica
>predicted Iris-virginica ,actual= Iris-virginica
>predicted Iris-virginica ,actual= Iris-virginica
>predicted Iris-virginica ,actual= Iris-virginica
>predicted Iris-virginica ,actual= Iris-virginica
>predicted Iris-virginica ,actual= Iris-virginica
>predicted Iris-virginica ,actual= Iris-virginica
>predicted Iris-virginica ,actual= Iris-virginica
>predicted Iris-virginica ,actual= Iris-virginica
>predicted Iris-virginica ,actual= Iris-virginica
>predicted Iris-virginica ,actual= Iris-virginica
>predicted Iris-versicolor ,actual= Iris-virginica
>predicted Iris-virginica ,actual= Iris-virginica
>predicted Iris-virginica ,actual= Iris-virginica
>predicted Iris-virginica ,actual= Iris-virginica
Accuracy: 97.5 %

 

以下拓展几个知识点

1,random库的一些用法

random.randint(1,10)        # 产生 1 到 10 的一个整数型随机数  
random.random()             # 产生 0 到 1 之间的随机浮点数
random.uniform(1.1,5.4)     # 产生  1.1 到 5.4 之间的随机浮点数,区间可以不是整数
random.choice(tomorrow)   # 从序列中随机选取一个元素
random.randrange(1,100,2)   # 生成从1到100的间隔为2的随机整数
random.shuffle(a)           # 将序列a中的元素顺序打乱 

 

2,排序函数

sorted(exapmle[, cmp[, key[, reverse]]])

example.sort(cmp[, key[, reverse]])

     example是和待排序序列

     cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数

     key为函数,指定取待排序元素的哪一项进行排序

     reverse实现降序排序,需要提供一个布尔值,默认为False(升序排列)。

程序中的第53行   sortedVotes=sorted(classVotes.items(),key=operator.itemgetter(1),reverse=True)就是按照sortedVotes的第二个域进行降序排列

 

key=operator.itemgetter(n)就是按照第n+1个域

写完喽,图书馆也该闭馆了。学习的感觉真舒服。接下来就是最出名的SVM算法啦

菜鸟之路——机器学习之非线性回归个人理解及python实现(代码片段)

关键词:梯度下降:就是让数据顺着梯度最大的方向,也就是函数导数最大的放下下降,使其快速的接近结果。Cost函数等公式太长,不在这打了。网上多得是。这个非线性回归说白了就是缩小版的神经网络。python实现:1importnump... 查看详情

菜鸟之路——机器学习之bp神经网络个人理解及python实现(代码片段)

关键词:输入层(Inputlayer)。隐藏层(Hiddenlayer)。输出层(Outputlayer)理论上如果有足够多的隐藏层和足够大的训练集,神经网络可以模拟出任何方程。隐藏层多的时候就是深度学习啦没有明确的规则来设计最好有多少个隐藏... 查看详情

机器学习之knn算法

1KNN算法1.1KNN算法简介  KNN(K-NearestNeighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类对应的关系。输入没有标签的数据后,将新数据... 查看详情

机器学习之knn算法思想及其实现

从一个例子来直观感受KNN思想 如下图, 绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此... 查看详情

机器学习之k-近邻(knn)算法(代码片段)

 一.K-近邻算法(KNN)概述   最简单最初级的分类器是将全部的训练数据所对应的类别都记录下来,当测试对象的属性和某个训练对象的属性完全匹配时,便可以对其进行分类。但是怎么可能所有测试对象都会找到... 查看详情

机器学习之knn(k近邻)算法(代码片段)

1、算法介绍k近邻算法是学习机器学习的入门算法,可实现分类与回归,属于监督学习的一种。算法的工作原理是:输入一个训练数据集,训练数据集包括特征空间的点和点的类别,可以是二分类或是多分类。预测时,输入没有... 查看详情

机器学习之knn鸢尾花分类(代码片段)

KNN简介邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。kNN算法的核... 查看详情

机器学习之决策树

...使用不熟悉的数据集合,并从中提取一系列规则,在这些机器根据数据集创建规则是,就是机器学习的过程。  在构造决策树时,第一个需要解决的问题就是, 查看详情

机器学习之knn(k-近邻算法)(代码片段)

Contents  KNN算法简介算法实现总结 KNN算法简介 k近邻算法(k-nearestneighbor)是一种基本的分类、回归算法。算法的基本思想是“物以类聚”。也就是说,物体周边事物的类别可以在某种程度上反应该物体的类别。例... 查看详情

机器学习之k近邻算法

近在学习《机器学习实战》这本书,做了一些笔记,和大家分享下:一、K-近邻算法(KNN)概述   最简单最初级的分类器是将全部的训练数据所对应的类别都记录下来,当测试对象的属性和某个训练对象的属性完全匹... 查看详情

机器学习之支持向量机:smo算法

...用的核函数有哪些;第四部分是支持向量机的应用,按照机器学习实战的代码详细解读。1SMO算法的概念 查看详情

机器学习之初识knn算法——针对泰坦尼克号生存记录建模的两种方法(代码片段)

KNN算法原理本篇博客基于《机器学习实战》实现算法原理简要概括,重在代码实现k-近邻算法(kNN)的工作原理是:存在一个样本数据集合,称训练样本集,并且样本集中每个数据都存在标签,即样本集中每一数据与所属分类的对... 查看详情

机器学习之朴素贝叶斯

一、朴素贝叶斯算法概述   前面我们讲过KNN分类算法和决策树分类算法,两者最终都是预测出实例的确定的分类结果,但是,有时候分类器会产生错误结果;本章要学的朴素贝叶斯分类算法则是给出一个最优的猜测结果,... 查看详情

机器学习之监督学习-分类模型k近邻(knn)算法实现(代码片段)

机器学习之监督学习-分类模型K近邻(KNN)算法实现监督学习中常用的分类分类模型有k近邻,逻辑斯谛回归,决策树。今天我们主要学习,K近邻模型。最简单,最初级的分类器就是将全部的训练数据所对应的类别都... 查看详情

机器学习之协同过滤算法(推荐系统)

前言      以下内容是个人学习之后的感悟,转载请注明出处~  简介  很多网站都有推荐系统,向我们推荐我们想要地或者有可能需要的信息,那么它是怎么实现的呢?因为它们都采用了推荐算法... 查看详情

机器学习之支持向量机:核函数和kkt条件的理解

...用的核函数有哪些;第四部分是支持向量机的应用,按照机器学习实战的代码详细解读。1核函数1.1核函 查看详情

机器学习之k-means算法

前言      以下内容是个人学习之后的感悟,转载请注明出处~  简介  在之前发表的线性回归、逻辑回归、神经网络、SVM支持向量机等算法都是监督学习算法,需要样本进行训练,且样本的类别是... 查看详情

机器学习之k近邻简介

描述KNN是常见的监督学习算法,输入是实例的特征向量,输出是实例对应的类别。给定测试样本,基于某种距离计算方法,计算出与其距离最近的K个训练样本,根据多数表决方法判定属于哪个类别。典型的懒... 查看详情