自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

null的专栏

Keep your eyes open and your feet moving forward. You'll find what you need.

  • 博客(247)
  • 资源 (4)
  • 收藏
  • 关注

原创 python技巧——将list中的每个int元素转换成str

在Python中,有时需要将list以字符串的形式输出,此时可以使用如下的形式:",".join(list_sample)其中,,表示的是分隔符如需要将a_list = ["h","e","l","l","o"]转换成字符输出,可以使用如下的形式转换:a_list = ["h","e","l","l&qu

2018-07-05 20:19:32 87491 4

原创 情感分析——深入snownlp原理和实践

一、snownlp简介snownlp是什么? SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。注意本程序都是处理的unicode编码,所以使...

2018-06-26 11:23:16 115544 37

原创 TensorFlow实践——Multilayer Perceptron

本文是在Softmax Regression的基础上增加了一个隐含层,实现了Multilayer Perceptron的一个模型,Multilayer Perceptron是深度学习模型的基础,对于Softmax Regression的TensorFlow实现,可以参见博文“TensorFlow实践——Softmax Regression”。对于Multilayer Perceptron的基本原理...

2018-04-26 22:53:25 1131

原创 TensorFlow实践——Softmax Regression

Softmax Regression是Logistic回归在多分类上的推广,对于Logistic回归以及Softmax Regression的详细介绍可以参见:简单易学的机器学习算法——Logistic回归利用Theano理解深度学习——Logistic Regression深度学习算法原理——Softmax Regression下面的代码是利用TensorFlow基本API实现的...

2018-04-18 10:38:29 1158

原创 挑战数据结构和算法面试题——二叉搜索树的后序遍历

题目来源“数据结构与算法面试题80道”。在此给出我的解法,如你有更好的解法,欢迎留言。分析:根据二叉查找树的定义,二叉查找树或者是一棵空二叉树,或者是具有一下特性的二叉树:若它的左子树不为空,则左子树上的所有结点的值均小于根节点的值;若它的右子树不为空,则右子树上的所有结点的值均小于根节点的值;它的左右子树又分别是二叉查找树。结合二叉树的后序遍历,则初始序列...

2018-04-09 15:23:31 1086 1

原创 【数据结构和算法面试题】连续最长数字串

题目来源“数据结构与算法面试题80道”。在此给出我的解法,如你有更好的解法,欢迎留言。问题分析:字符串的处理,判断每一位是不是数字,用到了函数isdigit方法:int continumax(char *outputstr, char * inputstr){ if (NULL == inputstr) return 0; char *p = inpu...

2018-04-07 12:08:45 1128

原创 【数据结构与算法面试题】统计上排数在下排出现的次数

题目来源“数据结构与算法面试题80道”。在此给出我的解法,如你有更好的解法,欢迎留言。分析:本题应该是一个确定的问题,即上排的是个数是题目中给定的十个数。其基本的解题过程为:[10,0,0,0,0,0,0,0,0,0][9,0,0,0,0,0,0,0,0,1][8,1,0,0,0,0,0,0,1,0][7,2,1,0,0,0,0,1,0,0][6,2,1,0,...

2018-03-19 20:14:59 663

原创 挑战数据结构和算法面试题——最大间隔

题目来自伯乐在线,欢迎有不同答案的同学来一起讨论。分析:本题首先需要理解清楚最大间隔的最小:最初的间隔为:[1,1,4,1],此时最大间隔为4删除2后的间隔为:[2,4,1],此时最大间隔为4删除3后的间隔为:[1,5,1],此时最大间隔为5删除7后的间隔为:[1,1,5],此时最大间隔为5在删除元素后的间隔为:[4,5,5],最小值为:4方法:int...

2018-03-15 20:45:26 981

原创 挑战数据结构和算法——栈的push、pop序列

题目来源“数据结构与算法面试题80道”。在此给出我的解法,如你有更好的解法,欢迎留言。问题分析:本题考查栈的基本操作,栈是一种“先进后出”的数据结构。判断一个序列是否是栈的pop序列是一种常见的问题,可以通过模拟push和pop的过程,push和pop总是成对出现的,如:方法:#define push 1#define pop -1bool judge_pus...

2018-03-14 14:20:41 6036

原创 挑战数据结构和算法——整数的二进制表示中1的个数

题目来源“数据结构与算法面试题80道”。在此给出我的解法,如你有更好的解法,欢迎留言。问题分析:本题涉及到二进制的处理,在本题使用到&操作和>>操作。方法:int get_num(int n){ int num = 0; if (n < 0){ num += 1; n = n * (-1); ...

2018-03-14 14:18:54 636

原创 【数据结构和算法面试题】跳台阶问题

题目来源“数据结构与算法面试题80道”。在此给出我的解法,如你有更好的解法,欢迎留言。问题分析:假设f(n)f(n)f\left ( n \right )为跳台阶的总跳法,当n=1n=1n=1时,f(n)=1f(n)=1f\left ( n \right )=1;当n=2n=2n=2时,f(n)=2f(n)=2f\left ( n \right )=2;当n=3n=3n=3时,如果...

2018-03-14 14:15:49 791

原创 【数据结构和算法面试题】左旋转字符串

题目来源“数据结构与算法面试题80道”。在此给出我的解法,如你有更好的解法,欢迎留言。问题分析:本题是常见的旋转字符串的问题,解决的方法是两步旋转的方法:方法:void do_reverse(char *p_start, char *p_end){ if (NULL == p_start || NULL == p_end || p_start > p_...

2018-03-14 14:11:36 475

原创 机器学习中的基本问题——log损失与交叉熵的等价性

1、log损失log损失的基本形式为:log(1+exp(−m))log(1+exp(−m))log\left ( 1+exp\left ( -m \right ) \right )其中,m=y⋅y^m=y⋅y^m=y\cdot \hat{y},y∈{−1,1}y∈{−1,1}y\in\left \{ -1,1 \right \}。 对上述的公式改写: ⇒1m∑i=1...

2018-03-09 20:20:43 15724 3

原创 挑战数据结构和算法面试题——最大差值

题目来自伯乐在线,欢迎有不同答案的同学来一起讨论。分析:基本方法是遍历数组,找到当前值前面所有数组元素的最小值。方法:int get_max_distance(int *a, const int n) { int max_distance = 0; // 纪录最大距离 if (n == 0) return max_distance; int min = ...

2018-02-28 23:32:10 861 2

原创 推荐系统中的常用算法——Wide & Deep

这篇文章是阅读《Wide & Deep Learning for Recommender Systems》后的总结,该文章中提出结合Wide模型和Deep模型的组合方法,对于提升推荐系统(Recommendation System)的性能有很重要的作用。1、背景本文提出Wide & Deep模型,旨在使得训练得到的模型能够同时获得记忆(memorization)...

2017-10-07 20:10:16 36093 5

原创 《Python机器学习算法》勘误

本书在出版的过程中已经经过详细的检查,但是大小问题依旧存在,感谢各位细心的读者为本书指出的错误。 第34页的错误在Python2.7.9版本上不会报错。 第1版第一次印刷勘误 页码 原文 修改 XVI (目录)12.3.2 Mean shift 12.3.2 DBSCAN 26 (程序清单1-11:第11行)h r

2017-09-15 21:43:56 4807 16

原创 利用Binary Hash Codes的深度图像检索

这篇文章是阅读《Deep Learning of Binary Hash Codes for Fast Image Retrieval》后的总结,该文章提出了一种利用CNN处理基于内容的图像检索的方法。文章的重点图像的binary hash code的生成方法两阶段的检索方法——coarse-to-fine search strategy1、基于内容的图像检索...

2017-08-29 14:03:25 3556

原创 推荐系统——(论文阅读笔记)YouTube推荐中的深层神经网络

这篇文章是阅读YouTube的《Deep Neural Networks for YouTube Recommendations》后的一点总结,这篇文章值得详细阅读,因此将其中的核心点整理出来。文章的重点1、总结推荐系统的架构2、如何利用深度模型做召回3、如何利用深度模型做Ranking1、推荐系统的架构在本文中,推荐系统的架构与其他的推荐架构极为类似,都是由两...

2017-08-25 13:17:07 6216 3

原创 liblbfgs中L-BFGS算法的实现

在博文“优化算法——拟牛顿法之L-BFGS算法”中,已经对L-BFGS的算法原理做了详细的介绍,本文主要就开源代码liblbfgs重新回顾L-BFGS的算法原理以及具体的实现过程,在L-BFGS算法中包含了处理L1正则的OWL-QN算法,对于OWL-QN算法的详细原理,可以参见博文“优化算法——OWL-QN”。1、liblbfgs简介liblbfgs是L-BFGS算法的C语言实现,用于求解非线性优

2017-08-20 17:27:34 7312 4

原创 算法类面试题解析——美团2016校招:棋子翻转

题目来自伯乐在线,欢迎有不同答案的同学来一起讨论。分析:本题主要是二维数组的操作,对指定的位置上的数字进行翻转,其具体过程如下所示:其基本的过程如下:遍历数组二,如上图中的红色位置: 找到其周围的四个位置,注意数组的上下界验证没有越界的条件下,对其进行修改方法:void do_reverse(int **a, int k, int i, int ...

2017-08-07 13:30:52 2728

原创 【数据结构与算法面试题】二叉树节点的最大距离

题目来源“数据结构与算法面试题80道”。这是第三部分,包含其中的第11题到第15题。 在此给出我的解法,如你有更好的解法,欢迎留言。问题分析:涉及的知识点是二叉树的遍历,遍历的方法主要有:先序遍历中序遍历后序遍历层次遍历在本题中,使用先序遍历的方法。方法:void m_length(BSTreeNode *root, int *length, i...

2017-08-04 11:26:01 2153

原创 【数据结构与算法面试题】二叉查找树转换成双向链表

题目来源“数据结构与算法面试题80道”。这是第一部分,包含其中的第1题到第5题。 在此给出我的解法,如你有更好的解法,欢迎留言。问题分析:二叉查找树是一种二叉树的结构,其中,根节点的值大于左子树的值,小于右子树的值。而二叉查找树的中序遍历即为排序的结果。对于根节点,前驱指针指向左子树中最大的节点,同理,后驱指针指向右子树中最小的节点,如下图所示:树是一种递归的结果,因...

2017-07-22 22:23:11 17104 9

原创 机器学习算法实现解析——libFM之libFM的训练过程之Adaptive Regularization

本节主要介绍的是libFM源码分析的第五部分之二——libFM的训练过程之Adaptive Regularization的方法。5.3、Adaptive Regularization的训练方法5.3.1、SGD的优劣在“机器学习算法实现解析——libFM之libFM的训练过程之SGD的方法”中已经介绍了基于SGD的FM模型的训练方法,SGD的方法的最大优点是其训练过程很简单,只需在计算的过程中求解损

2017-06-16 20:00:21 3634 1

原创 机器学习算法实现解析——libFM之libFM的训练过程之SGD的方法

本节主要介绍的是libFM源码分析的第五部分之一——libFM的训练过程之SGD的方法。5.1、基于梯度的模型训练方法在libFM中,提供了两大类的模型训练方法,一类是基于梯度的训练方法,另一类是基于MCMC的模型训练方法。对于基于梯度的训练方法,其类为fm_learn_sgd类,其父类为fm_learn类,主要关系为: fm_learn_sgd类是所有基于梯度的训练方法的父类,其具体的代码如

2017-06-15 18:56:28 6883 3

原创 机器学习算法实现解析——libFM之libFM的模型处理部分

本节主要介绍的是libFM源码分析的第三部分——libFM的模型处理。3.1、libFM中FM模型的定义libFM模型的定义过程中主要包括模型中参数的设置及其初始化,利用模型对样本进行预测。在libFM中,首先定义FM模型,在fm_model类中实现对FM模型的定义,fm_model类在“\libfm-1.42.src\src\fm_core\fm_model.h”中。在定义fm_model类之前,

2017-06-13 19:27:15 6714 4

原创 Hive——巧用transform处理复杂的字符串问题

相比于Map-Reduce,Hive对数据的处理相对简单,但是Hive本身提供的函数,对于处理复杂的字符串问题,就显得不是很方便,此时,可以借助transform,引入外界的Python程序对字符串进行处理。

2017-05-25 14:39:14 10350

翻译 梯度下降优化算法综述

本文翻译自Sebastian Ruder的“An overview of gradient descent optimization algoritms”,作者首先在其博客中发表了这篇文章,其博客地址为:An overview of gradient descent optimization algoritms,之后,作者将其整理完放在了arxiv中,其地址为:An overview of grad

2017-04-14 17:28:56 52985 16

原创 C/C++——排序

在C/C++中的排序,使用到的函数主要有:sort()qsort()下面详细分析sort()函数和qsort()函数。1、sort()函数sort()是STL中提供的算法,头文件为:#include<algorithm>using namespace std;函数原型如下:template <class RandomAccessIterator>void sort ( RandomAcce

2017-03-27 10:02:07 2898

原创 机器学习算法实现解析——word2vec源码解析

在阅读本文之前,建议首先阅读“简单易学的机器学习算法——word2vec的算法原理”,掌握如下的几个概念:什么是统计语言模型神经概率语言模型的网络结构CBOW模型和Skip-gram模型的网络结构Hierarchical Softmax和Negative Sampling的训练方法Hierarchical Softmax与Huffman树的关系有了如上的一些概念,接下来就可以去读word...

2017-03-16 16:32:44 33441 8

原创 Linux C 编程——互斥锁mutex

1、多线程的问题引入多线程的最大的特点是资源的共享,但是,当多个线程同时去操作(同时去改变)一个临界资源时,会破坏临界资源。如利用多线程同时写一个文件:#include <stdio.h>#include <pthread.h>#include <malloc.h>const char filename[] = "hello";void* thread(void *id){ int

2017-03-14 20:37:54 39796 10

原创 Linux C 编程——多线程

线程是计算机中独立运行的最小单位,运行时占用很少的系统资源。与多进程相比,多进程具有多进程不具备的一些优点,其最重要的是:对于多线程来说,其能够比多进程更加节省资源。1、线程创建在Linux中,新建的线程并不是在原先的进程中,而是系统通过一个系统调用clone()。该系统copy了一个和原先进程完全一样的进程,并在这个进程中执行线程函数。在Linux中,通过函数pthread_create()函数实

2017-03-13 16:30:36 2623

原创 C/C++中的变长结构体

1、问题来源在博文数据结构和算法——kd树中,在构建kd树的过程中,有如下的一段代码:#define MAX_LEN 1024typedef struct KDtree{ double data[MAX_LEN]; // 数据 int dim; // 选择的维度 struct KDtree *left; // 左子树 struct KD

2017-02-16 20:29:33 2837

原创 简单易学的机器学习算法——梯度提升决策树GBDT

梯度提升决策树(Gradient Boosting Decision Tree,GBDT)算法是近年来被提及比较多的一个算法,这主要得益于其算法的性能,以及该算法在各类数据挖掘以及机器学习比赛中的卓越表现,有很多人对GBDT算法进行了开源代码的开发,比较火的是陈天奇的XGBoost和微软的LightGBM。一、监督学习1、监督学习的主要任务监督学习是机器学习算法中重要的一种,对于监督学习,假设有mm...

2017-02-10 16:55:26 108870 14

原创 数据结构和算法——Huffman树和Huffman编码

Huffman树是一种特殊结构的二叉树,由Huffman树设计的二进制前缀编码,也称为Huffman编码在通信领域有着广泛的应用。在word2vec模型中,在构建层次Softmax的过程中,也使用到了Huffman树的知识。在通信中,需要将传输的文字转换成二进制的字符串,假设传输的报文为:“AFTERDATAEARAREARTAREA”,现在需要对该报文进行编码。一、Huffman树的基本概念在二叉

2017-02-04 15:43:54 55770 14

原创 数据结构和算法——kd树

一、K-近邻算法K-近邻算法是一种典型的无参监督学习算法,对于一个监督学习任务来说,其mm个训练样本为:{(X(1),y(1)),(X(2),y(2)),⋯,(X(m),y(m))}\left \{ \left ( X^{\left ( 1 \right )},y^{\left ( 1 \right )} \right ),\left ( X^{\left ( 2 \right )},y^{\lef

2017-02-02 11:31:02 15011 6

原创 数据结构和算法——二叉排序树

一、二叉排序树对于无序的序列“62,58,88,47,73,99,35,51,93,29,37,49,56,36,48,50”,是否存在一种高效的查找方案,使得能够快速判断在序列中是否存在指定的数值?二叉排序树是一种简单,高效的数据结构。 二叉排序树,又称为二叉查找树。二叉排序树或者是一棵空树,或者是具有以下性质的二叉树:若其左子树不为空,则左子树上的所有节点的值均小于它的根结点的值;若其右子树

2017-01-22 16:03:27 16875 1

原创 数据结构和算法——二叉树

二叉树是使用较多的一种树形结构,如比较经典的二叉排序树,Huffman编码等,都使用到了二叉树的结构,同时,在机器学习算法中,基于树的学习算法中也大量使用到二叉树的结构,因此,我们有必要对二叉树的结构有比较详细的了解和掌握。一、二叉树的基本概念1、二叉树的概念 二叉树(Binary Tree)是包含nn个节点的有限集合,该集合或者为空集(此时,二叉树称为空树),或者由一个根节点和两棵互不相交的、

2017-01-15 22:23:52 43638 7

原创 简单易学的机器学习算法——K-Means++算法

K-Means++

2016-12-06 13:39:16 36465 14

原创 MATLAB技巧——sort和sortrows函数

sort函数 sortrows函数

2016-11-15 18:12:10 15173

原创 Web Spider实战1——简单的爬虫实战(爬取“豆瓣读书评分9分以上榜单“)

1、Web Spider简介Web Spider,又称为网络爬虫,是一种自动抓取互联网网页信息的机器人。它们被广泛用于互联网搜索引擎或其他类似网站,以获取或更新这些网站的内容和检索方式。它们可以自动采集所有其能够访问到的页面内容,以供搜索引擎做进一步处理(分检整理下载的页面),而使得用户能更快的检索到他们需要的信息。2、一个简单的网络爬虫案例作者在浏览网页的时候看到豆瓣书单的网页(首页),如下所示:

2016-11-02 21:09:37 9542 1

在线顺序极限学习机OS-ELM的python实现

与博文(http://blog.csdn.net/google19890102/article/details/45273309)配套的实验

2015-04-25

线性回归实验数据

与我的博客内容同步http://blog.csdn.net/google19890102

2014-05-22

logistic回归测试数据

与我的博客配套,具体参照我的博客文章简单易学的机器学习算法——Logistic回归

2014-05-12

达内java学习笔记-总最全

java学学习必备 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做什么(方法):告诉外界对象有那些功能。 后者以前者为基础。 大的对象的属性也可以是一个对象。 为什么要使用面向对象: 首先,面向对象符合人类看待事物的一般规律。 对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。 方法的定义非常重要。方法有参数,也可能有返回值。 注意区分:对象(本身)、对象的实现者、对象的调用者。 分析对象主要从方法开始。 我们通过类来看待对象,类是对象的抽象。 其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。

2011-01-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除