### 模型训练 import simplestart as ss from sklearn import datasets from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score ss.md(''' ## 模型训练 ''') #加载数据,并划分样本数据 data = datasets.load_iris() X = data.data y = data.target X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) #页面会话变量 ss.session["acc"] = "" ss.session["code"] = 0 #训练函数 def train(event): clf = KNeighborsClassifier(n_neighbors=3) clf.fit(X_train,y_train) y_pred = clf.predict(X_test) acc = accuracy_score(y_test, y_pred) acc = round(acc, 2) ss.session["acc"] = acc #将结果赋值给页面会话变量,相应页面显示值会自动响应 ss.md(''' #### 模型训练的主要步骤: 首先,从数据集中加载 Iris 数据(包括特征和标签),并将这些数据划分为训练集和测试集,其中 80% 用于训练,20% 用于测试。接着,定义了一个训练函数,该函数使用 K-Nearest Neighbors(KNN)分类器进行训练,评估模型的预测精度,并将结果保存在一个页面会话变量中,以便在网页上显示。 ### 在网页上,显示了一个训练按钮。当用户点击这个按钮时,训练函数会被触发,模型会在后台进行训练并计算测试集的预测精度。训练完成后,精度结果会更新到页面中,并以“Accuracy = @acc”格式展示给用户,其中 @acc 是训练过程中计算得到的预测精度值。 ### 训练和测试速度特别快可能是因为 Iris 数据集非常小,只有 150 个样本和 4 个特征。此外,K-Nearest Neighbors(KNN)是一种简单且高效的算法,特别是在小数据集上表现较好,因此训练和测试过程迅速完成。 ### --- ''') ss.write(f'测试集的预测精度 Accuracy =', "@acc") ss.button("Train", onclick = train) #ui ss.md("---") def conditioner(event): return ss.session["code"] == 1 def checkcode(event): ss.session["code"] = 1 def hidecode(event): ss.session["code"] = 0 ss.button("查看代码", onclick = checkcode) ss.button("隐藏代码", onclick = hidecode) with ss.when(conditioner): ss.md(''' ```python import simplestart as ss from sklearn import datasets from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score #加载数据,并划分样本数据 data = datasets.load_iris() X = data.data y = data.target ss.write(X.shape, y.shape) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) #页面会话变量 ss.session["acc"] = "" #训练函数 def train(event): clf = KNeighborsClassifier(n_neighbors=3) clf.fit(X_train,y_train) y_pred = clf.predict(X_test) acc = accuracy_score(y_test, y_pred) acc = round(acc, 2) ss.session["acc"] = acc #将结果赋值给页面会话变量,相应页面显示值会自动响应 #显示在测试集上模型的准确率 ss.write(f'测试集的预测精度 Accuracy =', "\@acc") ss.button("Train", onclick = train) ``` ''') ss.md("---") ss.md(''' ::: tip ### KNN的优点: 简洁、易于理解、易于实现、无须估计参数,无须训练; 适合对稀有事件进行分类; 特别适用于多分类问题(Multi-label,对象具有多个类别标签) ::: ''') ss.md(''' 更多KNN介绍,请参考 [KNN分类算法介绍,用KNN分类鸢尾花数据集(iris)](https://blog.csdn.net/weixin_51756038/article/details/130096706) ''')