Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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中使用StratifiedKFold在LogisticReturnal中进行参数调优?_Python_Logistic Regression_Cross Validation - Fatal编程技术网

如何在Python中使用StratifiedKFold在LogisticReturnal中进行参数调优?

如何在Python中使用StratifiedKFold在LogisticReturnal中进行参数调优?,python,logistic-regression,cross-validation,Python,Logistic Regression,Cross Validation,我需要输入例如6个C值,并查看每个C值每10倍的平均roc_auc_分数 我迄今为止的努力: lr=逻辑回归(C=1, 惩罚='l1', 解算器='liblinear', tol=0.0001, 最大电阻=3000, 截距_比例=1.0, multi_class='auto', 随机状态=42) C=[0.01,0.05,0.1,1,10,12] 最终成绩=[] 平均分={} #分层KFold skf=分层折叠(n_分割=10,随机状态=42,随机混合=False) 对于c中的c: 对于枚举(

我需要输入例如6个C值,并查看每个C值每10倍的平均roc_auc_分数

我迄今为止的努力:


lr=逻辑回归(C=1,
惩罚='l1',
解算器='liblinear',
tol=0.0001,
最大电阻=3000,
截距_比例=1.0,
multi_class='auto',
随机状态=42)
C=[0.01,0.05,0.1,1,10,12]
最终成绩=[]
平均分={}
#分层KFold
skf=分层折叠(n_分割=10,随机状态=42,随机混合=False)
对于c中的c:
对于枚举(skf.split(X,y))中的fold(train_索引,test_索引):
打印(“折叠:”,折叠+1)
X\u列车,X\u测试=X.iloc[列车索引],X.iloc[测试索引]
y_列,y_测试=y.iloc[列索引],y.iloc[测试索引]
lr.安装(X_系列、y_系列)
预测=lr.预测概率(X列车)[:,1]
最终评分。附加(roc评分(y训练,预测))
打印(“AUC分数:+str(roc_AUC_分数(y_序列,预测)))
平均分[c]=np.平均分(最终分)
打印(“--”)
打印(平均分数)
我需要一个结果字典,因为键有c值,每个c值的平均值是10倍

编辑:


roc_dict=dict()
C=[0.01,0.05,0.1,1,10,12]
对于c中的c:
最终成绩=[]
平均分={}
对于枚举(skf.split(X,y))中的fold(train_索引,test_索引):
打印(“折叠:”,折叠+1)
X\u列车,X\u测试=X.iloc[列车索引],X.iloc[测试索引]
y_列,y_测试=y.iloc[列索引],y.iloc[测试索引]
lr.安装(X_系列、y_系列)
预测=lr.预测概率(X列车)[:,1]
最终得分。追加(roc得分(y训练,预测))
打印(“AUC分数:+str(roc_AUC_分数(y_序列,预测)))
roc_dict[c]=np.平均值(最终分数)

你就快到了。您可以在循环之前定义一个空的
dict

roc_dict=dict()
运行循环,但将您的
列表
目录
放入循环中,以便它重置每次迭代(或创建新的迭代):

对于c中的c:
最终成绩=[]
平均分={}
#此处无更改,请粘贴原始代码
roc_dict[c]=最终成绩#加上这个
这将导致:

Out[90]:
{0.01: [0.7194940476190477,
0.7681686046511628,
0.653343023255814,
0.6596194503171249],
0.05: [0.7194940476190477,
0.7681686046511628,
0.653343023255814,
0.6596194503171249],
0.1: [0.7194940476190477,
0.7681686046511628,
0.653343023255814,
0.6596194503171249],#…等,但改为10倍。

如何使键只保留每个C值的这10个值的平均值?只需像您那样调用
np.mean(您的\u分数)
,并将其分配给
my\u dict[number\u key]
(通用示例)我试着实现你说的,现在我得到的每个c值的分数都是一样的。我把代码添加到我的问题中。你能告诉我哪一部分我做错了吗?