当前位置:   article > 正文

python进行KNN算法分析实战(鸢尾花数据集)_python鸢尾花数据集分析

python鸢尾花数据集分析

KNN算法分析实战(鸢尾花数据集)

目录

KNN算法分析实战(鸢尾花数据集)

 

代码效果图

一、导入需要的包

二、

1.导入数据

 

2.建立训练集和测试集

3.设置K值

4. 十重交叉验证K值

5.模型拟合 

6.数据可视化输出


代码效果图


,废话不多说,先看看代码实验结果

 


提示:以下是本篇文章正文内容,下面案例可供参考

一、导入需要的包

要是报错的话可以在pycharm安装包,要是不行就在命令窗口输入pip install +包名

  1. import matplotlib.pyplot as plt
  2. from sklearn import neighbors
  3. import numpy as np
  4. import pandas as pd
  5. import seaborn as sns
  6. from sklearn import model_selection
  7. from sklearn import metrics

二、

1.导入数据

导入数据并查看前5行代码

  1. df1 = pd.read_csv(r'D:\python\iris.csv')
  2. print(df1.head())#输出前五行
  3. predictors = df1.columns[:-1]

 

2.建立训练集和测试集

代码如下:

  1. x_train,x_test,y_train,y_test=model_selection.train_test_split(
  2. df1[predictors],df1.Species,
  3. test_size=0.5,
  4. random_state = 1234
  5. )
  6. print(np.ceil(np.log2(df1.shape[0])))

3.设置K值

  1. #设置待测试的不同K值
  2. K = np.arange(1,np.ceil(np.log2(df1.shape[0])))
  3. print(np.arange(1,np.ceil(np.log2(df1.shape[0]))))
  4. #设置空列表,用于储存平均准确率
  5. accuracy = []

4. 十重交叉验证K值

使用十重交叉验证K值,并做出最适合K值的折线图

  1. #使用十重交叉验证的方法
  2. for k in K:
  3. cv_result = model_selection.cross_val_score\
  4. (neighbors.KNeighborsClassifier(n_neighbors=int(k),
  5. weights='distance'),
  6. x_train, y_train, cv=10, scoring='accuracy')
  7. accuracy.append(cv_result.mean())
  8. #从K个平均准确率中挑选出最大值做对应的目标
  9. arg_max = np.array(accuracy).argmax()
  1. #中文负号正常显示
  2. plt.rcParams['font.sans-serif']=['SimHei']
  3. plt.rcParams['axes.unicode_minus'] = False
  4. #绘制不同k值与准确率之间的折线图
  5. plt.plot(K,accuracy)
  6. plt.scatter(K,accuracy)
  7. plt.text(K[arg_max],accuracy[arg_max],'最佳K值为%s'%int(K[arg_max]))
  8. plt.show()

 

5.模型拟合 

代入K值,进行模型拟合

  1. #重新构建模型,并将最佳邻近数个数设置为7
  2. knn_class = neighbors.KNeighborsClassifier(n_neighbors=7,weights='distance')
  3. #模型拟合
  4. knn_class.fit(x_train,y_train)
  5. #模型在测试集上的预测
  6. predict = knn_class.predict(x_test)

6.数据可视化输出

  1. #构建混淆矩阵
  2. cm = pd.crosstab(predict,y_test)
  3. print(f'鸢尾花种类混淆矩阵\n{cm}')
  4. #热力图输出
  5. cm = pd.DataFrame(cm,columns=['setosa','versicolor','virginica'],
  6. index=['setosa','versicolor','virginica'])
  7. sns.heatmap(cm,annot=True,cmap='GnBu')
  8. plt.xlabel('Real Lable')
  9. plt.ylabel('Predict Lable')
  10. plt.title('鸢尾花种类热力图')
  11. plt.show()
  12. #显示各类预测准确率
  13. b = metrics.classification_report(y_test,predict)
  14. print(f'显示各类预测准确率\n{b}')

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/722101
推荐阅读
相关标签
  

闽ICP备14008679号