
机器学习
zhenghaitian
这个作者很懒,什么都没留下…
展开
-
【机器学习】对 逻辑回归 中,损失函数 设为 似然函数(乘以-1)的原因思考
参考了很多文章,绝大多数都是从数学公式上讨论二者的关系。这让之前没怎么接触过似然函数的我,感到非常费解。本着简单的原则,从 本质思想 上梳理了下二者的关系,就我自己而言,理解起来方便多了。首先看 伯努利分布下,似然函数的意义: 在知道模型和样本的前提下,求出 样本为正的概率为p 的可能性(即似然值)。如硬币试验,连续2次为正。 模型是硬币实验(即结果非0即1,满足伯努利分布), 样本是2次为正...原创 2018-07-09 14:38:08 · 1225 阅读 · 0 评论 -
【机器学习】GMM(一元高斯混合聚类)—— python3 实现方案
看了很多博文,包括《统计学习知识》和西瓜书上对GMM算法的推导,总有些重要的步骤被略去(比如从公式一推到公式二,书上直接给出结果,却没有具体步骤),导致理解整个算法非常困难。后来幸运地发现一篇博文,使用了对我而言易于理解的语言,重要把整个推导过程疏通成功,最后在纸上手推了一遍,真是酣畅淋漓!算法实现很简单,结构跟K-均值形似,参数的推导过程不用体现在代码上,直接根据推导出来的公式计算就行(所以说...原创 2018-11-09 10:13:26 · 1834 阅读 · 0 评论 -
【机器学习】GBDT回归树(基于CART单层决策树)—— python3 实现方案
本例实现了GBDT以平方误差为损失函数的回归功能,目的在于疏通算法流程。至于其他损失函数,只需要修改叶子节点的计算公式即可。对算法主要框架影响不大。基学习器选择的是单层CART回归树,分类准则是方差最小化。对于分类问题,同样也使用CART回归树,有别于回归问题的是,需要再添加一段将计算结果转换成概率的代码,与阀值比较后确定分类结果,该过程与逻辑回归类似。另外分类问题的损失函数一般是对数损失或指...原创 2018-11-06 22:17:05 · 670 阅读 · 0 评论 -
【机器学习】PCA(特征值降维和奇异值降维)—— python3 实现方案
推荐这篇博文https://blog.youkuaiyun.com/shizhixin/article/details/51181379看了许多,这篇讲的更容易理解些,排版清晰,公式推导严谨。但纵观那么多文章,却没有提及怎么选择 维度“K”的,吴恩达的机器学习课程,提到用平方误差和 与 训练集的方差 的比例,来衡量选取k维后,对原数据的保留程度,但没有详细说明怎么做。后来还是在《机器学习实战》上找到了方法...原创 2018-11-09 16:12:07 · 1285 阅读 · 0 评论 -
【机器学习】SVM(基于SMO算法)—— python3 实现方案
在上个版本的基础上修订,改正了一些错误,优化了一些代码结构,修改了一些注释。不厌其烦的详细注释,对入门来说还是挺友好的哈,欢迎指正!测试数据是吴恩达机器学习课程svm章节的作业。分别用高斯核函数与线性核函数进行测试,可以发现高斯核函数的稳定性和准确率明显较线性核函数好。import numpy as npfrom sklearn import datasetsclass ...原创 2018-11-04 10:47:24 · 964 阅读 · 1 评论 -
【机器学习】LR(逻辑分类&softmax分类)—— python3 实现方案
包含sigmoid和softmax模型,优化算法为批量梯度下降法使用数据是吴恩达机器学习第二第三节的作业。import numpy as npfrom sklearn import preprocessingfrom sklearn import datasetsclass LogisticRegression: def __init__(self, learning_...原创 2018-11-02 13:44:47 · 1885 阅读 · 2 评论 -
【机器学习】DNN(三层多元分类模型)—— python3 实现方案
根据西瓜书《神经网络》章节反向传播的推导过程写成。书上推导了单样本的反向传播,本例实现了批量梯度下降,设置batch_size=1,就是单样本随机梯度下降。有别于其他分类算法的标签集,神经网络要对标签进行独热编码,在制作测试数据时要注意这点。本例使用sklearn生成的3000个3类别的训练数据,多次调试后,能达到90%的正确率。import numpy as npfrom s...原创 2018-11-10 18:43:02 · 3640 阅读 · 0 评论 -
【机器学习】朴素贝叶斯(多分类版本)—— python3 实现方案
根据《统计学习方法》第四章朴素贝叶斯算法流程写成,引入贝叶斯估计(平滑处理)。本例旨在疏通算法流程,理解算法思想,故简化复杂度,只考虑离散型数据集。如果要处理连续型数据,可以考虑将利用“桶”把连续型数据转换成离散型,或者假设连续型数据服从某分布,计算其概率密度来代替贝叶斯估计。《机器学习实战》的朴素贝叶斯算法,是针对文本处理(垃圾邮件过滤)的算法,是二元分类(y=0或y=1),且特征的取值...原创 2018-11-07 20:07:26 · 6369 阅读 · 5 评论 -
【机器学习】KNN(线性扫描 )—— python3 实现方案
线性扫描KNN算法 。测试数据集为sklearn生成的随机分类数据集import numpy as npfrom collections import Counterfrom sklearn import datasetsclass KNN: def __init__(self, k=1): self.k = k # 近邻数量 def train...原创 2018-11-07 22:17:02 · 372 阅读 · 0 评论 -
【机器学习】决策树(基于ID3,C4.5,CART分类回归树算法)—— python3 实现方案
内含3种算法的核心部分.没有找到很好的测试数据.但就理清算法思路来说问题不大剪枝算法目前只实现了CART回归树的后剪枝.import numpy as npfrom collections import Counterfrom sklearn import datasetsclass DecisionTree: def __init__(self, algori...原创 2018-11-05 13:09:38 · 2159 阅读 · 0 评论 -
【机器学习】随机森林(基于CART分类树)—— python3 实现方案
以CART分类树为基学习器的随机森林.实现了随机森林的主要思想,如选取k个特征,使用包外数据验证准确率,投票法确定预测类别等.这次使用sklearn的鸢尾花数据集,得到非常不错的模型.供参考import numpy as npfrom collections import Counterfrom sklearn import datasetsclass RandomFore...原创 2018-11-05 20:42:17 · 2896 阅读 · 0 评论 -
【机器学习】CNN(简化模型)—— python3 实现方案
import numpy as npfrom scipy.io import loadmatclass CNN: def __init__(self, layer1=2, learning_rate=0.1, iters=10000): self.layer1 = layer1 # 第一个卷积层卷积核的个数 self.iters = iters ...原创 2018-11-13 11:04:24 · 2379 阅读 · 0 评论 -
【机器学习】K-均值聚类(及二分K-均值聚类算法)—— python3 实现方案
参考《机器学习实战》,实现K均值聚类和二分K均值聚类。最后测试,对同一组数据,分别计算了两种算法的SSE(平方误差和),前者在150左右,后者在70左后。可见二分K-均值聚类的算法效果要好很多。import numpy as npimport pandas as pdclass KMeans: def __init__(self, k=4): self.k...原创 2018-11-08 12:01:37 · 1242 阅读 · 0 评论 -
【机器学习】Adaboost(基于单层决策树,分类)—— python3 实现方案
有别于《机器学习实战》,按照《统计学习知识》关于Adaboost的讲解,先单独写了所有需要计算的值的函数,如gm,alpha,error等,最后再训练函数里组合起来,这样更易于算法的理解。测试数据是用sklearn生成的分类数据,可完美运行。import numpy as npfrom sklearn import datasetsclass Adaboost: def __...原创 2018-11-06 15:19:17 · 1308 阅读 · 0 评论 -
【机器学习】LR(线性回归)—— python3 实现方案
import numpy as npfrom sklearn import datasetsclass LinearRegression: def __init__(self, learning_rate=0.01, lamb=0.0001, iters=10000): self.learning_rate = learning_rate # 学习速率,默认值为...原创 2018-11-01 13:18:02 · 1159 阅读 · 0 评论 -
【机器学习】word2vec(基于负采样的skip-Gram模型)—— python3 实现方案
import numpy as npfrom collections import Counterclass Word2vec: def __init__(self, dim=100, learning_rata=0.01, window_size=5, neg=10): self.dim = dim # 词向量维度 self.learning_...原创 2018-11-16 20:35:06 · 2425 阅读 · 0 评论