logistic回归一般用于二分类问题,比如判断一封邮件是否为垃圾邮件,判断照片中的人是男是女,也可以用于多分类问题,比如k类别,就进行k次logistic回归,下面是实现的一个实例。
思想也和简单,做十次逻辑回归,第一次将0作为一类,其他数字为另外一类,如此类推
1.读取内容并返回m*1024形式的样本以及对应的数字
1 | def loadData(direction): |
- sigmoid(inX)函数
1 | def sigmoid(inX): |
然后用梯度下降算法得到回归系数:
alpha是步长,maxCycles是迭代步数。
1 | def gradAscent(dataArray,labelArray,alpha,maxCycles): |
然后我们就得到了权重
最后我们进行分类,我们这里直接用sigmoid函数进行分类。
1 | def classfy(testdir,weigh): |
然后我们把这些函数整合起来
1 | def digitRecognition(trainDir,testDir,alpha=0.07,maxCycles=10): |
总结
可以看出我只对01进行了分类,而且做法太直接了,算是最基础的题目了,数据分析、特征工程直接忽略了,原因很简单,菜,而且时间也有限,不过这种类型的用逻辑回归处理不太好,所以有时间我会学习并复制另外一种解法。