我是靠谱客的博主 高贵宝贝,最近开发中收集的这篇文章主要介绍scikit-learn 笔记之KNN(K近邻算法),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

K近邻算法

    • 说明
    • KNeighborsClassifier分类
    • KNeighborsRegressor回归
    • 总结

说明

  在scikit-learn中提供了一个KNeighborsClassifier类来实现k近邻法分类模型,一个KNeighborsRegressor类来实k近邻法回归模型。

KNeighborsClassifier分类

KNeighborsClassifier是分类模型,其原型为

class sklearn.neighbors.KNeighborsRegressor(n_neighbors=5, *,
weights='uniform', algorithm='auto', leaf_size=30, p=2,
metric='minkowski', metric_params=None, n_jobs=None, **kwargs)

参数
n_neighbors:一个整数,指定k值,默认为5
weights:一字符串或者可调用对象,指定投票权重策略。即这些邻居的投票权可以为相同或者不同。

  • ‘uniform’:本结点的所有邻居结点的投票权重都相等 。
  • ‘distance’:本结点的所有邻居结点的投票权重与距离成反比。即越近的结点,其投票权重越大。
  • [callable]:一个可调用对象。它传入距离的数组,返回同样形状的权重数组。

algorithm:一字符串,指定计算最近邻的算法,默认为’auto’。

  • ‘ball_tree’:使用 BallTree算法。
  • ‘kd_tree’:使用KDTree算法。
  • ‘brute’:使用暴力搜索法。
  • ‘auto’:自动决定最合适的算法。

leaf_size:一个整数,指定BallTree或者 KDTree叶结点规模。它影响了树的构建和查询速度,默认为30。
p:一个整数,指定在’Minkowski’度量上的指数,默认为2。如果 p=1,对应于曼哈顿距离;p=2对应于欧拉距离。
metric:一个字符串,指定距离度量。默认为’minkowski’距离。
n_jobs:并行性。默认为-11表示派发任务到所有计算机的CPU上。
实例方法
fit(X,y):训练模型。
get_params(deep=True):获取模型参数信息。
kneighbors([X, n_neighbors, return_distance]):返回样本点的 k近邻点。如果return_distance=True,同时还返回到这些近邻点的距离。
kneighbors_graph([X, n_neighbors, mode]):返回样本点的 k近邻点的连接图。
predict(X):用模型进行预测,返回预测值。
score(X, y[, sample_weight]):返回模型的预测性能得分。
set_params(**params):设置模型参数。
示例

from sklearn import neighbors,datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
digits = datasets.load_digits()
train,target = digits.data,digits.target
X_train,X_test,y_train,y_test = train_test_split(train,target,test_size=0.3,random_state=0)
knnclf = KNeighborsClassifier(n_neighbors=3)
knnclf.fit(X_train,y_train)
print('Training Score:%f'%knnclf.score(X_train,y_train))
print('Testing Score:%f'%knnclf.score(X_test,y_test))

KNeighborsRegressor回归

KNeighborsRegressor是回归模型,其原型为:

class sklearn.neighbors.KNeighborsRegressor(n_neighbors=5, *,
weights='uniform', algorithm='auto', leaf_size=30, p=2,
metric='minkowski', metric_params=None, n_jobs=None, **kwargs)

参数
n_neighbors:一个整数,指定k值,默认为5
weights:一字符串或者可调用对象,指定投票权重策略。即这些邻居的投票权可以为相同或者不同。

  • ‘uniform’:本结点的所有邻居结点的投票权重都相等 。
  • ‘distance’:本结点的所有邻居结点的投票权重与距离成反比。即越近的结点,其投票权重越大。
  • [callable]:一个可调用对象。它传入距离的数组,返回同样形状的权重数组。

algorithm:一字符串,指定计算最近邻的算法,默认为’auto’。

  • ‘ball_tree’:使用 BallTree算法。
  • ‘kd_tree’:使用KDTree算法。
  • ‘brute’:使用暴力搜索法。
  • ‘auto’:自动决定最合适的算法。

leaf_size:一个整数,指定BallTree或者 KDTree叶结点规模。它影响了树的构建和查询速度,默认为30。
p:一个整数,指定在’Minkowski’度量上的指数,默认为2。如果 p=1,对应于曼哈顿距离;p=2对应于欧拉距离。
metric:一个字符串,指定距离度量。默认为’minkowski’距离。
n_jobs:并行性。默认为-11表示派发任务到所有计算机的CPU上。
实例方法
fit(X,y):训练模型。
get_params(deep=True):获取模型参数信息。
kneighbors([X, n_neighbors, return_distance]):返回样本点的 k近邻点。如果return_distance=True,同时还返回到这些近邻点的距离。
kneighbors_graph([X, n_neighbors, mode]):返回样本点的 k近邻点的连接图。
predict(X):用模型进行预测,返回预测值。
score(X, y[, sample_weight]):返回模型的预测性能得分,评分使用 R 2 R^{2} R2
set_params(**params):设置模型参数。
示例

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsRegressor
X, y = load_boston(return_X_y=True)
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=0)
knnrg = KNeighborsRegressor(n_neighbors=3)
knnrg.fit(X_train,y_train)
print('Training Score:%f'%knnrg.score(X_train,y_train))
print('Testing Score:%f'%knnrg.score(X_test,y_test))

总结

  k近邻的分类和回归算法其参数意义和实例方法几乎完全相同,两者的区别在于回归分析和分类决策的不同:
  ❐KNeighborsClassifier将待预测样本点最近邻的k个训练样本点中出现次数最多的那一类作为待预测样本点的分类。
  ❐KNeighborsRegressor将待预测样本点最近邻的k个训练样本点的平均值作为待预测样本点的值。

最后

以上就是高贵宝贝为你收集整理的scikit-learn 笔记之KNN(K近邻算法)的全部内容,希望文章能够帮你解决scikit-learn 笔记之KNN(K近邻算法)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部