- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想用不同的参数给不同的分类器打分。
为了加快 LogisticRegression
的速度,我使用 LogisticRegressionCV
(至少快 2 倍)并计划为其他人使用 GridSearchCV
。
但问题是它给了我相等的 C
参数,但不是 AUC ROC
评分。
我会尝试修复许多参数,例如 scorer
、random_state
、solver
、max_iter
、托尔
...请看例子(真实数据无数据):
测试数据及公共(public)部分:
from sklearn import datasets
boston = datasets.load_boston()
X = boston.data
y = boston.target
y[y <= y.mean()] = 0; y[y > 0] = 1
import numpy as np
from sklearn.cross_validation import KFold
from sklearn.linear_model import LogisticRegression
from sklearn.grid_search import GridSearchCV
from sklearn.linear_model import LogisticRegressionCV
fold = KFold(len(y), n_folds=5, shuffle=True, random_state=777)
grid = {
'C': np.power(10.0, np.arange(-10, 10))
, 'solver': ['newton-cg']
}
clf = LogisticRegression(penalty='l2', random_state=777, max_iter=10000, tol=10)
gs = GridSearchCV(clf, grid, scoring='roc_auc', cv=fold)
gs.fit(X, y)
print ('gs.best_score_:', gs.best_score_)
gs.best_score_: 0.939162082194
searchCV = LogisticRegressionCV(
Cs=list(np.power(10.0, np.arange(-10, 10)))
,penalty='l2'
,scoring='roc_auc'
,cv=fold
,random_state=777
,max_iter=10000
,fit_intercept=True
,solver='newton-cg'
,tol=10
)
searchCV.fit(X, y)
print ('Max auc_roc:', searchCV.scores_[1].max())
Max auc_roc: 0.970588235294
求解器 newton-cg
仅用于提供固定值,其他也尝试过。我忘了什么?
附言在这两种情况下,我还收到警告“/usr/lib64/python3.4/site-packages/sklearn/utils/optimize.py:193: UserWarning: Line Search failedwarnings.warn('Line Search failed')"我也听不懂。如果有人也描述它的意思,我会很高兴,但我希望它与我的主要问题无关。
通过@joeln 评论添加max_iter=10000
和tol=10
参数。它不会改变任何数字的结果,但警告消失了。
最佳答案
这是 answer by Tom 的副本在 scikit-learn 问题跟踪器上:
LogisticRegressionCV.scores_
给出所有折叠的分数。GridSearchCV.best_score_
给出所有折叠的最佳平均分。
要获得相同的结果,您需要更改代码:
print('Max auc_roc:', searchCV.scores_[1].max()) # is wrong
print('Max auc_roc:', searchCV.scores_[1].mean(axis=0).max()) # is correct
同时使用默认的 tol=1e-4
而不是您的 tol=10
,我得到:
('gs.best_score_:', 0.939162082193857)
('Max auc_roc:', 0.93915947999923843)
剩余的(小)差异可能来自 LogisticRegressionCV
中的热启动(这实际上是它比 GridSearchCV
更快的原因)。
关于python - 如何从 LogisticRegressionCV 和 GridSearchCV 获得可比较和可重现的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36271166/
考虑以下网格搜索: grid = GridSearchCV(clf, parameters, n_jobs =-1, iid=True, cv =5) grid_fit = grid.fit(X_tr
我正在做一个 GridSearchCV,我已经监控了核心的百分比,并且我看到当我运行一个简单的神经网络时,4 个核心具有相同的百分比,但是当网格搜索 cv (n_jobs = 1) 开始时在情节的线条
我在带有 RBF 内核的 SVM 上进行了网格搜索 + 交叉验证,以使用类 GridShearchCV 找到参数 C 和 gamma 的最佳值。现在我想以表格格式获得结果,例如 C/gamma 1e-
我正在尝试为 sklearn 的 GridSearchCV 结果生成热图。我喜欢的东西sklearn-evaluation是因为生成热图真的很容易。但是,我遇到了一个问题。当我将参数设为 None 时
我想提高这个的参数GridSearchCV 对于 随机森林回归器 . def Grid_Search_CV_RFR(X_train, y_train): from sklearn.model_
我正在尝试设置 GridSearchCV 的实例来确定哪一组超参数将产生最低的平均绝对误差。 This scikit documentation表示分数指标可以在创建 GridSearchCV 时传递
当使用网格搜索在 python 中使用此函数 GridSearchCV() 进行分类器时,假设我们有一个参数区间来调整形式 1 到 100,我们如何能够指定它(1:100 不起作用)? p> 最佳答案
我是机器学习的新手,并且一直坚持这个。 当我尝试在线性模型中实现多项式回归时,例如使用多个次数的多项式范围(1,10)并获得不同的 MSE。我实际上使用 GridsearchCV 方法来查找多项式的最
我想在一系列 alpha(拉普拉斯平滑参数)上使用 GridSearchCV 来检查哪个为伯努利朴素贝叶斯模型提供了最佳准确度。 def binarize_pixels(data, threshold
使用 sklearn 在随机森林分类器上运行网格搜索。这个运行的时间比我想象的要长,我正在尝试估计这个过程还剩多少时间。我认为它的总拟合次数是 3*3*3*3*5 = 405。 clf = Rando
我正在尝试使用网格搜索找出要在 PCA 中使用的 n_components 的最佳值: from sklearn.decomposition import PCA from sklearn.grid_
我正在尝试 GridsearchCV 但我希望在 param grid 中有一些异常(exception)。这是我的网格搜索代码: from sklearn.model_selection impor
我很难找出 GridSearchCV 中的参数 return_train_score。来自docs : return_train_score : boolean, optional If
我必须进行多类分类 (3)。我使用 GridSearchCV 为我的分类器搜索最佳参数。 但我有一个不平衡的 x_train(和 x_test):0 有 3079 个实例,1 有 12 个实例,3 有
有没有办法访问在 GridSearchCV 过程中计算的预测值? 我希望能够根据实际值(来自测试/验证集)绘制预测的 y 值。 网格搜索完成后,我可以使用 将其与其他一些数据相匹配 ypred =
我正在使用GridsearchCV来调整超参数,现在我想在训练和验证步骤中进行最小-最大Normalization(StandardScaler())。但我认为我不能做到这一点。 问题是: 如果我对整
我正在使用 scikit learn 进行多标签分类。我使用 RandomForestClassifier 作为基本估计器。我想使用 GridSearchCV 优化每个标签的参数。目前我正在按以下方式
好的,我只想说,我对 SciKit-Learn 和数据科学完全陌生。但这是问题所在,也是我目前对该问题的研究。代码在底部。 总结 我正尝试使用 BernoulliRBM 进行类型识别(例如数字),并尝
我正在使用 GridSearchCV ,并且在每次迭代之后,我想将 clf.cv_results_ 属性保存到一个文件中(以防进程在中间崩溃)。 我尝试寻找解决方案,但就是想不通。 我们将不胜感激。
我正在尝试自学如何在基本的多层神经网络中对神经元的数量进行网格搜索。我正在使用 Python 的 GridSearchCV 和 KerasClasifier 以及 Keras。下面的代码适用于其他数据
我是一名优秀的程序员,十分优秀!