感知机模型的算法自编程实现和sklearn实现
自编程实现
W定义成None,因为W的维度随着x的纬度而变化,b是一个常数自己定义,学习率可以自己定义
首先
现获取训练集的列,就是有多少笔X。随机梯度下降,每次都选择检测到的一个误分类点进行更新
sklearn实现
注意:coef蜀兴中保存的是w,intercept中保存的是b,iter属性保存的是迭代的次数。
score方法可以算出准确率(训练数据,真是的标签值)
创建对象的时候,可以指定参数:
指定参数的值:
迭代次数和种植条件
学习率:
可以看到学习率没有起到作用:因为我得出指定的是0,所以w,b更新的时候一直都是学习率的整数倍,这时候学习率对最终的结果是没有影响的,是可以约掉的。
当w,b的初始值不是0的时候,这时候就会有影响了呢。
正则化项:
防止过拟合的。
混合正则项Elasticnet:入L1+(1-入)L2
L1会让特征值更加稀疏,L2保证权值不要方差那么大
正则化系数太大的话,有可能产生欠拟合的现象
对偶算法
原始形式是随机梯度下降。模型复杂度应该是和维度d相关的
对偶形式是和样本的N的个数相关,模型复杂度
可以对比一下样本数量和样本的维度