ML-For-Beginners 训练 LogisticRegression 模型出现 ConvergenceWarning 最大迭代数警告怎么处理?
2026/9/9 21:54:08 网站建设 项目流程

ML-For-Beginners 训练 LogisticRegression 模型出现 ConvergenceWarning 最大迭代数警告怎么处理?

【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners

在 ML-For-Beginners 课程的 Regression 部分第 4 课(2-Regression/4-Logistic/README.md)中,用 scikit-learn 训练LogisticRegression预测南瓜颜色时,model.fit(X_train, y_train)可能在输出中打印如下警告:

ConvergenceWarning: Maximum number of iterations reached

意思是算法在默认的最大迭代次数内没有收敛。仓库的 TROUBLESHOOTING.md("Common Error Messages" 一节)给出了针对该警告的两种处理方式:增大max_iter,或先对特征做标准化。本文按这个路径说明如何修复并验证。

警告出现的上下文

课程的标准训练流程是先对南瓜数据做特征编码(OrdinalEncoder+OneHotEncoder通过ColumnTransformer组合,标签用LabelEncoder),然后train_test_split划分训练/测试集,最后:

from sklearn.linear_model import LogisticRegression model = LogisticRegression() model.fit(X_train, y_train) predictions = model.predict(X_test)

注意这里使用的是默认构造参数,没有设置max_iter。仓库中的参考实现(2-Regression/4-Logistic/solution/notebook.ipynb)也是同样的写法,数据文件位于 2-Regression/data/US-pumpkins.csv。

修复方案一:增大最大迭代次数

TROUBLESHOOTING.md 给出的直接改法是实例化时把max_iter设为 1000:

from sklearn.linear_model import LogisticRegression # Increase max iterations model = LogisticRegression(max_iter=1000)

其余流程不变,仍然用fit(X_train, y_train)训练。

修复方案二:先对特征做标准化

同一节给出的另一种改法是用StandardScaler对特征X做标准化后再训练:

from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_scaled = scaler.fit_transform(X)

文档把这两条并列给出(代码注释为 "Or scale your features first"),没有规定必须选哪一个,也没有说明两者叠加使用。

验证修复是否生效

  1. 重新运行训练与评估代码,确认输出中不再出现ConvergenceWarning: Maximum number of iterations reached这一行。
  2. 正常输出模型评分。课程的评估代码是:
from sklearn.metrics import f1_score, classification_report print(classification_report(y_test, predictions)) print('Predicted labels: ', predictions) print('F1-score: ', f1_score(y_test, predictions))

仓库参考 notebook 中该课程的文档示例输出如下(注意这是示例结果,你的数据划分不同,数值可能不同):

precision recall f1-score support 0 0.94 0.98 0.96 166 1 0.85 0.67 0.75 33 accuracy 0.92 199 macro avg 0.89 0.82 0.85 199 weighted avg 0.92 0.92 0.92 199 F1-score: 0.7457627118644068

只要警告消失、classification_report能正常打印,就说明警告已被处理;具体指标数值不要拿示例值当固定预期。

限制与后续步骤

  • 文档只给出上述两种改法,没有提供其他调参建议;不要把"忽略警告"当作处理手段——课程自己的 notebook 中抑制 seaborn 警告时也明确说明 "Ignoring warnings is NOT a best practice"。
  • 如果按以上方式处理问题仍然存在,TROUBLESHOOTING.md 的 "Still Having Issues?" 一节给出的下一步是:搜索已有 issue、查看 Discord 讨论,或提交新 issue(需附操作系统、Python/R 版本、完整报错信息和复现步骤)。
  • 更多背景可回到课程文档:2-Regression/4-Logistic/README.md 与 2-Regression/README.md。

【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询