欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

水仙花分几个等级,水仙花的种类有几种

终极管理员 知识笔记 52阅读
题目 思路

1、处理数据集这里用的是题目已知的数据集所以说需要提前将写好的数据放到excel表格里再进行读取。

2、将数据集划分为训练集和测试集

3、定义K-NN模型。

4、训练模型

5、预测模型

6、计算分类精度

7、使用网格搜索法

8、训练模型

9、可视化

结果:

大致就是这样代码如下
#加载数据集import numpy as npimport pandas as pdfrom matplotlib import pyplot as pltfrom matplotlib.colors import ListedColormapfrom sklearn.metrics import accuracy_scorefrom sklearn.model_selection import train_test_split, GridSearchCVfrom sklearn.neighbors import KNeighborsClassifierimport warningswarnings.filterwarnings(ignore)import matplotlibprint(matplotlib.matplotlib_fname())# 加载数据集def read():    filename  r水仙花.xlsx    data  pd.read_excel(filename, headerNone)    x1  data.iloc[1:, [0, 1]].values    x2  data.iloc[1:, [3, 4]].values    # print(x2)    y1  data.iloc[1:, 2].values    y2  data.iloc[1:, 5].values    X  np.vstack((x1, x2))  # 竖向合并    y  np.hstack((y1, y2))  # 横向合并    y  y.astype(int)    return X, y# 划分训练集和测试集X,yread()X_train, X_test, y_train, y_test  train_test_split(X, y, test_size0.3, random_state42)# 定义K-NN模型knn  KNeighborsClassifier(n_neighbors3)  # 设置k3#训练模型knn.fit(X_train, y_train)#预测测试集y_pred  knn.predict(X_test)#计算分类精度accuracy  accuracy_score(y_test, y_pred)print(分类精度, accuracy)# 使用网格搜索找到最佳参数param_grid  {n_neighbors: [1,3, 5, 7, 9]}  # 尝试不同的k值grid_search  GridSearchCV(knn, param_grid, cv5)#训练模型grid_search.fit(X_train, y_train)print(最佳参数, grid_search.best_params_)print(最佳分类精度, grid_search.best_score_)#可视化#绘制散点图cmap_light  ListedColormap([#FFAAAA, #AAFFAA, #AAAAFF])cmap_bold  ListedColormap([#FF0000, #00FF00, #0000FF])x_min, x_max  X[:, 0].min() - 0.1, X[:, 0].max()  0.1y_min, y_max  X[:, 1].min() - 0.1, X[:, 1].max()  0.1xx, yy  np.meshgrid(np.arange(x_min, x_max, 0.02), np.arange(y_min, y_max, 0.02))Z  knn.predict(np.c_[xx.ravel(), yy.ravel()])Z  Z.reshape(xx.shape)plt.figure()plt.pcolormesh(xx, yy, Z, cmapcmap_light)# 绘制训练样本和测试样本plt.scatter(X_train[:, 0], X_train[:, 1], cy_train, cmapcmap_bold, edgecolork)plt.scatter(X_test[:, 0], X_test[:, 1], cy_test, cmapcmap_bold, markerx, edgecolork)plt.xlim(xx.min(), xx.max())plt.ylim(yy.min(), yy.max())plt.title(K-NN分类k3)plt.show()
 可能出现的问题

图片中中文无法显现原因是配置文件中没有配置中文库解决办法

首先打印出配置文件所在的目录

代码如下

import matplotlibprint(matplotlib.matplotlib_fname())

 然后根据地址找到相应文件ctrf搜索font.family,找到下面图片中的两行

然后将其注释符号全部删掉并在font.sans-serif中添加中文字体名称

这样再重新运行程序代码即可。

标签:
声明:无特别说明,转载请标明本文来源!