sklearn 的 knn 用法

knn原理: 离 x 点最近的 k 个点的出现最多的类别,做为 x 点的分类标识

  • 最近:欧式距离,余弦距离,马氏距离(总样本数大于样本维数,样本间的距离增加协方差的逆,表示样本中不同特征的重要性不同)
  • 最多的类别:越近权重越大
  • 全局遍历:某个半径内遍历
  • 时间复杂度:o(n2)
  • 黑盒模型,比决策树的解释要弱
from sklearn import datasets
iris = datasets.load_iris()
iris_X = iris.data # (n_samples, n_features)
iris_y = iris.target

import numpy as np
np.unique(iris_y)
# 将鸢尾属植物数据集分解为训练集和测试集
# 随机排列,用于使分解的数据随机分布
np.random.seed(0)
indices = np.random.permutation(len(iris_X))
iris_X_train = iris_X[indices[:-10]]
iris_y_train = iris_y[indices[:-10]]
iris_X_test  = iris_X[indices[-10:]]
iris_y_test  = iris_y[indices[-10:]]

# 创建和拟合一个最近邻分类器
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier()
knn.fit(iris_X_train, iris_y_train)
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, 
                    n_jobs=1, n_neighbors=5, p=2, weights='uniform')
print(knn.predict(iris_X_test))
print(iris_y_test)
# [1 2 1 0 0 0 2 1 2 0]
# [1 1 1 0 0 0 2 1 2 0]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值