【机器学习】`ConvergenceWarning: Liblinear failed to converge, increase the number of iterations`问题记录

项目场景:机器学习SVC进行训练

手游用户流失预测


问题描述

利用LinearSVC进行训练时,报错:
ConvergenceWarning: Liblinear failed to converge, increase the number of iterations
代码如下:

clf = LinearSVC(C=10)
calibrated_clf = CalibratedClassifierCV(base_estimator=clf, cv=3)
calibrated_clf.fit(scaler_all_trainX, all_trainy)
proba = calibrated_clf.predict_proba(scaler_all_testX)
proba

原因分析及方案:

有如下几种可能:
一、已经收敛

  • 求解线性 SVM 只是求解二次优化问题。求解器通常是一种迭代算法,它保持对解决方案的运行估计(即,SVM 的权重和偏差)。当解决方案对应于该凸优化问题的最佳目标值时,它会停止运行。

二、还未收敛

  1. 规范化数据。利用sklearn中的StandScaler函数规范化特征,这不仅可能可以使得结果更好,更可能可以加快训练速度。但需要注意的是,若有离散数据,需要确保它们被正确转换
  2. 确保C等其他参数设置正确,可以调用Optimize等包来调整参数。
  3. 如果特征数大于样本数,则需要设置dual=True
  4. 设置max_iter为更大的值,默认为1000。

结果:

使用几种方法后并没有解决该问题,仅以此记录,以后说不定能用上。

附:尽管最后结果可能看起来还不错,但不应该忽视该问题,因为这意味着LinearSVC在达到收敛之前已经停止了迭代,

参考连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值