采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
昨天晚上尝试了mnist数据集,但是训练了两次都不收敛,第一次觉得迭代次数不够,但第二次失败应该是η太大导致梯度下降法失效?接下来应该怎么做呢?
我使用最新的 sklearn 基于 LogisticRegression 在 MNIST 上进行了一下实验,代码如下:https://git.imooc.com/coding-169/coding-169/src/master/09-Logistic-Regression/Optional-03-MNIST-in-LogisticRegression/Optional-03-MNIST-in-LogisticRegression.ipynb
整体,看你的训练时间,近乎一定没有做 PCA。对于图像数据来说,数据冗余还是很大的,最好做一下 PCA。否则本身也会遭遇维度灾难的问题。
PCA 以后,进行标准化,然后使用 solver="newton-cg" ,我的测试结果没有收敛问题。可以尝试在你的环境下运行一下我的代码,看是不是有问题?如果没有问题,仔细比对一下,看看自己的代码问题在哪里?
继续加油!:)
尝试了PCA和归一化,之后果然顺畅多了,也可以得到跟老师一样的结果。 仔细查看了老师的代码,老师在使用logistics regression之前先对数据进行了预处理,极大地加快了计算的速度,这一点非常重要。 但是,我还有一个问题,即便没对数据进行预处理,增大的不应该只是计算时间吗?为什么会导致无法收敛这种情况发生呢? btw,老师的代码在Standardization进行fit的时候传入了y_train,这个应该是不需要的吧?
就是因为维度灾难啊。巨大的维度使得搜索空间巨大,对应或者搜索时间超长,或者由于搜索空间太广袤了,中间搜索步骤不知道去哪里更好,因为似乎去哪里都不够好!P.S. y_train 可以不传。
非常感谢老师!新年快乐呀!
登录后可查看更多问答,登录/注册
Python3+sklearn,兼顾原理、算法底层实现和框架使用。
2.5k 19
3.5k 17
2.9k 15
1.6k 15
1.4k 14