gpt4 book ai didi

Python:逻辑回归 max_iter 参数降低了准确性

转载 作者:行者123 更新时间:2023-12-03 19:26:32 27 4
gpt4 key购买 nike

我正在做多类/多标签文本分类。我试图摆脱“ConvergenceWarning”。

当我调了 max_iter 从默认到 4000 ,警告消失。但是,我的模型精度从 降低了78 75 .

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score


logreg = Pipeline([('vect', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', LogisticRegression(n_jobs=1, C=1e5, solver='lbfgs',multi_class='ovr' ,random_state=0, class_weight='balanced' )),
])
logreg.fit(X_train, y_train)


y_pred = logreg.predict(X_test)

print('Logistic Regression Accuracy %s' % accuracy_score(y_pred, y_test))

cv_score = cross_val_score(logreg, train_tfidf, y_train, cv=10, scoring='accuracy')
print("CV Score : Mean : %.7g | Std : %.7g | Min : %.7g | Max : %.7g" % (np.mean(cv_score),np.std(cv_score),np.min(cv_score),np.max(cv_score)))

为什么当 max_iter =4000 时我的准确度会降低?
有没有其他办法修复
* "ConvergenceWarning: lbfgs 未能收敛。增加迭代次数。"of迭代。", ConvergenceWarning)"*

最佳答案

它缺少问题中使用的数据,因此无法重现问题,只能猜测。

要检查的一些事项:

1) 许多估算器如 LogisticRegression喜欢(不是说需要)缩放数据。根据您的数据,您可能希望使用 MaxAbsScaler 进行扩展, MinMaxScaler , StandardScalerRobustAScaler .最佳选择取决于您要解决的问题类型、稀疏性等数据属性、下游估计器是否欢迎负值等。缩放数据通常会加快收敛速度​​,甚至可能不需要增加 max_iter .

2)根据我的经验,solver不是 "liblinear"需要更多 max_iter给定相同输入数据的迭代收敛。

3) 我没有看到任何 'max_iter set in your code snippet. It currently defaults to 100`(sklearn 0.22)。

4)我看到你设置了正则化参数C=100000 .它大大减少了正则化,因为 C 是正则化强度的倒数。预计会消耗更多迭代,并可能导致模型过度拟合。

5) 没想到会更高max_iter会让你降低准确度。求解器正在发散而不是收敛。数据可能未缩放或随机状态不固定或容差tol (默认 1e-4)变为高。

6) 检查你 cross_val_score交叉验证参数 cv .如果我没有错,默认行为不会设置随机状态,从而导致可变平均准确度。

关于Python:逻辑回归 max_iter 参数降低了准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57085897/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com