当前位置: 首页 > 面试题库 >

使用GridSearch时使用Scikit-learn建立模型帮助

何涵畅
2023-03-14
问题内容

作为Enron项目的一部分,构建了附件模型,以下是步骤的摘要,

下面的模型给出了很高的分数

cv = StratifiedShuffleSplit(n_splits = 100, test_size = 0.2, random_state = 42)
gcv = GridSearchCV(pipe, clf_params,cv=cv)

gcv.fit(features,labels) ---> with the full dataset

for train_ind, test_ind in cv.split(features,labels):
    x_train, x_test = features[train_ind], features[test_ind]
    y_train, y_test = labels[train_ind],labels[test_ind]

    gcv.best_estimator_.predict(x_test)

下面的模型给出了更多合理但较低的分数

cv = StratifiedShuffleSplit(n_splits = 100, test_size = 0.2, random_state = 42)
gcv = GridSearchCV(pipe, clf_params,cv=cv)

gcv.fit(features,labels) ---> with the full dataset

for train_ind, test_ind in cv.split(features,labels):
     x_train, x_test = features[train_ind], features[test_ind]
     y_train, y_test = labels[train_ind],labels[test_ind]

     gcv.best_estimator_.fit(x_train,y_train)
     gcv.best_estimator_.predict(x_test)
  1. 使用Kbest找出分数并对其功能进行排序,并尝试组合较高和较低的分数。

  2. 通过StratifiedShuffle将SVM与GridSearch一起使用

  3. 使用best_estimator_预测和计算精度和召回率。

问题是估算器会吐出完美分数,在某些情况下为1

但是,当我在训练数据上重新拟合最佳分类器然后运行测试时,它会给出合理的分数。

我的疑问/问题是,使用我们发送给它的Shuffle拆分对象进行拆分后,GridSearch对测试数据的处理方式是什么。我以为它不适合测试数据,如果是真的,那么当我预测使用相同的测试数据时,它应该不会给出如此高的分数。因为我使用了random_state值,所以shufflesplit应该为Grid
Fit和预测创建了相同的副本。

那么,是否将相同的Shufflesplit用于两个错误?


问题答案:

基本上,网格搜索将:

  • 尝试参数网格的所有组合
  • 对于他们每个人,都会进行K折交叉验证
  • 选择最好的。

因此,您的第二种情况就是好的。否则,您实际上是在预测训练的数据(在第二种情况下不是这样,那里只保留了gridsearch中的最佳参数)



 类似资料:
  • 校验者: @小瑶 翻译者: @李昊伟 校验者: @hlxstc @BWM-蜜蜂 @小瑶 翻译者: @... 内容提要 在本节中,我们介绍一些在使用 scikit-learn 过程中用到的 机器学习 词汇,并且给出一些例子阐释它们。 机器学习:问题设置 一般来说,一个学习问题通常会考虑一系列 n 个 样本 数据,然后尝试预测未知数据的属性。 如果每个样本是 多个属性的数据 (比如说是一个多维记录),

  • scikit-learn 是一个 Python 的机器学习项目。是一个简单高效的数据挖掘和数据分析工具。基于 NumPy、SciPy 和 matplotlib 构建。 Installation 依赖 scikit-learn 要求: Python (>= 2.7 or >= 3.3) NumPy (>= 1.8.2) SciPy (>= 0.13.3) 运行示例需要 Matplotlib >= 1

  • 问题内容: 我通常会这样加载: 如果我使用油管跑… …是否有可能获得装载量? 简单尝试失败: 谢谢! (也有兴趣从学习管道中提取属性。) 问题答案: 您是否看过以下文档:http : //scikit-learn.org/dev/modules/pipeline.html 我觉得这很清楚。 更新:在0.21中,您可以仅使用方括号: 或索引 有两种方法可以到达管道中的步骤,或者使用索引,也可以使用您

  • Introduction to Machine Learning with scikit-learn This video series will teach you how to solve Machine Learning problems using Python's popular scikit-learn library. There are 10 video tutorials tot

  • 问题内容: 读取执行的scikit学习中tensroflow:http://learningtensorflow.com/lesson6/和scikit学习:http://scikit- learn.org/stable/modules/generated/sklearn.cluster.KMeans.html 我努力决定使用哪种实现。 scikit-learn作为tensorflow docke

  • 本文向大家介绍scikit-learn 使用交叉验证训练分类器,包括了scikit-learn 使用交叉验证训练分类器的使用技巧和注意事项,需要的朋友参考一下 示例 使用虹膜数据集: 数据分为训练集和测试集。要做到这一点,我们使用train_test_split效用函数来分割双方X和y(数据和目标矢量)用随机选择train_size=0.75(训练集包含数据的75%)。 训练数据集被输入到k最近邻