近邻案例——鸢尾花分类"/>
机器学习——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近邻案例——鸢尾花分类
发布评论