之前对机器学习的理解仅仅停留在书本上的推导公式,或者对一些开源工具的使用上高大上的机器学习究竟如何训练、怎样预测的,对我们来说就像是一个黑盒充满鉮秘今天,我们就以经典的机器学习算法SVM为例抛开各种实际处理上的tricky, 实现一个简单纯洁的SVM,用CODING说话揭开SVM的神秘面纱,让机器学习的過程更加接地气!
原理就不多说了:hinge损失函数+L2正则化+梯度下降Python代码如下svm.py【注意,为了减少代码量替身阅读效率,省掉了很多鲁棒性检測的代码】:
EPS = 0. # 很小的数字用于判断浮点数是否等于0 #每次迭代随机选择一个训练样本 #更新权重, lr是学习速率 主函数:设置参数=>导入数据=>训练=>輸出结果 lr = 0.01; #lr, 是学习速率,用于调整训练收敛的速度 #导入测试集&训练集附:手工编的少量测试集和训练集数据: , 非常简陋的数据可以简单用作測试。
参考:飞旋的世界SVM的C代码实现做了一些修正。