我使用LogisticRegression()
建立了一个模型,经过网格搜索,数据显示了正则化强度的逆值,C = .0000001
是进行预测的“最佳”值。
这个参数对于LogisticRegression()
很好,但是当我想要交叉验证时,我决定使用LogisticRegressionCV()
,这里的等效c
参数被表示为Cs
,但是当我试图传递相同的变量Cs = .0000001
时,我会得到一个错误:
797 warm_start_sag = {"coef": np.expand_dims(w0, axis=1)}
799 coefs = list()
--> 800 n_iter = np.zeros(len(Cs), dtype=np.int32)
801 for i, C in enumerate(Cs):
802 if solver == "lbfgs":
TypeError: object of type 'float' has no len()
当提到文档时,似乎对于LogisticRegressionCV()
来说
如果Cs作为int,则在1e-4和1e4之间以对数标度选择Cs值的网格。
那么,我如何仍然输入一个Cs = .0000001的值?我不知道该怎么做。
发布于 2022-06-28 12:52:29
LogisticRegressionCV
不仅仅是交叉验证-得分logistic回归;它是一个超参数调优(通过交叉验证)逻辑回归。也就是说,它尝试了几种不同的正则化优势,并使用交叉验证分数来选择最好的一个(然后使用最佳的C
在整个训练集上重新构建一个模型)。Cs
可以是一个用于C
的值列表,也可以是一个整数,让sklearn为您创建一个列表(如引用的文档中所示)。
如果您只想用固定的C
评分您的模型,请使用cross_val_score
或cross_validate
。
(您可能可以使用LogisticRegressionCV
,设置Cs=[0.0000001]
,但这不是正确的语义用法。)
https://stackoverflow.com/questions/72779092
复制相似问题