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
复制代码

 

posted @   IWing  阅读(130)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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)
点击右上角即可分享
微信分享提示