第二十一天学习进度--简单线性函数提取并模拟计算机复杂图像识别函数(2)
前天,用简单的sklearn中提供的线性回归分析的一个lineregress的模块对手写图片识别函数进行提取了之后,发现对应的函数并没有比较好的效果,今天打算通过改进,来增强提取的正确性。
sklearn中提供了不止简单的线性回归分析的模块,还有梯度下降回归,梯度上升回归,随机森林回归,极端森林回归等回归分析的方法,所以今天打算通过这4种回归模型的测试,来尝试提高计算机识别函数的正确性。(1)首先我们尝试梯度下降的回归分析方法
梯度下降的回归是sklearn中的以下模型
from sklearn import linear_model model=linear_model.SGDRegressor()
在简单线性函数提取并模拟计算机复杂图像识别函数(1)的数据的基础上,也就是minist的手写数据基础上提取对应的函数,尝试上述模型,代入数据获得对应数字的值的这个函数提取出来,过程没有用到神经网络,实验过程完全一致,这里就不再展示过程了
可以看到梯度下降依旧正确率不高,甚至低于线性回归分析的正确率
(2)梯度上升回归分析
from sklearn.ensemble import GradientBoostingRegressor model=GradientBoostingRegressor()
依旧完全一致的实验过程,看看效果如何
可以看到正确率有了一点点的提升,不过这样的准确率还是完全不能入眼
距离相对比较好的函数提取还是有很大的距离
(3)随机森林回归
from sklearn.ensemble import RandomForestRegressor model=RandomForestRegressor()
同样的过程提取手写图像识别函数效果如下:
随机森林的回归分析直接将非线性函数的提取正确率翻了一番,意料之外...达到了昨天的最低要求了
(4)最后康康极端森林回归有没有更好的效果
from sklearn.ensemble import ExtraTreesRegressor model=ExtraTreesRegressor()
效果:
令人振奋的效果,一度达到了70%左右的正确率,这也就是说极端森林在非线性函数的拟合上有很好的效果,虽然不能完全达到100%,但是60%正确率...实在是太不可思议了