sklearn中knn算法的应用(三)

举报
咔吧咔吧 发表于 2020/10/27 17:13:13 2020/10/27
【摘要】 一.K-近邻算法的特性 参照机器学习的主要流程: ● 首先准备X_train,y_train交给机器学习算法 ● 算法对数据进行拟合形成模型 ● 输入样例交给模型进行预测,得到输出结果 二.sklearn中knn算法的应用 代码实现:from sklearn.neighbors import ...

    一.K-近邻算法的特性

    

    

    参照机器学习的主要流程:

        ● 首先准备X_train,y_train交给机器学习算法

        ● 算法对数据进行拟合形成模型

        ● 输入样例交给模型进行预测,得到输出结果


    

    二.sklearn中knn算法的应用

        代码实现:

from sklearn.neighbors import KNeighborsClassifier
#创建knn算法的分类器实例
knn_classifier = KNeighborsClassifier(n_neighbors=6)
#拟合训练数据
knn_classifier.fit(X_train,y_train)
#将样本维度变为二维
x1 = x.reshape(1, -1)
#利用knn算法进行预测
y_predict = knn_classifier.predict(x1)
#得出预测结果
y_predict[0]

    

    重新整合前面的代码

    整合为python代码:

    记做:kNN.py

import numpy as np
from math import sqrt
from collections import Counter

class KNNClassifier:
  def __init__(self, k):
      """初始化kNN分类器"""
      assert k >= 1, "k must be valid"
      self.k = k
      self._X_train = None
      self._y_train = None

  def fit(self, X_train, y_train):
      """根据训练数据集X_train和y_train训练kNN分类器"""
      assert X_train.shape[0] == y_train.shape[0], \
          "the size of X_train must be equal to the size of y_train"
      assert self.k <= X_train.shape[0], \
          "the size of X_train must be at least k."

      self._X_train = X_train
      self._y_train = y_train
      return self

  def predict(self, X_predict):
      """给定待预测数据集X_predict,返回表示X_predict的结果向量"""
      assert self._X_train is not None and self._y_train is not None, \
              "must fit before predict!"
      assert X_predict.shape[1] == self._X_train.shape[1], \
              "the feature number of X_predict must be equal to X_train"

      y_predict = [self._predict(x) for x in X_predict]
      return np.array(y_predict)

  def _predict(self, x):
      """给定单个待预测数据x,返回x的预测结果值"""
      assert x.shape[0] == self._X_train.shape[1], \
          "the feature number of x must be equal to X_train"

      distances = [sqrt(np.sum((x_train - x) ** 2))
                   for x_train in self._X_train]
      nearest = np.argsort(distances)

      topK_y = [self._y_train[i] for i in nearest[:self.k]]
      votes = Counter(topK_y)

      return votes.most_common(1)[0][0]

  def __repr__(self):
      return "KNN(k=%d)" % self.k

    将kNN.py文件放入到和jupyter的代码相同的目录的knn目录下,在jupyter中利用魔法方法进行代码运行

#利用魔法方法加载kNN.py文件
%run knn/kNN.py

#创建实例
knn_clf = KNNClassifier(k=6)
#拟合训练集
knn_clf.fit(X_train,y_train)
#预测输入样例
y_predict = knn_clf.predict(x1)
#得出预测结果
y_predict[0]


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200