精华内容
下载资源
问答
  • 机器学习代码

    2014-03-24 00:38:35
    机器学习代码里面拥有有关机器学习的具体实现方法以及各种算法
  • 这篇文章将从以下四个方面讲解机器学习中的提升方法,完整的代码我整理在我的GitHub项目中,可以自行前往下载,要是能star就更好了呀~ 提升方法提升方法的基本思想Adaboost方法提升树代码实现 提升方法的基本思想 ...

    这篇文章将从以下四个方面讲解机器学习中的提升方法,完整的代码我整理在我的GitHub项目Machine-Learning-code中,可以自行前往下载,要是能star就更好了呀~

    提升方法的基本思想

    依旧从三个方面理解提升方法,然后从抽象到具体,给出提升方法的两个具体实例Adaboost方法和提升树,进一步加深对提升方法的理解
    模型:提升方法的基本模型是加法模型,既可以用作分类也可以用作回归,取决于基本函数,模型可以用数学表达式表示为:
    f(x)=m=1Mβmb(x;γm)f(x)=\sum_{m=1}^{M}\beta_mb(x;\gamma_m)
    其中b(x;γm)b(x;\gamma_m)为基函数,γm\gamma_m为基函数的参数,βm\beta_m为基函数的系数,通过上面的式子我们可以这样理解提升方法:原来的数据没有办法通过一个分类(回归)器解决,可以通过多个分类(回归)器各自解决一部分数据,然后通过不同的系数将这些分类(回归)器组合在一起,从而达到提升原来的分类(回归)器的效果
    策略:提升方法的策略就是在给定损失函数的情况下,使经验风险最小化,即:
    minβm,γmi=1NL(yi,m=1Mβmb(xi;γm))\min\limits_{\beta_m,\gamma_m}\sum_{i=1}^{N}L(y_i,\sum_{m=1}^{M}\beta_mb(x_i;\gamma_m))
    不同的损失函数和基函数组合就可以得到不同的提升方法,Adaboost方法和提升回归树方法就是损失函数分别取指数函数和平方损失函数得到的特例
    算法:要求解上述最下化问题比较复杂,因为涉及到多个基函数的参数和系数,因此我们采用前向分步算法来求解上述问题,因为模型是加法模型,我们可以从前向后,每次只求解一个基函数和对应的系数,然后固定前面的基函数和系数求解后面的函数和系数,这样逐步逼近优化目标函数,这样在具体的第m步我们只需要求解下面的损失函数:
    minβm,γmi=1NL(yi,βmb(xi;γm))\min\limits_{\beta_m,\gamma_m}\sum_{i=1}^{N}L(y_i,\beta_mb(x_i;\gamma_m))

    Adaboost方法

    我们取损失函数为对数损失函数:
    L(y,f(x))=exp[yf(x)]L(y,f(x))=\exp[-yf(x)]
    基函数为分段函数:
    b(x;γm)={1x<γm1x>γmb(x;\gamma_m)=\left\{ \begin{array}{lr} 1&x<\gamma_m\\ -1&x>\gamma_m \end{array} \right.
    就可以得到adaboost方法,运用前向分步算法求解损失函数最小化,整理后可以得到如下求解过程:
    在这里插入图片描述
    在这里插入图片描述

    提升树

    这里我们以提升回归树举例,首先写出提升算法的模型表示:
    fM(x)=m=1MT(x;Θm)f_M(x)=\sum_{m=1}^{M}T(x;\Theta_m)
    这里T(x;θm)T(x;\theta_m)为决策树,我们取只有两个叶节点的简单决策树,然后损失函数取平方损失函数,利用前向分步算法,得到每一步需要优化的函数:
    Θ^m=arg minΘmi=1NL(yi,fm1(xi)+T(xi;Θm))=arg minΘmi=1N(yifm1(xi)T(xi;Θm))2=arg minΘmi=1N(riT(xi;Θm))2\begin{aligned}\hat{\Theta}_m&=\argmin_{{\Theta}_m}\sum_{i=1}^{N}L(y_i,f_{m-1}(x_i)+T(x_i;\Theta_m))\\&=\argmin_{{\Theta}_m}\sum_{i=1}^{N}(y_i-f_{m-1}(x_i)-T(x_i;\Theta_m))^2\\&=\argmin_{{\Theta}_m}\sum_{i=1}^{N}(r_i-T(x_i;\Theta_m))^2 \end{aligned}
    其中fm1(x)=i=1m1T(x;Θi)f_{m-1}(x)=\sum_{i=1}^{m-1}T(x;\Theta_i),ri=yifm1(xi)r_i=y_i-f_{m-1}(x_i)为当前模型预测的误差,所以对决策树T(x;Θm)T(x;\Theta_m)来说只需要拟合误差就可以了,于是可以得到下面的求解算法:
    在这里插入图片描述
    如何拟合误差呢,尝试不同的决策点,取使得平方损失最小的决策点即可

    代码实现

    下面主要给出训练过程的代码:

    	def train(self):
    		predict = np.zeros(self.n)
    		for i in range(self.treenum):
    			tree = {'e': 1}
    			for r in self.rule:
    				if r == 'lessOne':
    					L, H = 1, -1
    				else:
    					L, H = -1, 1
    				for d in self.div:
    					for i in range(self.m):
    						#计算误差率和Gm(x)的输出
    						Gx, e = self.cal_E_Gx(L, H, d, i)
    						if e < tree['e']:
    							tree['div'] = d 
    							tree['rule'] = r
    							tree['feature'] = i
    							tree['e'] = e 
    							tree['Gx'] = Gx
    			e = tree['e']
    			#计算alpha
    			alpha = 1 / 2 * np.log((1-e) / e)
    			tree['alpha'] = alpha
    			Gx = tree['Gx']
    			#更新权重
    			self.W = self.W * np.exp(-alpha * self.label * Gx)
    			self.W /= sum(self.W)
    			predict += alpha * Gx
    			self.trees.append(tree)
    			if sum((np.sign(predict) != self.label).astype('int')) == 0:
    				break
    		print('total tree num is {}'.format(len(self.trees)))
    

    完整代码可以去我的GitHub项目Machine-Learning-code中下载,欢迎star~

    展开全文
  • 有个非盈利开源学习组织Datawhale开源了一个github仓库:“南瓜书(PumpkinBook)”,对《机器学习》(西瓜书)里比较难理解公式加以解析,以及对部分公式补充具体的推...

    有个非盈利的开源学习组织Datawhale开源了一个github仓库:“南瓜书(PumpkinBook)”,对《机器学习》(西瓜书)里比较难理解的公式加以解析,以及对部分公式补充具体的推导细节。

    一、前言

    周志华老师的《机器学习》(西瓜书)是机器学习领域的经典入门教材之一,周老师为了使尽可能多的读者通过西瓜书对机器学习有所了解, 所以在书中对部分公式的推导细节没有详述,但是这对那些想深究公式推导细节的读者来说可能“不太友好”。

    二、南瓜书

    近日有个github仓库“南瓜书(PumpkinBook)”对西瓜书里比较难理解的公式加以解析,以及对部分公式补充具体的推导细节。

    该仓库拥有者Datawhale是一个非盈利的开源学习组织,致力于构建一个纯粹的学习圈子,帮助学习者更好地成长。目前已经更新完前7章,并诚挚欢迎每一位西瓜书读者前来参与完善本书:一个人可以走的很快,但是一群人却可以走的更远。

    仓库链接:

    https://github.com/datawhalechina/pumpkin-book

    在线阅读地址:

    https://datawhalechina.github.io/pumpkin-book/

    三、目录

    • 第1章 绪论

    • 第2章 模型评估与选择

    • 第3章 线性模型

    • 第4章 决策树

    • 第5章 神经网络

    • 第6章 支持向量机

    • 第7章 贝叶斯分类器

    • 第8章 集成学习(即将更新)

    • 第9章 聚类(即将更新)

    • 第10章 降维与度量学习(即将更新)

    • 第11章 特征选择与稀疏学习(即将更新)

    • 第12章 计算学习理论(即将更新)

    • 第13章 半监督学习(即将更新)

    • 第14章 概率图模型(即将更新)

    • 第15章 规则学习(即将更新)

    • 第16章 强化学习(即将更新)

    四、内容截图

    五、致谢

    感谢开源组织的无私奉献,世界有你们更美好!

    仓库链接:

    https://github.com/datawhalechina/pumpkin-book

    请关注和分享↓↓↓ 

    本站的知识星球(黄博的机器学习圈子)ID:92416895

    目前在机器学习方向的知识星球排名第一

    往期精彩回顾

    展开全文
  • 基于opencv自带人脸检测模型,实现简单人脸检测功能,可作为机器学习初学者练手使用。简单易学,具体的方法及代码如下。 1、运行结果 输入原图 输出结果 2、工程需要加载opencv库如下: 3、用到...

    基于opencv自带的人脸检测模型,实现简单的人脸检测功能,可作为机器学习初学者练手使用。简单易学,具体的方法及代码如下。

    1、运行结果

    输入原图

    输出结果

    2、工程需要加载的opencv库如下:

    3、用到的人脸检测器

    4、具体实现代码

    #include <opencv.hpp>
    #include <opencv2/core/core.hpp>
    #include <iostream>
    
    using namespace cv;
    using namespace std;
    
    #define  MULTI_TARGET  //控制切换检测目标数
    
    int main()
    {
    	CascadeClassifier faceDetector;
    	string faceCascadeFilename = "haarcascade_frontalface_default.xml";
    	faceDetector.load(faceCascadeFilename);     //加载人脸检测器
    
    	if (faceDetector.empty())
    	{
    		cout<<"load faceDetector failed!"<<endl;
    		return -1;
    	}
    
    	Mat srcImg = imread("..\\srcImg.jpg");
    	if(srcImg.empty())
    	{
    		cout<<"read image failed!"<<endl;
    		return -1;
    	}
    	imshow("srcImg", srcImg);
    
    	Mat grayImg;
    	cvtColor(srcImg, grayImg, CV_RGB2GRAY);   //转成灰度图
    
    	vector<Rect> detectionResults;
    	float searchScaleFactor = 1.1f;
    	int minNeighbors = 3;
    	Size minFeatureSize(25, 25);
    
    #ifdef MULTI_TARGET
    	int flags = CASCADE_SCALE_IMAGE;	     //检测多个目标
    #else
    	int flags = CASCADE_FIND_BIGGEST_OBJECT|CASCADE_DO_ROUGH_SEARCH;	//只检测最大目标
    #endif
    
    	faceDetector.detectMultiScale(grayImg, detectionResults, searchScaleFactor, minNeighbors, flags, minFeatureSize);  //进行人脸检测
    
    	Mat dstImg = srcImg.clone();
    	Mat detectionRect;
    	for (int i = 0; i < detectionResults.size(); i++)
    	{
    		if (detectionResults[i].height > 0 && detectionResults[i].width > 0)
    		{
    			detectionRect = grayImg(detectionResults[i]);
    			rectangle(dstImg, detectionResults[i], CV_RGB(0, 255, 0), 2, 8, 0);   //画检测框
    		}
    	}
    
    	imshow("dstImg", dstImg);
    	waitKey(0);
    	return 0;
    }

     

    展开全文
  • 具体见链接:距离度量&二分类损失函数公式和python代码实现 文章来源于微信公众号【机器学习初学者】

    具体见链接:距离度量&二分类损失函数的公式和python代码实现

    文章来源于微信公众号【机器学习初学者】

    展开全文
  • 前几次笔记介绍了具体实现一个机器学习模型时候应该如何操作,首先是快速实现一个较为简单模型,然后通过绘制学习曲线去判断目前模型存在什么问题,分析应该如何改进,这次笔记就将实现这一整个过程。...
  • 有个非盈利开源学习组织Datawhale开源了一个github仓库:“南瓜书(PumpkinBook)”,对《机器学习》(西瓜书)里比较难理解公式加以解析,以及对部分公式补充具体的推...
  • 二、具体 1、安装 默认可以通过pip安装,若是安装不上可以通过https://www.lfd.uci.edu/~gohlke/pythonlibs/网站下载相关安装包,将安装包拷贝到Anacoda3安装目录Scrripts目录下, 然后pip install 安装包安装...
  • 另外,看系列名字就知道,本系列只介绍现有框架用法,不涉及具体算法,并不适合想深入学习的同学,如果你只是想用别人写好算法框架来实现一些有意思想法,那么不妨来试试看。 环境搭建 本例主要使用scikit-...
  • 这里先引入模型评价相关概念以及相应公式,让大家一个大概理解,知道有这么一回事,在后续文章中我将结合具体实例进行详细讲解。一、分类评价指标混淆矩阵TP: 将正例预测为正例(预测正确)FN: 将正例预测为...
  • 本文实例为大家分享了python机器学习实现决策树的具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- Created on Sat Nov 9 10:42:38 2019 @author: asus 决策树 目的: 1. 使用决策树模型 2. 了解...
  • 决策树的学习通常包含三个步骤:特征选择,决策树生成,决策树剪枝。 优点:计算复杂度不高,输出结果易于理解,对中间值缺失值不敏感,可以处理不相关特征数据。 缺点:可能会产生过度匹配问题。 使用...
  • 本节主要介绍的是libFM源码分析的第五部分之一——libFM的训练过程之SGD的方法。5.1、基于梯度的模型训练方法在libFM中,提供了两大类的模型训练方法...fm_learn_sgd类是所有基于梯度的训练方法的父类,其具体的代码
  • 本文首发于csdn: https://blog.csdn.net/varyshare/article/details/90576115初学者机器学习资料分享Q群(718566626)k-means算法中文名叫做k均值。它是一种聚类算法,这是什么意思呢?就是现在我有一堆数据,但是我...
  • k最邻近法之应用篇–分类问题 Keyword:knn算法,机器学习,数据可视化 目录k最邻近法之应用篇--分类问题Introduction1 数据观测、数据可视化1.1 探索数据1.2 ...【机器学习0】最简单的机器学习算法之一 KNN–k最邻近
  • 《统计学习方法》第二版的代码实现 李航老师编写的《统计学习方法》全面系统地介绍了统计学习的主要方法,特别是监督学习方法,包括感知机,k近邻法,朴素贝叶斯法,决策树,逻辑斯谛回归与支持除第1章概论和最后一...
  • 但是具体每一个数据点所属分类我就不知道了。此时就需要用k-means聚类算法,它可以把原先数据分成k个部分,注意这k个部分包含数据点数量不一定相等。相似数据就聚在一起。 k-means算法操作步骤 1. 设定k...
  • 最近开始啃《机器学习实战》,把其中第二章的K近邻算法的代码笔记整理如下。 kNN分类算法: 对未知类别属性的数据集中的每个点依次执行以下操作: 1.计算已知类别数据集中的点与当前点的距离; 2.按照距离递增...
  • 上一篇具体按照第一个链接,介绍了训练强分类器过程; 本篇文章,mask另一段代码,并用强分类器进行分类,验证分类结果。 1.创建数据集和标签 def create_dataMat(): dataMat = mat([[0],[1],[2],[3],[4],[5]]) ...
  • 机器学习实战:python算法代码汇总

    千次阅读 2017-08-02 10:02:25
    这是是在学习《机器学习实战》这本书时的代码记录情况,用python实现,当然也会包括一些其他的机器学习算法,使用Python实现。 1:【关联规则】Apriori算法分析与Python代码实现具体分析请参考...
  • 机器学习 - 决策树如何分裂以拓展节点 【导读】:节点分裂是决策树建立重要一个...具体实现方法以及教程请依据链接跳转到对应博文进行查看。 博文1:混杂度计算及其编程实现 def impurity(anArray, impurity
  • 机器学习-K均值聚类(python3代码实现)

    千次阅读 2018-02-27 16:00:29
    K均值聚类 哈尔滨工程大学-537 ...然后将数据集中每个点分配到一个簇,具体来讲,为每个点找距其最近质心,并将其分配给该之心所对应簇。这一步完成后,每个簇质心更新为该簇所有点...
  • 具体过程如下。当构建好决策树后,当有新信息发送时,利用已有决策树逻辑对新信息结构进行判断。当信息内容与决策树一致时,就进入下一分支进行判断,并通过叶子节点获得分类结果。 三、决策树常用算法 1...
  • 瑾瑾知道这个任务跟OpenCV和Matlib有关,需要转换成C++代码(纯代码,不是使用什么接口之类东西). 这个对我来说很重要,但是我对于这个一点都不清楚,我需要是要做到这个任务需要学习哪些东西,详细有哪些方面. ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 685
精华内容 274
关键字:

机器学习具体实现的代码