tf.contrib.learn.DNNRegressor
是 TensoFlow 中实现的一个神经网络回归器。一般神经网络用于分类问题的比较多,但是同样可以用于回归问题和无监督学习问题。
阅读全文
关于什么是 XGBoost
,我在这里不再解释,如果有时间的话再写一篇文章来解释,在数据科学里非常有用。大家可以参考 Tianqi Chen 的论文 XGBoost: A Scalable Tree Boosting System ,本篇文章只是在 Windows 10 和 Ubuntu 上安装 XGBoost
的 Python 包的方法,Ubuntu 版本为 16.04 LTS,Python 版本均为 3.5,Anaconda。
奇异值分解(Singular Value Decomposition,SVD)是一种矩阵分解(Matrix Decomposition)的方法。除此之外,矩阵分解还有很多方法,例如特征分解(Eigendecomposition)、LU分解(LU decomposition)、QR分解(QR decomposition)和极分解(Polar decomposition)等。这篇文章主要说下奇异值分解,这个方法在机器学习的一些算法里占有重要地位。
阅读全文
前面 有篇博文讲了多层感知器,也就是一般的前馈神经网络,文章里使用 CIFAR10 数据集得到的测试准确率是 46.98%。今天我们使用更适合处理图像的卷积神经网络来处理相同的数据集 - CIFAR10,来看下准确率能达到多少。
本文代码基于 TensorFlow 的官方文档 做了些许修改,完整代码及结果图片可从 这里 下载。
这篇 文章是对本文的一个升级,增加了 TensorBoard 的实现,可以在浏览器中查看可视化结果,包括准确率、损失、计算图、训练时间和内存信息等。
阅读全文主成分分析(PCA)是一种常用的数据降维方法,可以将高维数据在二维或者三维可视化呈现。具体原理我在这里就不再详述,网上有很多教程都不错,可以参考 这里 或者 PCA 的维基百科页面。
阅读全文前面提到了使用 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_
具体是代表什么意思了,就是具体到公式中的哪个字母,虽然总体知道代表的是模型参数。
阅读全文