4.2 最邻近规则分类(K-Nearest Neighbor)KNN算法应用

1 数据集介绍:

虹膜

150个实例

萼片长度,萼片宽度,花瓣长度,花瓣宽度

(sepal length, sepal width, petal length and petal width)

类别:

Iris setosa, Iris versicolor, Iris virginica.

2. 利用Python的机器学习库sklearn: SkLearnExample.py

from sklearn import neighbors

from sklearn import datasets

knn = neighbors.KNeighborsClassifier()

iris = datasets.load_iris()

print iris

knn.fit(iris.data, iris.target)

predictedLabel = knn.predict([[0.1, 0.2, 0.3, 0.4]])

print predictedLabel

3. KNN 实现Implementation:

# Example of kNN implemented from Scratch in Python

import csv

import random

import math

import operator

def loadDataset(filename, split, trainingSet=[] , testSet=[]):

with open(filename, ‘rb‘) as csvfile:

lines = csv.reader(csvfile)

dataset = list(lines)

for x in range(len(dataset)-1):

for y in range(4):

dataset[x][y] = float(dataset[x][y])

if random.random() < split:

trainingSet.append(dataset[x])

else:

testSet.append(dataset[x])

def euclideanDistance(instance1, instance2, length):

distance = 0

for x in range(length):

distance += pow((instance1[x] - instance2[x]), 2)

return math.sqrt(distance)

def getNeighbors(trainingSet, testInstance, k):

distances = []

length = len(testInstance)-1

for x in range(len(trainingSet)):

dist = euclideanDistance(testInstance, trainingSet[x], length)

distances.append((trainingSet[x], dist))

distances.sort(key=operator.itemgetter(1))

neighbors = []

for x in range(k):

neighbors.append(distances[x][0])

return neighbors

def getResponse(neighbors):

classVotes = {}

for x in range(len(neighbors)):

response = neighbors[x][-1]

if response in classVotes:

classVotes[response] += 1

else:

classVotes[response] = 1

sortedVotes = sorted(classVotes.iteritems(), key=operator.itemgetter(1), reverse=True)

return sortedVotes[0][0]

def getAccuracy(testSet, predictions):

correct = 0

for x in range(len(testSet)):

if testSet[x][-1] == predictions[x]:

correct += 1

return (correct/float(len(testSet))) * 100.0

def main():

# prepare data

trainingSet=[]

testSet=[]

split = 0.67

loadDataset(r‘D:\MaiziEdu\DeepLearningBasics_MachineLearning\Datasets\iris.data.txt‘, split, trainingSet, testSet)

print ‘Train set: ‘ + repr(len(trainingSet))

print ‘Test set: ‘ + repr(len(testSet))

# generate predictions

predictions=[]

k = 3

for x in range(len(testSet)):

neighbors = getNeighbors(trainingSet, testSet[x], k)

result = getResponse(neighbors)

predictions.append(result)

print(‘> predicted=‘ + repr(result) + ‘, actual=‘ + repr(testSet[x][-1]))

accuracy = getAccuracy(testSet, predictions)

print(‘Accuracy: ‘ + repr(accuracy) + ‘%‘)

main()

时间: 2024-10-07 22:57:06

4.2 最邻近规则分类(K-Nearest Neighbor)KNN算法应用的相关文章

kNN(K-Nearest Neighbor)最邻近规则分类

KNN最邻近规则,主要应用领域是对未知事物的识别,即判断未知事物属于哪一类,判断思想是,基于欧几里得定理,判断未知事物的特征和哪一类已知事物的的特征最接近: K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别.KNN算法中,所选择的邻居都是已经正确分类的对象.该方法在定类决策上只依据最邻近的一个或

K Nearest Neighbor 算法

K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法.其中的K表示最接近自己的K个数据样本.KNN算法和K-Means算法不同的是,K-Means算法用来聚类,用来判断哪些东西是一个比较相近的类型,而KNN算法是用来做归类的,也就是说,有一个样本空间里的样本分成很几个类型,然后,给定一个待分类的数据,通过计算接近自己最近的K个样本来判断这个待分类数据属于哪个分类.你可以简单的理解为由那离自己最近的K个点来投

kNN(K-Nearest Neighbor)最邻近规则分类(转)

KNN最邻近规则,主要应用领域是对未知事物的识别,即判断未知事物属于哪一类,判断思想是,基于欧几里得定理,判断未知事物的特征和哪一类已知事物的的特征最接近: K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别.KNN算法中,所选择的邻居都是已经正确分类的对象.该方法在定类决策上只依据最邻近的一个或

python_机器学习_最临近规则分类(K-Nearest Neighbor)KNN算法

1. 概念: https://scikit-learn.org/stable/modules/neighbors.html 1. Cover和Hart在1968年提出了最初的临近算法 2. 分类算法(classification) 3. 输入基于实例的学习(instance-based leaning).懒惰学习(lazy learning) 开始时候不广泛建立模型,在归类的时候才分类 2. 例子: 3. 算法详述 1. 步骤: 为了判断未知实例的类别,以所有已知类别的实例作为参照 选择参数K

最邻近规则分类

1. 综述 1.1 Cover和Hart在1968年提出了最初的邻近算法 1.2 分类(classification)算法 1.3 输入基于实例的学习(instance-based learning), 懒惰学习(lazy learning) 2. 例子: 未知电影属于什么类型? 3. 算法详述 3.1 步骤: 为了判断未知实例的类别,以所有已知类别的实例作为参照 选择参数K 计算未知实例与所有已知实例的距离 选择最近K个已知实例 根据少数服从多数的投票法则(majority-voting),让

最邻近规则分类KNN算法

例子: 求未知电影属于什么类型: 算法介绍: 步骤:  为了判断未知实例的类别,以所有已知类别的实例作为参照      选择参数K      计算未知实例与所有已知实例的距离      选择最近K个已知实例      根据少数服从多数的投票法则(majority-voting),让未知实例归类为K个最邻近样本中最多数的类别 细节: 关于K的选择 关于距离的衡量方法: 其他距离衡量:余弦值(cos), 相关度 (correlation), 曼哈顿距离 (Manhattan distance) 算法

最邻近规则分类(K-Nearest Neighbor)KNN算法

 自写代码: 1 # Author Chenglong Qian 2 3 from numpy import * #科学计算模块 4 import operator #运算符模块 5 6 def createDaraSet(): 7 group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])#创建4行2列的数组 8 labels=['A',"A",'B','B']#标签列表 9 return group,labels 10 11 group,lab

机器学习三--分类--邻近取样(Nearest Neighbor)

最邻近规则分类 K-Nearest Neighbor 步骤: 1.为了判断未知实例的类别,以所有已知类别的实例作为参考. 2.选择参数K. 3.计算未知实例与所有已知实例的距离. 4.选择最近的K个已知实例. 5.根据少数服从多数,让未知实例归类为K个最邻近样本中最多数的类别. 优点:简单,易于理解,容易实现,通过对K的选择可具备丢噪音数据的强壮性. 缺点:1.需要大量空间存储所有已知实例.2.当样本分布不均衡时,比如其中一类样本实例数量过多,占主导的时候,新的未知实例很容易被归类这个主导样本.

k近邻算法(k-nearest neighbor,k-NN)

kNN是一种基本分类与回归方法.k-NN的输入为实例的特征向量,对应于特征空间中的点:输出为实例的类别,可以取多类.k近邻实际上利用训练数据集对特征向量空间进行划分,并作为其分类的"模型".k值的选择.距离度量及分类决策规则是k近邻的三个基本要素. 算法 输入:训练数据集T={(x1,y1),(x2,y2),--..,(xN,yN)} 输出:实例x所属的类y (1)根据给定的距离度量,在训练集T中找到与x最邻近的k个点,涵盖这k个点的x的邻域记作Nk(x) (2)在Nk(x)中根据分类