水仙花分几个等级,水仙花的种类有几种
终极管理员 知识笔记 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中添加中文字体名称
这样再重新运行程序代码即可。
标签: