python机器学习(网络搜索和交叉验证)

embedded/2024/10/15 22:04:18/

"""
网格搜索:
    指的是 GridSearchCV这个工具的功能, 可以帮助我们寻找最优的 超参数.

    超参数解释:
        在机器学习中, 我们把需要用户手动传入的参数称之为: 超参数.

交叉验证:
    指的是对数据集进行划分, 即: 把数据分成N份进行验证
        第1次: 第1份是 验证集(测试集), 其它是训练集, 得出: 模型的预估正确率
        第2次: 第2份是 验证集(测试集), 其它是训练集, 得出: 模型的预估正确率
        ......
        第n次: 第n份是 验证集(测试集), 其它是训练集, 得出: 模型的预估正确率
    最终计算所有正确率的平均值, 结合网格搜索, 找到最优参数组合.

回顾: 机器学习的建模流程.
    1. 加载数据.
    2. 数据预处理.
    3. 特征工程.
    4. 模型训练.
    5. 模型预测.
    6. 模型评估.
"""

# 导包
from sklearn.datasets import load_iris                  # 加载鸢尾花测试集的.
from sklearn.model_selection import train_test_split, GridSearchCV    # 分割训练集和测试集的, 网格搜索 => 找最优参数组合
from sklearn.preprocessing import StandardScaler        # 数据标准化的
from sklearn.neighbors import KNeighborsClassifier      # KNN算法 分类对象
from sklearn.metrics import accuracy_score              # 模型评估的, 计算模型预测的准确率

# 1. 加载数据.
iris_data = load_iris()
# 2. 数据预处理, 即: 划分 训练集, 测试集.
x_train, x_test, y_train, y_test = train_test_split(iris_data.data, iris_data.target, test_size=0.2, random_state=21)
# 3. 特征工程, 即: 特征的预处理 => 数据的标准化.
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)   # 训练 + 转换 => 适用于: 训练集.
x_test = transfer.transform(x_test)         # 直接转换 => 适用于: 测试集.

# 4. 模型训练.
# 4.1 创建 估计器对象.
estimator = KNeighborsClassifier()
# 4.2 定义网格搜索的参数, 即: 样本可能存在的参数组合值 => 超参数.
param_dict = {'n_neighbors': [1, 2, 3, 5, 7]}
# 4.3 创建网格搜索对象, 帮我们找到最优的参数组合.
# 参1: 估计器对象, 传入1个估计器对象, 网格搜索后, 会自动返回1个功能更加强大(最优参数)的 估计器对象.
# 参2: 网格搜索的参数, 传入1个字典, 键: 参数名, 值: 参数值列表.
# 参3: 交叉验证的次数, 指定值为: 4
estimator = GridSearchCV(estimator, param_dict, cv=5)
# 4.4 调用 估计器对象的 fit方法, 完成模型训练.
estimator.fit(x_train, y_train)

# 4.5 查看网格搜索后的参数
print(f'最优组合平均分: {estimator.best_score_}')
print(f'最优估计器对象: {estimator.best_estimator_}')  # 3
print(f'具体的验证过程: {estimator.cv_results_}')
print(f'最优的参数: {estimator.best_params_}')


# 5. 得到超参数最优值之后, 再次对模型进行训练.
estimator = KNeighborsClassifier(n_neighbors=3)
# 模型训练
estimator.fit(x_train, y_train)
# 模型评估
print(estimator.score(x_test, y_test))  # 0.9666666666666667


http://www.ppmy.cn/embedded/128099.html

相关文章

蓝禾,汤臣倍健,三七互娱,得物,顺丰,快手,游卡,康冠科技,途游游戏,埃科光电25秋招内推

蓝禾,汤臣倍健,三七互娱,得物,顺丰,快手,游卡,康冠科技,途游游戏,埃科光电25秋招内推 ①蓝禾 【岗位】国内/国际电商运营,设计,研发,营…

I\O进程线程(Day27)

一、学习内容 IO基础 概念 程序与外部设备进行交换的信息过程 分类 标准IO 封装好的相关库函数、有缓冲区、文件指针eg:fprintf、fscanf、fputc、fgetc、fputs、fgets、fopen、fclose... 操作流程 FILE *fp通过fopen打开文件 使用fprintf、fputc、fputs、fwrite把在…

STM32的独立看门狗定时器(IWDG)技术介绍

在嵌入式系统中,确保系统的稳定性和可靠性至关重要。看门狗定时器(Watchdog Timer, WDT) 是一种常用的硬件机制,用于监控系统的运行状态,防止系统因软件故障或意外情况进入不可预期的状态。STM32系列微控制器提供了两种…

力扣hot100--二叉树

二叉树 1. 94. 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[1,3,2]示例 2: 输入:root [] 输出:[]示例 3: …

【银行科技岗】相关考试知识点总结及部分考题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、**网络与安全**二、**软件开发与设计**三、**数据库与数据管理**四、**编程与系统**五、**计算机硬件与性能**六、**大数据与人工智能**七、**系统与应用**相关…

pdf阅读软件有哪些?5个软件帮助你快速进行pdf阅读

pdf阅读软件有哪些?5个软件帮助你快速进行pdf阅读 如果你正在寻找优秀的PDF阅读软件,以下推荐的5款软件能够帮助你快速、轻松地阅读和管理PDF文件。这些工具各具特色,适用于不同的使用需求,无论是注释、签名、还是管理大文件&…

基于Spring Boot REST API设计指南

在构建现代Web应用程序时,RESTful API已成为一种标准,使得不同的应用程序能够通过HTTP协议进行通信,实现资源的创建、读取、更新和删除等操作。Spring Boot作为一个功能强大的框架,能够轻松创建RESTful API。本文将详细介绍如何在…

非js脚本打开浏览器窗口的关闭解决方案

js脚本打开方式浏览器窗口 关闭方式: window.close() 非js脚本打开方式浏览器页面 只是前端开发者会惊奇的发现,使用window.close() API,并不能每次成功关闭浏览器窗口,打开控制台发现会有一条警告信息 错误分析: 为什么浏览…