lession 5 KNN分类算法
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsClassifier def knn_demo(): """ 用knn算法对鸢尾花进行分类 :return: """ # 加载sklearn自带的鸢尾花数据 iris = load_iris() x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=6) # 对数据进行标准化处理 transfer = StandardScaler() x_train = transfer.fit_transform(x_train)
# 测试集用transform,这样里面的参数才会和训练集是一样的,fit_transform是计算参数,并应用到数据中 x_test = transfer.transform(x_test) # knn算法训练 estimator = KNeighborsClassifier(n_neighbors=3) estimator.fit(x_train,y_train) # 计算一个预测值 y_predict = estimator.predict(x_test) print("y_predict:" , y_predict) print("对比预测值和测试值", y_predict == y_test) # 用测试集计算评估的准确率 scroe = estimator.score(x_test, y_test) print("准确率为:", scroe) return None if __name__ == "__main__": knn_demo()
对knn进行交叉验证和网络搜索,查找最优参数
def knn_gridsearch_demo(): """ 用knn算法对鸢尾花进行分类,加入网格搜索和交叉验证 :return: """ # 加载sklearn自带的鸢尾花数据 iris = load_iris() x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=6) # 对数据进行标准化处理 transfer = StandardScaler() x_train = transfer.fit_transform(x_train) x_test = transfer.fit_transform(x_test) # knn算法训练 estimator = KNeighborsClassifier() # 加入网格搜索和交叉验证 param_dict = {"n_neighbors":[1,3,5,7,9,11]} estimator = GridSearchCV(estimator , param_grid=param_dict,cv=10) estimator.fit(x_train,y_train) # 计算一个预测值 y_predict = estimator.predict(x_test) print("y_predict:" , y_predict) print("对比预测值和测试值", y_predict == y_test) # 用测试集计算评估的准确率 scroe = estimator.score(x_test, y_test) print("准确率为:", scroe) print("最佳参数:\n",estimator.best_params_) print("最佳结果:\n", estimator.best_score_) print("最佳估计器:\n", estimator.best_estimator_) print("交叉验证结果:\n", estimator.cv_results_) return None
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)