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

K-NN算法计算过程:
机器学习100天-K邻近法 [KNN算法思想 + KNeighborsClassifier]_第1张图片
上述过程(1)(2)(3)在寻找k个最近点时,采用了暴力搜索的思想。
也可以采取其他算法寻找处最近的k个点,如:BallTree, KDTree等。


计算流程事例:
(1)
机器学习100天-K邻近法 [KNN算法思想 + KNeighborsClassifier]_第2张图片
(2)
机器学习100天-K邻近法 [KNN算法思想 + KNeighborsClassifier]_第3张图片
(3)
机器学习100天-K邻近法 [KNN算法思想 + KNeighborsClassifier]_第4张图片
(4)
机器学习100天-K邻近法 [KNN算法思想 + KNeighborsClassifier]_第5张图片


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:
机器学习100天-K邻近法 [KNN算法思想 + KNeighborsClassifier]_第6张图片

你可能感兴趣的:(机器学习100天,——机器学习——)