12种算法解决MNIST
最近突然有一个想法,用尽可能多的算法来做一个任务。最后选择了做最经典的MNIST。
简单梳理了一些算法,包括机器学习的,深度学习的,宽度学习的等等,其实还有很多,日后再慢慢往上添加吧。所有的算法都是简单的调用或者实现,没有经过任何的优化。
先上GitHub。
博客之后我会对有些代码做详细解释。
1.ML
像这些很多的机器学习算法,使用起来都是很简单的,也没有什么太多要说的。
1.1 SVM
1.2 DecisionTree
1.3 RandomForest
1.4 KNearestNeighbors
1.5 Adaboost
1.6 XGBoost
1.7 catboost
1.8 lgbm
2.DL
2.1 使用numpy搭建的四层神经网络
这个是仅使用numpy来搭建的全连接神经网络,效果还不错。如果再优化,应该会更好。
2.2 CNN(VGG16)
CNN是做图像问题最好的方法了,cnn的模型也是太多了,这里就挑了一个经典的vgg。
2.3 LSTM
LSTM本来是做时序数据的,但是用在图像上也不是不行,虽然效果不是十分好。一起来也是很简单的,把图像的每一行作为一个元素,行与行之间当作时序关系来处理就行了。
2.4 BLS
这个算是一个比较小众的宽度学习,我有一篇博客介绍宽度学习,之后有时间的话我会加上带增量学习的bls。