写点什么

KNN 算法及性能评估之鸢尾花特征分类【机器学习】

作者:上进小菜猪
  • 2022 年 7 月 19 日
  • 本文字数:1307 字

    阅读完需:约 4 分钟

KNN算法及性能评估之鸢尾花特征分类【机器学习】

一.前言

1.1 本文原理

KNN 算法:通过在整个训练集中搜索 k 个最相似的实例(邻居)并汇总这些 k 个实例的输出变量来预测新的数据点。它可以用于分类和回归,是一种监督学习算法。混淆矩阵:至少有 m*m 的表。前 m 行和 m 列的条目 CMJ 表示分类器标记为 J 的类 I 元组数。

1.2 本文目的

  1. 使用 scikit-learn 的数据归一化函数,对鸢尾花数据进行归一化;

  2. 使用 scikit-learn 的切分数据集函数,将鸢尾花数据切分为训练数据集和测试数据集;

  3. 使用 scikit-learn 的 KNN 算法,对鸢尾花进行分类训练和测试(即预测);

  4. 使用 scikit-learn 的混淆矩阵函数,显示性能评估的混淆矩阵以及准确率,并分析混淆矩阵的内容;

二.实验过程

2.1 使用 scikit-learn 的数据归一化函数,对鸢尾花数据进行归一化;

老规矩,先使用 load_iris 模块,里面有 150 组鸢尾花特征数据,我们可以拿来进行学习特征分类。如下代码:


from sklearn.datasets import load_irisiris = load_iris()X = iris.datay = iris.target
复制代码


引入混淆矩阵 confusion_matrix 函数,评估方法函数 accuracy_score,数据预处理函数模块 preprocessing 如下:


from sklearn.metrics import confusion_matrix,accuracy_score,recall_score,precision_scorefrom sklearn.model_selection import train_test_splitfrom sklearn import preprocessing
复制代码



数据预处理:按列归一化


iris_X=preprocessing.scale(X)
复制代码


输出归一化结果如下:


print(iris_X)
复制代码


2.2 使用 scikit-learn 的切分数据集函数,将鸢尾花数据切分为训练数据集和测试数据集;

随机划分训练集和测试集切分数据集函数如下:


X_train,X_test,y_train,y_test =train_test_split(iris_X,y,test_size=0.3,random_state=0)
复制代码


功能是从样本中随机的按比例选取 train_data 和 test_data 我们输出来看一下:


print(X_train)print(X_test)print(y_train)print(y_test)
复制代码


2.3 使用 scikit-learn 的 KNN 算法,对鸢尾花进行分类训练和测试(即预测);

KNN 分类模型如下:引入 k 近邻算法模块:


from sklearn import neighbors
复制代码


KNeighborsClassifier 用于实现 k 近邻投票算法的分类器如下:


model=neighbors.KNeighborsClassifier(n_neighbors=3)
复制代码


查询使用的邻居数。就是 k-NN 的 k 的值,选取最近的 k 个点。这里选择最近的 3 个点。


模型训练如下:


model.fit(X_train,y_train)
复制代码


模型预测如下:


v_pred=model.predict(X_test)
复制代码


输出鸢尾花特征分类结果如下:


print(v_pred)
复制代码


2.4 使用 scikit-learn 的混淆矩阵函数,显示性能评估的混淆矩阵以及准确率,并分析混淆矩阵的内容;

使用混淆矩阵 confusion_matrix:


confusion_matrix(y_test,v_pred)


输出混淆矩阵:


print(confusion_matrix(y_test,v_pred))
复制代码


输出准确率:



print("准确率:%.3f"% accuracy_score(y_test,v_pred))
复制代码


结果如下:


2.5 分析混淆矩阵的内容以及总结

sklearn.metrics.confusion_matrix(y_true, y_pred, labels=None, sample_weight=None)y_true: 是样本真实分类结果 y_pred: 是样本预测分类结果 labels:是所给出的类别,通过这个可对类别进行选择 sample_weight : 样本权重预测正确的结果占总样本的百分比的 97.8,本次 KNN 算法对鸢尾花进行分类训练和测试效果非常的准确。总结:1.熟悉机器学习之 KNN 算法及性能评估方法 2.使用 KNN 算法解决问题并做性能评估



发布于: 刚刚阅读数: 3
用户头像

上进小菜猪 2022.03.29 加入

努力做全栈,爱好开发,开发专业户。

评论

发布
暂无评论
KNN算法及性能评估之鸢尾花特征分类【机器学习】_7月月更_上进小菜猪_InfoQ写作社区