Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将scikit学习中GridSearchCV中每个折叠的准确度和平均值制成表格_Python_Scikit Learn_Grid Search - Fatal编程技术网

Python 将scikit学习中GridSearchCV中每个折叠的准确度和平均值制成表格

Python 将scikit学习中GridSearchCV中每个折叠的准确度和平均值制成表格,python,scikit-learn,grid-search,Python,Scikit Learn,Grid Search,我在scikit learn Python3中使用两个参数集a和B对我的模型进行网格搜索。代码如下所示: parameterA = ['a', 'b'] parameterB = np.array([10, 100]) param_grid = dict(parameterA=parameterA, parameterB=parameterB) model = buildModel() grid = GridSearchCV(model, param_grid, scoring="accurac

我在scikit learn Python3中使用两个参数集a和B对我的模型进行网格搜索。代码如下所示:

parameterA = ['a', 'b']
parameterB = np.array([10, 100])
param_grid = dict(parameterA=parameterA, parameterB=parameterB)
model = buildModel()
grid = GridSearchCV(model, param_grid, scoring="accuracy")
grid_result = grid.fit(X, Y)
for parameters, scores in grid_result.grid_scores_:
    print("Mean: " + scores.mean())
    print("Parameters: " + parameters)
  • 我是否正确理解,score.mean()是准确度的平均值
  • 如何输入自己的评分函数?在文档中,它用“scorer(估计量,X,y)”表示。我从哪里得到X和y?他们不是交叉验证的培训和测试集吗?他们可以接近吗
  • 是否有可能获得交叉验证每一次的所有这些值?默认情况下,有k=3倍,所以我希望每个参数组合的平均值和精度是3倍

首先,您不应该再使用
网格分数
,因为它在0.18版中被弃用,而支持
cv\u结果
属性。
grid\u scores\u
属性在版本0.20中将不可用


:我是否正确理解score.mean()是准确度的平均值

A:属性
cv\u results\u
实际上返回您正在查找的所有度量的词汇表。请查看以下内容:


:是否有可能获得交叉验证每次折叠的所有这些值?默认情况下,有k=3倍,所以我希望每个参数组合的平均值和精度是3倍

A:是的,实际上需要使用属性
verbose
verbose
必须是一个整数,它控制详细程度:越高,消息越多。例如,您可以设置
verbose=3


:我如何设置自己的评分功能

A:定义损失函数后使用。您的损失函数必须具有以下签名:
score\u func(y,y\u pred,**kwargs)
。一个基本的损失函数可以是分类良好的样本与总样本数的比率(您可以想象任何类型的指标,这些指标可以让您很好地了解分类器的性能)

您希望这样做:

def my_loss_func(y, y_pred):
    return np.sum(y == y_pred)/float(len(y_pred))

my_scorer = make_scorer(my_loss_func, greater_is_better=True)

然后您可以在GridSearch中使用您的
记分器。

如果我使用
verbose=100
,我会得到
[CV]。。。。。。。。。。参数a=b,参数b=10,分数=0.683594-0.1s
。我可以通过计算选择这个分数(这是我想要的)吗?我真的不明白你的问题。您想选择什么?返回此分数的分数或参数?类似于
grid\u result.fold\u score
,它为我提供了一个分数值列表。@ste如果我正确理解您的问题,
cv\u results\u
包含您需要的所有内容。