机器学习
机器学习入门及总结
萤火虫之暮
这个作者很懒,什么都没留下…
展开
-
数据预处理:读取文件数据,并存为python数组
文件的简单读取# 定义一个将文件中的数据转化为数组的类import numpy as npclass DataUtil:# =============================================================================# 从文件中读取数据# 5个参数:数据集的名称,数据集的路径,训练样本数,类别所在列,是否打乱数据 #...原创 2018-12-26 19:49:20 · 1760 阅读 · 0 评论 -
数据预处理:原始数据集快速分类的方法,numpy的使用技巧,数据的row=mask的column
问题假如数据集有3类,怎么把一个庞大的数组集3类,放在不同的数组里。分析首先庞大数据集分类,肯定不能一个一个遍历,而且强烈避免个人的操作,需要借助于numpy处理。示例数据集,可以看出数据集为3类,我们要x也分成3类x = [[1,2],[2,9],[3,9],[4,4],[5,9],[6,6],[7,7],[8,8],[9,9]]y = [0, 0, 0, 1, 1, 1, 2, ...原创 2018-12-26 15:52:45 · 1287 阅读 · 0 评论 -
数据预处理:原始数据集,特征数值化,特征值数值化
原始数据集,特征数值化在原始数据集中,feature是多种多样的,为了方便处理,我们必须把feature数值化。示例:x=[[黄色,小,成人,用手打],[黄色,小,成人,用脚踩],[黄色,小,小孩,用手打],[黄色,小,小孩,用脚踩],[黄色,大,成人,用手打],[黄色,大,成人,用脚踩],[黄色,大,小孩,用手打],[黄色,大,小孩,用脚踩],[紫色,小,成人,用手打],...原创 2018-12-26 16:32:36 · 10913 阅读 · 2 评论 -
机器学习:贝叶斯分类器,朴素贝叶斯,拉普拉斯平滑
数学基础:数学基础是贝叶斯决策论Bayesian DecisionTheory,和传统统计学概率定义不同。频率学派认为频率是是自然属性,客观存在的。贝叶斯学派,从观察这出发,事物的客观随机性只是观察者不知道结果,也就是观察者的知识不完备,对于知情者而言,事物没有随机性,随机性的根源不是来源于事物,而是来自于观察者对事物的只是状态。从这个角度而言,贝叶斯学派是唯心主义,频率学派是唯物主义。...原创 2018-12-25 16:56:08 · 1412 阅读 · 0 评论 -
机器学习:Regression,第一个简单的示例,多项式回归
# -*- coding: utf-8 -*-# 导入需要的库import numpy as npimport matplotlib.pyplot as plt# 定义存储输入数据x,目标数据yx,y = [],[]# 遍历数据集,并把数据按照顺序存在对应的list# 在文件中遍历,文件是一行一行的,每次读取的是一行数据for sample in open("_Data/p...原创 2018-12-25 15:28:53 · 324 阅读 · 0 评论 -
机器学习:使用numpy实现数据增强(Data Augmentation)
文章目录数据增强原图水平翻转左右上下平移增加噪声数据增强图像数据增强一般是大多数人会采用的方法之一,这是由于深度学习对数据集的大小有一定的要求,若原始的数据集比较小,无法很好地满足网络模型的训练,从而影响模型的性能,而图像增强是对原始图像进行一定的处理以扩充数据集,能够在一定程度上提升模型的性能。一般的方法:1、对图片进行水平翻转;2、对图片的光泽、色泽进行变换;3、将一张较大的图片通...原创 2019-01-19 22:36:43 · 4789 阅读 · 0 评论 -
机器学习:多层感知机原理及实现
@[TOC]MLPMLP的向量形式:MLP的损失函数:MLP的dw:实现import numpy as npimport matplotlib.pyplot as pltclass MultiPerceptron: def __init__(self): # the shape of w :(n) self._w = None ...原创 2019-01-06 14:25:04 · 2104 阅读 · 1 评论 -
机器学习:神经网络矩阵形式,向量形式,矩阵求导
神经网络向量形式:y=wT.x+by = w^T . x +by=wT.x+b这只是一个样本的处理,行向量点乘列向量。而我们实际操作使用的是矩阵形式。神经网络矩阵形式:矩阵形式X放在前面,所以都是x.dot(),我们使用numoy处理都是使用矩阵。神经网络损失函数:求导:求导前准备:以下非常重要要当做基本公式使用.公式1:公式2:公式3:求解析解:使用三个公...原创 2019-01-07 11:22:23 · 2107 阅读 · 0 评论 -
机器学习:SVM多分类,SVM回归(SVR)
文章目录分类和回归的关系:多分类问题处理的普适的方法:一对多(One VS Rest):一对一(One vs One):有向无环图方法(Directed Acyclic Graph Method)支持向量机回归(SVR):SVR优化目标:SVM 优化目标:分类和回归的关系:SVM二分类,SVM多分类,SVM回归(SVR):这三个分类类别是从少到多,从离散到连续的过程。多分类问题处理的普适的方...原创 2019-01-06 10:29:52 · 7883 阅读 · 0 评论 -
机器学习:SVM代码实现,第一个变量选择最偏离KKT条件的样本点,第二个变量随机
文章目录SMO算法描述:代码实现确定第一个变量:确定第二个变量:更新alpha值:更新dw,db,y^,注意参数传入的方法:主程序:SMO算法描述:代码实现确定第一个变量: # 找第一个样本 def _pick_first(self,tol): # mask,漏出需要的元素 con1 = self._alpha >0 ...原创 2019-01-05 16:52:04 · 582 阅读 · 0 评论 -
机器学习:SVM代码实现,朴素实现基础上的优化
SVM代码实现,朴素实现基础上的优化:因为二次凸优化已经把解析结果明白表现出来了,所以优化只能体现在两个变量的选择上,或者说是两个样本的选择上:1、第一个变量的选择:这次实现也并不是选择最不满足KKT条件的样本点,而是优先使用边界上的样本点也就是0<alpha<C的样本点,假如边界上的样本点均满足KKT条件,就遍历全体样本去找不满足的样本点2、第二个变量的选择:选择和第一个样本误...原创 2019-01-04 16:29:43 · 249 阅读 · 0 评论 -
机器学习:SVM的最朴素代码实现,第一个变量遍历样本获得,第二个变量随机选择
文章目录SVM的最朴素代码实现:代码实现:第一个变量遍历样本获得,主要步骤如下:第二个变量随机选择:计算w:其他:SVM的最朴素代码实现:算法简单步骤:1、遍历样本作为第一个变量a1,根据旧的a和b求得误差,满足KKT条件换下一个样本;不满足,2、不满足的话,随机选取第二个变量a2(不能和第一个相同);3、根据解析式求得a2;4、根据解析式求a2的约束上界和下界;5、根据4的约束求得...原创 2019-01-04 16:12:26 · 355 阅读 · 1 评论 -
机器学习:SVM训练,SMO算法描述,启发式选择样本或变量
文章目录优化目标:优化步骤:对偶问题本质:选择样本点标准:如何判断样本点是否满足KKT条件?满足和不满足KKT的情况量化不满足KKT条件的程度:优化目标:针对上述问题,使用比较成熟的二次凸优化的问题,类似于坐标下降方式,每次只优化一个方向,其他方向固定,在这个特定的问题里因为约束条件限制变量存在依赖关系,每次选择两个变量,这两个变量存在依赖关系,可以转化成一个变量,类似于坐标下降方法求解:...原创 2019-01-04 15:46:51 · 1685 阅读 · 4 评论 -
机器学习:核方法
文章目录Kernel Trick两族核函数族使用示例:感知机的对偶算法感知机的对偶算法非核方法感知机的对偶算法非核方法使用示例:SVM的原始问题的核方法使用示例:SVM的对偶问题的核方法Kernel Trick核技巧的思想如下:1、将算法表述成样本点内积的组合(这经常能通过算法的对偶形式实现)2、设法找到核函数K(xi,xj),它能返回样本点xi、xj被ϕ作用后的内积3、用K(xi,xj...原创 2019-01-03 10:08:11 · 742 阅读 · 0 评论 -
机器学习:SVM算法的对偶形式
文章目录楔子广义拉格朗日函数原问题和对偶问题楔子广义拉格朗日函数问题:转化为无约束的拉格朗日形式:原问题和对偶问题primal problem opt (原始问题最优化(极小值)):dual problem opt (对偶问题最优化(极大值)):...原创 2019-01-02 18:56:34 · 1760 阅读 · 0 评论 -
机器学习:梯度下降法,几种实现策略
梯度下降法梯度下降法是求解***无约束最优化问题***的最常见的手段之一。所以前面提到的软间隔SVM里面转换为hingeloss之后就可以使用梯度下降法实现了。...原创 2019-01-02 16:07:06 · 611 阅读 · 0 评论 -
机器学习:SVM、软间隔、随机梯度下降SVM线性算法
文章目录SVM目标函数SVM目标函数推导函数间隔:几何间隔:软间隔、松弛HingeLoss和软间隔随机梯度下降算法线性SVM的算法描述:SVM目标函数SVM目标函数推导函数间隔:几何间隔:SVM 算法就可以比较自然地叙述为:最大化(几何间隔)d、使得:不妨假设函数间隔为1,这样就得到最开始的优化目标方程。约束条件中:yi(w.x+b)−1&amp;amp;gt;=0y_i(w . ...原创 2019-01-02 14:31:49 · 2786 阅读 · 0 评论 -
机器学习:从感知机模型体会随机梯度下降
文章目录感知机模型:感知机模型的随机梯度下降:感知机模型的算法描述:感知机的代码实现:感知机模型:寻找一个超平面使数据集线性可分,寻找超平面的过程可以转化为最小化一个损失函数的过程:如何的来的?二元分类,y = +1使w⋅xi+b>0, y = -1使w⋅xi+b<0。注意:需要强调的是,|w⋅xi+b|所描述的“相对距离”和我们直观上的“欧氏距离”或说“几何距离”是不一样...原创 2019-01-01 15:42:43 · 501 阅读 · 0 评论 -
机器学习:AdaBoost算法及其实现
文章目录楔子算法描述:adaboost里的样本权重和话语权算法描述AdaBoost的实现:楔子前面提到boosting算法为一类算法,这一类算法框架分为3步:1、训练一个弱分类;2、根据分类结果调整样本权重;3、最后决策时,根据弱模型的表现来决定其话语权。那么这里面就有2个关键点:1、如何调整样本权重;2、如何根据弱模型的表现来决定其话语权。算法描述:adaboost里的样本权重和话...原创 2019-01-01 12:56:40 · 1712 阅读 · 0 评论 -
机器学习:随机森林算法及其实现
文章目录随机森林算法描述:如何对features进行bootstrap?算法代码实现:随机森林算法描述:如何对features进行bootstrap?我们需要一个feature_bound参数,每次把可以选择的features打乱,从种选出log(d)个,每次选择feature划分时都是这么选择。原来的决策树代码,是在结点的可选node维度列表里选取:for feat in self....原创 2018-12-31 15:18:55 · 1288 阅读 · 0 评论 -
机器学习:集成学习(ensemble),bootstrap,Bagging,随机森林,Boosting
文章目录集成学习的朴素思想Bootstrap理论Bagging随机森林Boosting集成学习的朴素思想集成学习基于这样的思想:对于比较复杂的任务,综合许多人的意见来进行决策会比“一家独大”要更好。换句话说、就是通过适当的方式集成许多“个体模型”所得到的最终模型要比单独的“个体模型”的性能更优。我们面临两个问题:如何选择、生成弱分类器和如何对它们进行提升(集成)?第一种做法期望各个弱分类器...原创 2018-12-31 14:28:16 · 1215 阅读 · 0 评论 -
机器学习:决策树过拟合与剪枝,决策树代码实现(三)
楔子上次讲到:至此node类的变量和方法基本实现完毕,为什么说基本呢,因为真正的后剪枝还没将,他还需要在node类里添加一些方法。这一次来讲一下后剪枝。首先,后剪枝是对整个生成树操作...原创 2018-12-31 12:03:40 · 3299 阅读 · 1 评论 -
机器学习:结点的实现,决策树代码实现(二)
文章目录楔子定义变量:定义方法获得划分的feature生成结点停止条件及其处理fit()生成树剪枝楔子前面已经实现了各种信息量的计算,那么我们划分的基本有了,那么我们需要使用这个基本来划分,来生成决策树,树的基本单元是node,这里的node是一堆数据的集合+他们内在的方法。由于需要处理三种算法,我们最好能使用基类,该类应该至少包含:1、选择划分的feature;2、根据基准划分数据生成新...原创 2018-12-30 11:17:21 · 433 阅读 · 0 评论 -
机器学习:样本权重的理解
样本权重在feed data的过程中,我们总是会用到samle_weight,样本权重的直观理解为:样本权重给出了各个样本的重要性。具体是怎么体现的了,首先样本权重不是把样本乘以一个系数,这样的话feature值不就改变了,他改变的是该样本的数量,本来一个样本是1个,现在变成了0.8个,或者1.5个,样本数量现在可以取小数个了,对应的这个样本在总体样本中的占比也会变化。如下代码就能体现,样本...原创 2018-12-29 11:48:26 · 14801 阅读 · 3 评论 -
机器学习:信息熵,基尼系数,条件熵,条件基尼系数,信息增益,信息增益比,基尼增益,决策树代码实现(一)
初始化,涉及到使用的变量:# =============================================================================# 计算信息量的相关算法# =============================================================================import mathi...原创 2018-12-27 20:00:30 · 2697 阅读 · 0 评论 -
机器学习:决策树及ID3,C4.5,CART算法描述
文章目录概念理解熵:条件熵:信息增益,互信息:信息增益比基尼指数ID3算法算法描述概念理解熵:条件熵:H(y∣A)H(y|A)H(y∣A) : A 是特征,y是目标或者分类,“条件”可以理解为 A对y的限制,假如:feature A有m个featureValue, H(y∣A)H(y|A)H(y∣A) 就是在取feature A有m个featureValue的值下,y的不确定和。H(y∣...原创 2018-12-27 13:25:44 · 389 阅读 · 0 评论 -
机器学习:朴素贝叶斯分类器,决策函数向量化处理,mask使用技巧
文章目录前面实现的朴素贝叶斯分类器,决策函数是非向量化的:借助于numpy向量化处理,相当于并行计算,注意mask使用技巧,用途较广:前面实现的朴素贝叶斯分类器,决策函数是非向量化的:前面提到过大数据处理,尽量避免个人的遍历等一些函数的操作,要借助numpy的强大功能,如下预测函数是按照我们平常习惯写的,先处理一个数据,处理多个数据,就是重复调用单个处理函数。# ==============...原创 2018-12-27 10:35:53 · 455 阅读 · 0 评论 -
机器学习:朴素贝叶斯分类器代码实现,决策函数非向量化方式
文章目录朴素贝叶斯离散型的算法描述:代码实现:实现一个NaiveBayes的基类,以便扩展:实现离散型朴素贝叶斯MultiomialNB类:实现从文件中读取数据:代码测试:朴素贝叶斯离散型的算法描述:代码实现:看算法描述比较好实现,但是实际实现起来,还是有一定难度喔有一点需要注意,在看代码或者实现代码过程中,你必须知道矩阵的每一个纬度是什么含义,这是写代码看代码的基础注释比较详细,...原创 2018-12-26 20:20:23 · 792 阅读 · 0 评论