美文网首页
机器学习入坑指南(六):K 近邻算法

机器学习入坑指南(六):K 近邻算法

作者: EvanNightly | 来源:发表于2018-10-02 11:47 被阅读0次

一、算法简介

K 近邻 (KNN,K Nearest Neighbours) 是一种分类算法。

算法的思想为:要判断一个东西属于哪一类,看看跟它特征最近似的 K 个东西都属于什么,如果这 K 个东西属于 A 类的最多,那我们就认为未知的那个东西也是 A 类的。

举个栗子,小明拿到一个水果,皮是黄色的,可以剥开,甜甜的软软的,这时候麻麻买回来了一串香蕉一袋橘子,小明发现香蕉跟你拿的这个东西好像哦,于是他认定自己拿的这个水果也是香蕉。这是不是有点像小朋友认识东西的过程呢?

与之前学习的算法不同的是,KNN 属于“非参数方法”。也就是说,我们没有假设样本符合什么样的分布情况,没有把分类问题转换为求解参数的过程。

image

如图,假设输入特征是二元的,我们把样本数据的特征 (x_1,x_2) 作为二维平面的点坐标,并用不同形状表示样本的类。那么想要判断点属于哪一类,只要把它也放在平面中,观察离它最近的 K(图中 K = 5)个点,发现三角形最多,于是需要预测的点就可以被认为属于三角形所代表的类。

我们通常使用“欧氏距离”来表示两数据点的相近程度。当输入特征为多元时,假设平面中有两点 x = (x_1,x_2,...x_n)y = (y_1,y_2,...y_n),其距离为

distance = \sqrt{\sum_i^n(x_i - y_i)^2}

注意

使用欧氏距离存在一个问题,如果不同特征的值不在一个数量级上,那么数量级大的特征将会对距离产生决定性影响,所以,我们需要先进行「数据预处理」,对特征进行缩放。

二、Python 代码实现

示例数据地址:GitHub - Avik-Jain/100-Days-Of-ML-Code/datasets

1 数据预处理

# 导入库
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# 导入数据
dataset = pd.read_csv('Social_Network_Ads.csv')
X = dataset.iloc[:, [2, 3]].values
y = dataset.iloc[:, 4].values
# 分割
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
# 特征缩放
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

2 使用训练集拟合算法

from sklearn.neighbors import KNeighborsClassifier
classifier = KNeighborsClassifier(n_neighbors = 5, metric = 'minkowski', p = 2)
classifier.fit(X_train, y_train)

3 预测与评价

# 使用测试集预测
y_pred = classifier.predict(X_test)
# 生成混淆矩阵
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)

欢迎关注 Evan 的博客

相关文章

  • 机器学习入坑指南(六):K 近邻算法

    一、算法简介 K 近邻 (KNN,K Nearest Neighbours) 是一种分类算法。 算法的思想为:要...

  • 机器学习算法-KNN算法

    机器学习算法-K近邻算法 本文中介绍的机器学习中最基础的一个算法:k-近邻算法,将从如下方面展开: 算法概述 k近...

  • 机器学习实战之K-近邻算法(二)

    机器学习实战之K-近邻算法(二) 2-1 K-近邻算法概述 简单的说,K-近邻算法采用测量不同特征值之间的距离方法...

  • k近邻算法

    1、k近邻简介 1-1、算法思路 k近邻(K-Nearest Neighbor)可能是最简单的机器学习算法,它基于...

  • 十大经典算法(五)

    六、KNN(K Nearest Neighbor) K近邻(有监督) KNN算法,即K近邻算法是一种监督学习算法,...

  • 机器学习 Day 6 | K Nearest Neighbour

    机器学习第六天 K近邻法(K-NN) 什么是K-NN?K近邻算法是一种简单但也是最常用的分类算法,它特可以应用于回...

  • kNN算法

    一. kNN算法 kNN(k-NearestNeighbor),即k最近邻算法,是机器学习算法中最基础的入门算法。...

  • 统计学习方法之kNN算法

    k 近邻是什么 k 近邻法是机器学习中最基本的分类和回归方法,也称为kNN算法。通常k近邻法用于分类问题。k近邻法...

  • 机器学习实战笔记 1)K-近邻算法:理论篇

    近邻算法K-近邻算法是机器学习分类算法中最简单的方法之一。在讲清楚K-近邻算法之前,我们先来看看它的一个简化版--...

  • 机器学习实战(MACHINE LEARNING IN ACTIO

    kNN(k近邻)方法在《机器学习实战》这本书里是最先介绍的算法,估计也是最简单的了。。。k-近邻算法(kNN)工作...

网友评论

      本文标题:机器学习入坑指南(六):K 近邻算法

      本文链接:https://www.haomeiwen.com/subject/tinooftx.html