前面提到了使用 TensorFlow 进行线性回归以及学习率、迭代次数和初始化方式对准确率的影响,这次来谈一下如何使用 TensorFlow 进行 Logistics Regression(以下简称 LR)。关于LR的理论内容我就不再赘述了,网上有很多资料讲,这里我就写下 LR 所用的损失函数:
其实整个程序下来和线性回归差不多,只不过是损失函数的定义不一样了,当然数据也不一样了,一个是用于回归的,一个是用于分类的。
数据集
数据集不再是经典的MNIST数据集,而是我在UCI上找的用于二分类的数据集,因为我觉得老用经典的数据集不能很好的理解整个程序。数据集可以从这里下载,数据集是关于房屋居住的,给出一些影响房屋居住的因素和是否居住(二分类),例如光照、温度等。数据集有3个txt文件,本篇使用的是datatraining.txt,数据量是8143×7,删除日期数据,然后按照75:25的比例拆分成训练集和测试集,然后做一些必要的reshape。
数据集大致是这样子的:
代码
1 | from __future__ import print_function, division |
结果
1 | Epoch: 0001 cost= 0.402052676091 |

可以看到最终准确率达到了97%,这里注意标签要进行one-hot编码。
与sklearn的比较
我用相同的数据集使用sklearn实现了LR,
1 | clf = LogisticRegression() |
结果准确率是0.98624754420432215,而且训练时间大为缩短。
END
阅读全文想必学过机器学习的人都知道,学习率、训练迭代次数和模型参数的初始化方式都对模型最后的准确率有一定的影响,那么影响到底有多大呢?
我初步做了个实验,在 TensorFlow 框架下使用 Logistics Regression 对经典的 MNIST 数据集进行分类。
使用sklearn库可以很方便的实现各种基本的机器学习算法,例如今天说的逻辑斯谛回归(Logistic Regression),我在实现完之后,可能陷入代码太久,忘记基本的算法原理了,突然想不到 coef_ 和 intercept_ 具体是代表什么意思了,就是具体到公式中的哪个字母,虽然总体知道代表的是模型参数。
阅读全文
今天来说一下机器学习库 TensorFlow 的在 Ubuntu14.04 64位下的安装。
阅读全文在亚马逊上买了Peter Flach教授写的段菲博士翻译的《机器学习》一书,开始机器学习之旅。开始之前,先介绍下Peter Flach教授:
阅读全文
今天在做《数理统计》关于线性回归的作业,本来用R已经做出来了,但是由于最近使用matlab很多,所以也想看看用matlab怎么做。
阅读全文