机器学习:模型选择与调优交叉验证和网格搜索

简介: 机器学习:模型选择与调优交叉验证和网格搜索

1、交叉验证cross validation

为了让被评估的模型更加准确可信

将训练数据分为训练集和验证集,分几等份就是几折验证

2、网格搜索grid search

超参数:很多参数需要手动指定

每组超参数都采用交叉验证来进行评估

代码示例

from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.datasets import load_iris
# 查看数据集
iris = load_iris()
# 训练集测试集拆分
X_train, X_test, y_train, y_test = train_test_split(
    iris.data, iris.target, test_size=0.33, random_state=42)
# 交叉验证
knn = KNeighborsClassifier()
params = {
    "n_neighbors": [3, 5, 10]
}
gscv = GridSearchCV(knn, params, cv=2)
gscv.fit(X_train, y_train)
print(gscv.score(X_test, y_test))
print(gscv.best_score_)
print(gscv.best_index_)
print(gscv.best_estimator_)
print(gscv.best_params_)
print(gscv.cv_results_)
"""
0.98
0.96
0
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
           metric_params=None, n_jobs=1, n_neighbors=3, p=2,
           weights='uniform')
{'n_neighbors': 3}
{'mean_fit_time': array([0.00049746, 0.00029266, 0.00028002]), 'std_fit_time': array([3.34978104e-05, 5.96046448e-07, 2.98023224e-06]), 'mean_score_time': array([0.00222301, 0.00057685, 0.00059712]), 'std_score_time': array([1.29294395e-03, 2.98023224e-06, 1.70469284e-05]), 'param_n_neighbors': masked_array(data=[3, 5, 10],
             mask=[False, False, False],
       fill_value='?',
            dtype=object), 'params': [{'n_neighbors': 3}, {'n_neighbors': 5}, {'n_neighbors': 10}], 'split0_test_score': array([0.94117647, 0.94117647, 0.94117647]), 'split1_test_score': array([0.97959184, 0.93877551, 0.95918367]), 'mean_test_score': array([0.96, 0.94, 0.95]), 'std_test_score': array([0.01920384, 0.00120024, 0.0090018 ]), 'rank_test_score': array([1, 3, 2], dtype=int32), 'split0_train_score': array([0.97959184, 0.95918367, 0.95918367]), 'split1_train_score': array([0.92156863, 0.94117647, 0.96078431]), 'mean_train_score': array([0.95058023, 0.95018007, 0.95998399]), 'std_train_score': array([0.0290116 , 0.0090036 , 0.00080032])}
"""
相关文章
|
16天前
|
机器学习/深度学习 索引
|
1月前
|
机器学习/深度学习 算法 文件存储
使用Python实现深度学习模型:神经架构搜索与自动机器学习
【7月更文挑战第5天】 使用Python实现深度学习模型:神经架构搜索与自动机器学习
49 2
|
2月前
|
机器学习/深度学习
探索机器学习中的超参数调优策略
在机器学习模型的训练过程中,超参数的选择和调优对模型性能有着至关重要的影响。本文探讨了不同的超参数调优策略,分析了它们的优缺点,并结合实际案例展示了如何有效地选择和调整超参数以提升模型的准确性和泛化能力。
|
1月前
|
机器学习/深度学习 Serverless Python
`sklearn.metrics`是scikit-learn库中用于评估机器学习模型性能的模块。它提供了多种评估指标,如准确率、精确率、召回率、F1分数、混淆矩阵等。这些指标可以帮助我们了解模型的性能,以便进行模型选择和调优。
`sklearn.metrics`是scikit-learn库中用于评估机器学习模型性能的模块。它提供了多种评估指标,如准确率、精确率、召回率、F1分数、混淆矩阵等。这些指标可以帮助我们了解模型的性能,以便进行模型选择和调优。
|
2月前
|
机器学习/深度学习 算法
机器学习中的超参数优化涉及手动尝试、网格搜索、随机搜索、贝叶斯优化、梯度优化、进化算法等策略
【6月更文挑战第28天】**机器学习中的超参数优化涉及手动尝试、网格搜索、随机搜索、贝叶斯优化、梯度优化、进化算法等策略。工具如scikit-optimize、Optuna助力优化,迁移学习和元学习提供起点,集成方法则通过多模型融合提升性能。资源与时间考虑至关重要,交叉验证和提前停止能有效防止过拟合。**
37 0
|
2月前
|
机器学习/深度学习 数据处理 计算机视觉
机器学习- Sklearn (交叉验证和Pipeline)
机器学习- Sklearn (交叉验证和Pipeline)
|
3月前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型调优
【5月更文挑战第27天】 在当今数据驱动的时代,构建一个高效的机器学习模型是每个数据科学家和工程师追求的目标。本文将深入探讨如何通过细致的数据预处理、合理的特征工程、选择适合的算法以及精细的模型调优来提高模型的性能。我们将摒弃传统的摘要方式,直接进入主题,以案例分析的形式,逐步展示如何打造一个既准确又高效的预测模型。
|
3月前
|
机器学习/深度学习 数据采集 前端开发
【Python机器学习专栏】模型泛化能力与交叉验证
【4月更文挑战第30天】本文探讨了机器学习中模型泛化能力的重要性,它是衡量模型对未知数据预测能力的关键。过拟合和欠拟合影响泛化能力,而交叉验证是评估和提升泛化能力的有效工具。通过K折交叉验证等方法,可以发现并优化模型,如调整参数、选择合适模型、数据预处理、特征选择和集成学习。Python中可利用scikit-learn的cross_val_score函数进行交叉验证。
343 0
|
3月前
|
机器学习/深度学习 算法 Python
【Python机器学习专栏】机器学习中的超参数调优技术
【4月更文挑战第30天】本文探讨了机器学习中超参数调优的重要性,介绍了网格搜索、随机搜索、贝叶斯优化和AutoML等调优方法,并提供了Python中使用`scikit-learn`进行网格搜索的示例。超参数的选择直接影响模型学习和泛化能力,而调优技术能帮助找到最佳组合,提升模型性能。随着AutoML的发展,自动化调参将成为更高效的选择。
98 0
|
3月前
|
机器学习/深度学习 Python
【Python 机器学习专栏】模型选择中的交叉验证与网格搜索
【4月更文挑战第30天】交叉验证和网格搜索是机器学习中优化模型的关键技术。交叉验证通过划分数据集进行多次评估,如K折和留一法,确保模型性能的稳定性。网格搜索遍历预定义参数组合,寻找最佳参数设置。两者结合能全面评估模型并避免过拟合。Python中可使用`sklearn`库实现这一过程,但需注意计算成本、过拟合风险及数据适应性。理解并熟练应用这些方法能提升模型性能和泛化能力。
185 0

热门文章

最新文章