自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 资源 (5)
  • 收藏
  • 关注

原创 改进神经网络的方法(学习缓慢,过拟合,梯度消失)

本文内容来自:Michael Nielsen的《Neural Networks and Deep Learning》中文翻译学习缓慢问题产生原因我们之前用的代价函数都是二次代价函数: a是神经元的输出,假设训练输入x=1,输出y=0,求权重和偏置的偏导数有: 偏导数受激活函数的变化率的影响,假设我们激活函数为sigmoid函数,我们看一下函数图像: 当神经元的输出接近1的时候,曲线

2017-08-06 19:04:14 3735

原创 神经网络基础和反向传播推导

本文内容来自:Michael Nielsen的《Neural Networks and Deep Learning》中文翻译神经网络基础 神经元是一个类似感知器的东西,有多个输入。每个输入有权重w,最后有一个总的偏置b。输出不再是感知器那样的0或1,而是经过激活函数计算后的值。常用激活函数比如sigmoid函数,也叫logistic函数,如下所示,其中z=wx+b: 关于激活函数:它其实就是一

2017-08-06 16:00:29 15216 2

转载 Java8的HashMap详解(存储结构,功能实现,扩容优化,线程安全,遍历方法)

原文:Java 8系列之重新认识HashMap,有删改。 JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理,文章末尾附有HashMap的put方法和resize方法的源码解析。简介Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现

2017-08-05 20:04:14 26890 15

转载 红黑树算法原理(从二叉搜索树讲起)

原文:红黑树深入剖析及Java实现,本文修改了原文的一些小错误,如果想看红黑树的Java实现可以到原文去看。 红黑树是平衡二叉查找树的一种。为了深入理解红黑树,我们需要从二叉查找树开始讲起。BST二叉查找树(Binary Search Tree,简称BST)是一棵二叉树,它的左子节点的值比父节点的值要小,右节点的值要比父节点的值大。它的高度决定了它的查找效率。在理想的情况下,二叉查找树增删查改的时

2017-08-05 17:06:03 4602

原创 剑指Offer面试题43n个骰子的点数(动态规划),面试题44扑克牌的顺子

面试题43:n个骰子的点数(动态规划)扔n个骰子,所有骰子朝上一面的点数之和为s,输入n,打印出s的所有可能的值出现的概率。 思路:n个骰子和最小为你,最大为6n,根据排列组合,n个骰子的所有点数的排列为6^n,我们需要先统计出每一种点数和的出现次数,然后除以6^n即为概率。动态规划分析如下: 当有n个骰子,点数和为s,则每一种点数和出现的次数记为f(n,s)。现在假设我有n-1个骰子,再增加一

2017-07-30 19:56:33 977

原创 剑指Offer面试题41和为s的两个数字与和为s的连续正数序列,面试题42翻转单词顺序与左旋转字符串

面试题41:和为s的两个数字,和为s的连续正数序列问题1:输入一个递增排序的数组和一个数字s.在数组中查找两个数使他们的和为s,如果有多对数字的和等于s,输出任意一对即可。 思路:固定一个数字然后遍历其它数字的复杂度O(n^2)的方法肯定不好,注意这是递增的数组,可以2个指针分别指向开头末尾,即最小最大的数,然后判断和是否等于s,若小于s,则前边的指针后移,若大于s,后边的指针前移。一个循环即可复

2017-07-30 15:21:57 962

原创 剑指Offer面试题39二叉树的深度(以及判断平衡二叉树),面试题40数组中只出现一次的数字

面试题39:二叉树的深度(以及判断平衡二叉树)思路:二叉树的深度可以用递归去求,首先如果只有根节点,深度为1,如果根节点只有一个子树,深度为子树的深度+1,如果有两个子树,深度为两个子树的深度较大值加+1。 至于判断平衡二叉树的思路:有了上边求深度的方法后,马上可以想到去遍历树节点,对其子树调用求深度的函数,如果每个结点的左右子树的深度相差都不超过1,就是平衡二叉树。但是这种方法会重复遍历结点,效

2017-07-23 17:36:28 808 1

转载 java参数传递的方式

对于程序设计语言来说,一般函数的参数传递有两种:按值传递和按引用传递。 按值传递表示函数接收的是调用者提供的值,按引用传递表示函数接收的是调用者提供的变量地址。需要注意的是,函数可以修改按引用传递的参数对应的变量值,但不可以修改按值传递的参数对应的变量值,这是两者的最大区别。 对于Java来说,并不存在引用传递,而是采用按值传递,函数得到的是参数的拷贝,不能修改传递给它的参数变量的内容,举例:p

2017-07-23 16:10:11 2281

原创 剑指Offer面试题37两个链表的第一个公共结点,面试题38数字在排序数组中出现的次数

面试题37:两个链表的第一个公共结点输入两个单向链表,输出公共节点。注意了,两个单链表如果有公共节点,形状肯定是Y型的,因为每个结点都只有一个next结点,这个公共节点之后不会有分支了。 思路:假如链表长度分别为m和n,采用固定一个链表的第一个结点,遍历另一个链表的方法的复杂度为O(m*n),有点大了,所以换个思路,既然公共节点之后的结点都是共有的,两个链表的长度差别只在公共节点之前,所以可以先得

2017-07-22 19:18:16 537

原创 剑指Offer面试题35第一个只出现一次的字符,面试题36数组中的逆序对

面试题35:第一个只出现一次的字符例如输入“abaccdeff”,输出b。 思路:从头到尾挨个扫描肯定是不行的,复杂度O(n^2)太高了。所以用哈希,空间换时间。 相关题目1:输入两个字符串,从第一个字符串中删除在第二个字符串中出现过的字符。可以用哈希来存储第二个字符串中的字符,然后扫描第一个字符串,用O(1)的时间就能判断字符在不在第二个字符串里,总时间复杂度O(n)。 相关题目2:删除字符

2017-07-16 15:53:10 734

原创 Hive基础三(查询中常用的语法)

相关链接: Hive基础一(数据库,表,分区表,视图,导入导出数据) Hive基础二(join原理和机制,join的几种类型,数据倾斜简单处理) Hive基础三(查询中常用的语法)Hive中的SELECT基础语法和标准SQL语法基本一致,支持WHERE、DISTINCT、GROUP BY、ORDER BY、HAVING、LIMIT、子查询等。一,ORDER BY和SORT BYORDER BY

2017-07-13 21:06:40 4660

原创 Hive基础二(join原理和机制,join的几种类型,数据倾斜简单处理)

相关链接: Hive基础一(数据库,表,分区表,视图,导入导出数据) Hive基础二(join原理和机制,join的几种类型,数据倾斜简单处理) Hive基础三(查询中常用的语法)一,Hive中join的原理和机制Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join)。Hive Common Join 如果不指定Ma

2017-07-12 00:59:05 9068 1

原创 Hive基础一(数据库,表,分区表,视图,导入导出数据)

相关链接: Hive基础一(数据库,表,分区表,视图,导入导出数据) Hive基础二(join原理和机制,join的几种类型,数据倾斜简单处理) Hive基础三(查询中常用的语法)注意Hive版本问题,可能有些命令不适用或者漏掉了。查看Hive版本的方法是在Hive命令行中输入:hive> set system:sun.java.command;1,Hive的数据单元Databases:数据

2017-07-09 17:10:05 2751

原创 Hadoop常用shell指令

Hadoop常用命令:hadoop fs –ls < path>:等同于本地系统的ls,列出在指定目录下的文件内容,支持pattern匹配。hadoop fs –lsr < path>:类似ls,只不过递归列出所有子目录信息。 hadoop fs –du [-h] < path>:分别列出指定文件夹下所有文件的大小(单位bytes,加了-h单位变成M),等价于unix下的针对目录的du –sb

2017-07-05 22:39:41 632

原创 Hive数据类型

Hive支持原始数据类型和复杂类型,原始类型包括数值型,Boolean,字符串,时间戳。复杂类型包括array,map,struct,union。一,原始数据类型 类型名称 大小 示例 TINYINT 1字节整数 45Y SMALLINT 2字节整数 12S INT 4字节整数 10 BIGINT 8字节整数 244L FLOAT 4

2017-07-04 00:17:56 2023

原创 剑指Offer面试题33把数组排成最小的数,面试题34丑数

面试题33:把数组排成最小的数输入一个正整数数组,把数组中所有的数拼接起来组成一个数,输出最小的。比如输入{3,32,321},输出321323。 思路1:全排列,类似面试题28,n个数共有n!个排列,复杂度比较高。 思路2:重写一种比较大小的方法,详见代码。 Java实现如下:import java.util.Arrays;import java.util.Comparator;publi

2017-07-02 18:02:41 660

原创 Java中String、StringBuffer、StringBuilder的区别

1,可变与不可变首先三者的类都是final修饰的,因此不能被继承。 String类中使用字符数组保存字符串,格式为private final char value[],因为有“final”修饰符,所以可以知道string对象是不可变的。 StringBuilder与StringBuffer都继承自AbstractStringBuilder抽象类,它定义了一些字符串的基本操作,如expandCap

2017-06-29 23:52:45 1027

原创 MapReduce练习二(单表关联,多表关联,倒排索引)

相关链接: MapReduce练习一(计数,去重,排序,平均成绩) MapReduce练习二(单表关联,多表关联,倒排索引) 一些省略的代码可以在练习一中找到。一,单表关联要求:给出child-parent(孩子—父母)表,要求输出grandchild-grandparent(孙子—爷奶)表。Map输出2个表,第一个表key为父母,设一个标识位tag=L,value为tag+孩子+父母,称为左

2017-06-28 23:51:22 2687

原创 MapReduce练习一(计数,去重,排序,平均成绩)

相关链接: MapReduce练习一(计数,去重,排序,平均成绩) MapReduce练习二(单表关联,多表关联,倒排索引)公司服务器的Hadoop版本是0.20,把hadoop-eclipse-plugin-0.20的jar包放到eclipse安装目录下的plugins目录中,新建项目,导入这个jar包解压之后得到的jar包,本地写代码,写完弄成jar包送服务器运行,注意jar包是在服务器的,

2017-06-28 23:13:36 2068

原创 剑指Offer面试题31连续子数组的最大和,面试题32从1到n整数中1出现的次数

面试题31:连续子数组的最大和输入一个整数型数组,有正有负,数组中的一个或多个数字组成子数组,求所有子数组的和的最大值,要求时间复杂度为O(n)。 例如输入的数组为{1,-2,3,10,-4,7,2,-5},和最大的子数组为{3,10,-4,7,2},因此输出为该子数组的和18。 思路:从头到尾逐个累加数组中的数字作为当前和,初始化为0,如果当前和小于等于0,那么和下一个要累加的数相加后肯定比这

2017-05-29 16:24:06 926

翻译 win10安装xgboost python版

本文方法中使用的python版本为2.7,默认你已经安装了anaconda,操作系统为win10,步骤如下: 一,下载已经编译好的xgboost,下载链接点我。 二,解压它,把整个xgboost文件复制到“你的python目录\Lib\site-packages”路径下。 三,进入上述目录下的xgboost文件下的python-package文件中,按住shift点击鼠标右键,进入当前目录的c

2017-05-16 20:41:34 2349 2

原创 八种排序算法(直接插入,希尔,直接选择,堆,冒泡,快排,归并,基数)

一,直接插入排序:将一个数据插入到已经排好序的有序数据中。算法适用于少量数据的排序,平均时间复杂度和最坏时间复杂度都是O(n^2),最好时间复杂度是O(n)。空间复杂度O(1)。是稳定的排序方法。Java代码://直接插入排序private static int[] insertSort(int[] arr){ if(arr == null || arr.length 2){

2017-05-14 16:11:28 897

原创 2016CCF大数据与计算智能大赛——搜狗用户画像比赛总结

一,赛题介绍赛题提供10万个用户在一个月内的搜索引擎查询词,与该用户的属性标签(包括性别、年龄、学历)做为训练数据,用机器学习和数据挖掘的方法构建模型,去对新增用户的未知属性进行预测(已知信息即用户的搜索词),其中性别是二分类问题,年龄和学历都是六分类问题。 赛事官网为www.datafountain.cn,比赛自16年10月开始,历时两个月。 我们队伍最终排名为30/894,B榜准确率为

2017-05-01 17:58:29 6106 1

原创 剑指Offer面试题30最小的K个数(涉及堆或快排)

面试题30:最小的K个数(涉及快排与堆)输入n个整数,找出其中最小的k个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。最简单的方法是先排序再输出,复杂度为O(nlogn),但还有更快的方法。思路1:类似面试题29,也用快排的思想。快排一轮后检查我们选择的快排的key所在的下标是不是k-1就行了(不一定是排序的)。复杂度为O(n),但是要修改数组。

2017-04-30 11:30:13 1303

原创 剑指Offer面试题29数组中出现次数超过一半的数字(涉及快排)

面试题29:数组中出现次数超过一半的数字(涉及快排)数组中有一个数字出现的次数超过数组长度的一半,输出这个数字。思路1:先用快排把数组排好序,然后中间的那个数就是出现次数最多的,快排复杂度为O(nlogn)。但实际中,我们不用一次性完成快排,只需快排一轮后检查我们选择的快排的key所在的下标是不是数组中间数就行了。总复杂度O(n),这种方法会修改数组,因此要看是否允许这样做,快排是不稳定的

2017-04-30 11:06:49 886

原创 剑指Offer面试题28字符串的排列组合(递归和栈)

面试题28:字符串的全排列(递归)输入一个字符串,打印出字符串中字符的所有排列,例如输入abc,输出abc,acb,bac,bca,cab,cba。思路:把一个字符串看成两个部分,第一部分是它的第一个字符,第二部分是它后边的所有字符。求所有排列的过程可看做两步,第一步求所有可能出现在第一个位置的字符,即把第一个字符和后面的所有字符交换。第二步固定第一个字符,求后面所有字符的排列,此时仍

2017-04-30 10:56:13 2935

原创 剑指Offer面试题26复杂链表的复制,面试题27二叉搜索树和双向链表(递归)

面试题26:复杂链表的复制复制一个复杂链表,这个链表除了next指针,还有指向任意一个结点的sibling指针或空指针。思路1:一个效率很低的方法:分两步,先复制一遍next链表,然后设置sibling指针。但由于不知道它指向的位置,所以要遍历一遍链表(在原链表中,从头走了几步,在新链表中,也走几步,这就能确定位置了),这样每个结点设置sibling都要经过O(n)步,总复杂度O(n^2)

2017-03-14 10:57:47 663

原创 剑指Offer面试题24二叉搜索树的后序遍历序列(递归),面试题25二叉树中和为某一值的路径(栈)

面试题24:二叉搜索树的后序遍历序列(递归)输入一个数组,判断数组是不是二叉搜索树的后序遍历结果。思路:注意是搜索树,即左孩子相关题目:后序变成前序也是这个思路,树的遍历关键都是先找根结点。本题Java实现如下:public class VerifySequenceOfBST { private boolean verifySequenceOfBST(int[] arr){

2017-03-14 10:50:54 674

原创 剑指Offer面试题22栈的压入弹出序列,面试题23从上到下打印二叉树(层序遍历用队列)

面试题22:栈的压入弹出序列输入两个整数序列,第一个序列表示压入顺序,判断第二个序列是否为弹出顺序.假设入栈所有数字均不相等。思路:构建辅助栈,以压入序列1、2、3、4、5,弹出序列4、5、3、2、1为例,第一个弹出的是4,所以要先把4压入栈,此时栈里有1234,弹出栈顶即可,下一个弹出5,就依次压入直到5,弹出。再举个反例,以弹出序列4、3、5、1、2为例,首先栈里有1234了,下一

2017-03-14 10:43:54 761

原创 剑指Offer面试题20顺时针打印矩阵,面试题21包含min函数的栈

面试题20:顺时针打印矩阵思路:一圈一圈打印,再具体到四个边分别打印。本题的Java实现:public class PrintMatrixInCircle { public void PrintMatrixClockwisely(int[][] a){ if (a==null) return; int rows=a.length;

2017-03-14 10:40:42 593

原创 剑指Offer面试题18树的子结构(递归),面试题19二叉树的镜像(递归和非递归用栈)

面试题18:树的子结构(递归)判断二叉树B是不是二叉树A的子树.思路:两步:1,递归调用hasSubtree先遍历A中有没有结点的值和B的根结点相同,如果有,调用doesTree1HaveTree2做第二步判断。2,判断AB结构是否相同,即递归判断左右结点。本题Java实现:public class DoesTree1HaveTree2 { private boolean dos

2017-03-14 10:10:51 896

原创 剑指Offer面试题16反转链表(递归和非递归),面试题17合并两个排序的链表(递归)

面试题16:反转链表(递归和非递归)输入一个链表的头结点,反转该链表并输出反转后链表的头结点。思路1:定义三个指针,分别是当前要反转的结点,它的前一个结点和后一个结点。思路2:用递归。先找到倒数后两个结点反转,依次向前。以下是本题Java实现:class ListNode{ int value; ListNode next; public ListNode(int x)

2017-03-10 17:11:35 801

原创 剑指Offer面试题14使数组中的奇数在偶数前,面试题15链表倒数第k个结点

面试题14:使数组中奇数位于偶数前输入一个整数数组,实现一个函数来调整数组中的数字的顺序,使得所有奇数位于数组的前半部分,偶数位于后半部分。思路:前后各一个指针相互靠近,如果前偶后奇,交换位置,直到两个指针相遇。复杂度O(n)。注意:如果题目换成负数在正数前边,或能被3整除的在不能的前边等,只是判断条件改变,所以我们把判断功能分离出来,每次只修改这个功能就行了。本题Java实现:

2017-03-07 23:03:33 750

原创 剑指Offer面试题12打印1到最大的n位数,面试题13在O(1)时间删除链表结点

面试题12:打印1到最大的n位数输入数字n,按顺序打印出从1最大的n位十进制数。例如输入3,则打印出1,2,3,...,一直到最大的3位数即999。注意:没有限定n的范围时,注意大数问题,n可能会超出基本数值类型的表示范围,此时可以用字符串来表示,每一位上都是0-9的遍历,可以用递归。题外话:Java中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,理论

2017-03-05 19:31:25 679

原创 剑指Offer面试题11数值的整数次方

面试题11:数值的整数次方实现函数double Power(double base,int exponent),求base的exponent次方,不得使用库函数,不用考虑大数问题。注意:判断两个小数是否相等不能用==,因为计算机表示小数有误差,我们只能判断它们差的绝对值是否在一个很小的范围内。题外话:程序错误处理的三种方法:返回值、全局变量、异常。返回值好处是根据返回值判断错误原因,缺

2017-03-05 00:14:19 744

原创 剑指Offer面试题10二进制中1的个数(位运算)附带一个进制转换题

面试题10:二进制中1的个数实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如9的二进制是1001,则输出2。位运算相关知识:位运算共5种,与(&)是同时为1才为1,或(|)是有一个为1就是1,异或(^)是不相同为1。左移运算符m右移运算符m>>n表示m右移n位,最右边n位丢弃,注意,如果数字是一个无符号数值,则用0填补最左边的n位。如果是有符号数值,如正,左边补n个0

2017-03-04 20:42:15 1744

原创 剑指Offer面试题9斐波那契数列

面试题9:斐波那契数列写一个函数,输入n,求斐波那契数列的第n项。斐波那契数列定义如下:n=0时,f(n)=0;n=1时,f(n)=1;n>1时,f(n)=f(n-1)+f(n-2)思路1:先判断n比如求f(10),要先求f(9)和f(8),以此类推,如果把f(10)作为二叉树的根节点,那么整个树的节点会有很多重复的,复杂度随n的增加而指数增加。思路2:更简单的办法不是从n开始往下

2017-03-04 20:35:30 790

原创 剑指Offer面试题8旋转数组的最小数字(二分查找)附带快排和按年龄排序

面试题8:旋转数组的最小数字把一个数组最开始的几个元素搬到数组末尾,我们称之为数组的旋转,输入一个递增的数组的旋转,输出它的最小元素。如{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,输出1。思路:直观想法是从头到尾遍历就行,复杂度O(n),但是这个数组其实已经划分为两个排好序的子数组,前面一个子数组的元素都大于等于后边一个,并以最小元素为分界。对于排好序的数组,推荐用二分查

2017-03-02 18:11:07 750

原创 剑指Offer面试题7用两个栈实现队列(附带用两个队列实现栈)

面试题7:用两个栈实现队列完成两个函数appendTail和deletedHead,分别是在队列尾部插入节点和在队列头部删除节点的功能。思路:添加元素即压入一个栈s1,删除元素的话,把s1中的元素按顺序先弹出再压入栈s2中,这是弹出栈s2的元素就能实现先进先出了。相关题:用两个队列实现栈。思路:添加元素即向一个队列q1添加元素,删除元素的话,把q1的元素按顺序出队然后入队到q2,最

2017-03-02 18:05:34 717

原创 包含finally的异常代码块里的return,break,continue语句如何执行

包含finally的异常代码块结构如下: try{ return;}catch(){return;} finally{return;} 这种结构里的return语句怎么执行呢?因为这是有finally时的情况,比较特殊。首先,执行try代码块中位于“return”之前的代码(包括return语句中的表达式运算,比如return 1+1,这个1+1也会被执行),意思就是程序计算了return语句,

2017-02-26 18:22:09 8086

etc文件下mysql的配置文件

linux下etc文件下mysql的配置文件,详情见博客:http://blog.csdn.net/login_sonata/article/details/53178613

2017-05-22

mingw64安装程序

安装xgboost时用到,详情请看博客:http://blog.csdn.net/login_sonata/article/details/72334997

2017-05-16

已经编译好的xgboost

已经编译好的xgboost,安装详情请看博客:http://blog.csdn.net/login_sonata/article/details/72334997

2017-05-16

空空如也

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

TA关注的人

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