您的位置:首页 > 其它

机器学习100天-K邻近法 [KNN算法思想 + KNeighborsClassifier]

2019-01-18 15:33 183 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/STILLxjy/article/details/86540944

K-NN算法计算过程:

上述过程(1)(2)(3)在寻找k个最近点时,采用了暴力搜索的思想。
也可以采取其他算法寻找处最近的k个点,如:BallTree, KDTree等。

计算流程事例:
(1)

(2)

(3)

(4)

sklearn.neighbors.KNeighborsClassifier 参数说明:
官方API:https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html

class sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, weights=’uniform’,
algorithm=’auto’, leaf_size=30, p=2, metric=’minkowski’, metric_params=None,
n_jobs=None, **kwargs)[source]

n_neighbors: 选择最邻近点的数目k
weights: 邻近点的计算权重值,uniform代表各个点权重值相等
algorithm: 寻找最邻近点使用的算法
leaf_size: 传递给BallTree或kTree的叶子大小,这会影响构造和查询的速度,以及存储树所需的内存。
p: Minkowski度量的指数参数。p = 1 代表使用曼哈顿距离 (l1),p = 2 代表使用欧几里得距离(l2),
metric: 距离度量,点之间距离的计算方法。
metric_params: 额外的关键字度量函数。
n_jobs: 为邻近点搜索运行的并行作业数。

K-NN实现:
1:到入库
2:加载.csv文件数据
3:将数据分为 训练集和测试集
4:将数据标准化

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)

5:定义 KNeighborsClassifier 模型,并载入训练数据进行训练

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

6:测试 测试集

y_pred = classifier.predict(X_test)

7:使用混淆矩阵,观测预测效果(有关混淆矩阵的介绍可以看上一篇有关逻辑回归中的详细讲解)

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(Y_test,y_pred)

KNN:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: