机器学习——K近邻案例——鸢尾花分类

编程入门 行业动态 更新时间:2024-10-08 10:58:49

机器学习——K<a href=https://www.elefans.com/category/jswz/34/1765532.html style=近邻案例——鸢尾花分类"/>

机器学习——K近邻案例——鸢尾花分类

实验  K近邻

1 实验目的

(1)掌握特征缩放的语法。

(2)掌握K近邻模型的语法。

(3)掌握csv文件的读操作。

(4)理解混淆矩阵及准确率、召回率和F1分数的计算。

2 实验内容案例一:鸢尾花分类


1、首先导入必要的库

#数学函数库                                   

import numpy as npimport 

#数据可视化库                                 

import matplotlib.pyplot as plt

#读写数据文件                               

import pandas as pd

2、接着装载数据

url=r"iris.csv"

# 给数据分类加标签名                  

names=['sepal-length','sepal-width','petal-length','petal-width','Class']

#读出csv文件并把数据保存到文件中

dataset=pd.read_csv(url,names=names)

#我们查看一下数据,默认查看前五行      #参数为查看的行数           

dataset.head()

 4、把数据集分解成属性(X)和标签(Y),把数据集划分%80成训练集和%20测试集

#把数据集分解成属性(X)和标签(Y)

X=dataset.iloc[:,:-1].values

y=dataset.iloc[:,4].values

#数据集划分%80成训练集和%20测试集

from sklearn.model_selection import train_test_split

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.20)

5、原来的数据的取值范围变化大,我们要对数据进行缩放。

规范化

from sklearn.preprocessing import  StandardScaler

scaler=StandardScaler()

scaler.fit(X_train)

X_train=scaler.transform(X_train)

X_test=scaler.transform(X_test)

6、对模型进行训练

from sklearn.neighbors import KNeighborsClassifier

classifier=KNeighborsClassifier(n_neighbors=5)

classifier.fit(X_train,y_train)

7、在测试集上预测

y_pred=classifier.predict(X_test)

8、对测试集上预测的结果,进行评估,判断模型的优劣性,可以使用混淆矩阵,准确率、召回率和F1评分等指标

from sklearn.metrics import classification_report,confusion_matrix

print(confusion_matrix(y_test,y_pred))

print(classification_report(y_test,y_pred))

 输出的混淆矩阵显示,只有一个样本分类错误,

9、选择一个怎样的参数K能够获取较好的分类效果呢,我们可以把K的各种可能取值及其对应的分类误差绘制在一张图上。

这里我们选择K的取值范围[1,40]

error=[]

for i in range(1,40):           

 knn=KNeighborsClassifier(n_neighbors=i)  knn.fit(X_train,y_train)    pred_i=knn.predict(X_test)    error.append(np.mean(pred_i !=y_test))  

10、计算了K=1~40的分类误差率以后,可以绘画出其图像

plt.figure(figsize=(12,6))

plt.plot(range(1,40),error,color='red',linestyle='dashed',marker='o',markerfacecolor='blue',markersize=10)

plt.title('Error Rate K Value')

plt.xlabel('K Value')

plt.ylabel('Mean Error')

结论分析:

当K取值在[6,25]的时候,分类器的错误率最低。所以取[6,25]中的任何一个值,作为模型的K参数,都是可以的。

更多推荐

机器学习——K近邻案例——鸢尾花分类

本文发布于:2024-02-11 02:48:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1678714.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:近邻   机器   案例   鸢尾花

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!