1 再识K-近邻算法API

  • sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm=’auto’)

    • n_neighbors:
      • int,可选(默认= 5),k_neighbors查询默认使用的邻居数
    • algorithm:{‘auto’,‘ball_tree’,‘kd_tree’,‘brute’}
      • 快速k近邻搜索算法,默认参数为auto,可以理解为算法自己决定合适的搜索算法。除此之外,用户也可以自己指定搜索算法ball_tree、kd_tree、brute方法进行搜索,
        • brute是蛮力搜索,也就是线性扫描,当训练集很大时,计算非常耗时。
        • kd_tree,构造kd树存储数据以便对其进行快速检索的树形数据结构,kd树也就是数据结构中的二叉树。以中值切分构造的树,每个结点是一个超矩形,在维数小于20时效率高。
        • ball tree是为了克服kd树高纬失效而发明的,其构造过程是以质心C和半径r分割样本空间,每个节点是一个超球体。

          2 案例:鸢尾花种类预测

          2.1 数据集介绍

          Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。关于数据集的具体介绍:iris数据集介绍.png

          2.2 步骤分析

  • 1.获取数据集

  • 2.数据基本处理
  • 3.特征工程
  • 4.机器学习(模型训练)
  • 5.模型评估

    2.3 代码过程

  • 导入模块

    1. from sklearn.datasets import load_iris
    2. from sklearn.model_selection import train_test_split
    3. from sklearn.preprocessing import StandardScaler
    4. from sklearn.neighbors import KNeighborsClassifier
  • 先从sklearn当中获取数据集,然后进行数据集的分割 ```python

    1.获取数据集

    iris = load_iris()

2.数据基本处理

x_train,x_test,y_train,y_test为训练集特征值、测试集特征值、训练集目标值、测试集目标值

x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=22)

  1. - 进行数据标准化
  2. - 特征值的标准化
  3. ```python
  4. # 3、特征工程:标准化
  5. transfer = StandardScaler()
  6. x_train = transfer.fit_transform(x_train)
  7. x_test = transfer.transform(x_test)
  • 模型进行训练预测
    1. # 4、机器学习(模型训练)
    2. estimator = KNeighborsClassifier(n_neighbors=9)
    3. estimator.fit(x_train, y_train)
    4. # 5、模型评估
    5. # 方法1:比对真实值和预测值
    6. y_predict = estimator.predict(x_test)
    7. print("预测结果为:\n", y_predict)
    8. print("比对真实值和预测值:\n", y_predict == y_test)
    9. # 方法2:直接计算准确率
    10. score = estimator.score(x_test, y_test)
    11. print("准确率为:\n", score)