
Algorithm
bjy_fighting
一个深爱coding与机器学习的电气男
展开
-
链表的java实现与时间和空间复杂度分析
今天主要编写了链表,其具体代码如下:import edu.princeton.cs.algs4.StdIn;import edu.princeton.cs.algs4.StdOut;public class LinkList { private Node head; public LinkList() { // TODO Auto-generated construc原创 2016-03-01 21:38:32 · 1006 阅读 · 0 评论 -
Maven中POM文件的理解
POM文件通过XML语法来管理Maven项目,其中包含项目间的依赖关系。1、Maven内置属性及使用(Maven自定义,可直接使用)${basedir} 表示pom文件所在的目录${version} 表示项目版本${project.basedir} 同basedir${user.home}表示用户目录${env.JAVA_HOME}表示JAVA_HOME变量所在的路径2、POM文件的结构原创 2017-09-22 10:58:03 · 1552 阅读 · 0 评论 -
推荐系统:Collaborative recommendation
1、CF算法处理的问题描述:给定用户集合U={u1,u2,...un}U = \{u_1,u_2,...u_n\}以及物品集合P={p1,p2,...pm}P = \{p_1,p_2,...p_m\}和用户对物品的评分矩阵R(nxm维),预测某些用户没有评分物品可能的评分分数基于此,CF算法有两个基本的假设:(a)如果用户过去有相同的兴趣,那么在未来用户也会有相同的兴趣(b)用户的兴趣具有稳定性原创 2017-04-04 21:52:29 · 940 阅读 · 0 评论 -
线性模型
1、KNN有其固有的劣势:必须存储所有的训练样本,当数据量很大时,显然这种做法是行不通的在预测时,需要遍历每一个训练样本,计算花销大2、定义一种新的分类器:首先定义score Function,其实是一种将样本数据映射到各类的得分,对于线性分类器来说,可以使用WTxW^T x;然后定义loss Function,用于计算预测标签和实际标签的差别;最后,最小化loss Function,获得较好原创 2017-04-05 16:50:33 · 514 阅读 · 0 评论 -
预处理流程
数据预处理的3种形式:1) 除去均值法 即减去均值,既可以每一列特征去考虑,也可以全部数据放在一起考虑。或者说从RGB3个通道去考虑 即: X−=np.mean(X,axis=0)X -= np.mean(X, axis=0) X−=np.mean(X)X -= np.mean(X) 2)归一化 X−=np.std(X,axis=0)X -= np.std(X, axis=0) 或原创 2017-04-08 09:08:08 · 1654 阅读 · 0 评论 -
神经网络激活函数的介绍
1、Sigmoid Sigmoid函数在以往的神经网络里是很常用的,但在深度学习里用的并不那么多,它主要有以下不足: a、容易过饱和并且造成梯度消失。从图中可以看出当Sigmoid函数的值为0或1时,而我们知道sigmoid函数的导数等于其本身乘以1-其本身,那么就导致梯度为0的情况出现,考虑到梯度传播时需要与本地的梯度相乘,那么梯度通过该门函数后几乎没有信号流出。因此,在初始化梯度时一定要很小原创 2017-04-07 20:41:05 · 5887 阅读 · 0 评论 -
推荐系统2
推荐系统的上下文信息实时推荐系统不能每天都给所有用户离线计算推荐结果,然后在线展示昨天计算出来的 结果。所以,要求在每个用户访问推荐系统时,都根据用户这个时间点前的行为实时计 算推荐列表。 推荐算法需要平衡考虑用户的近期行为和长期行为,即要让推荐列表反应出用户近期行 为所体现的兴趣变化,又不能让推荐列表完全受用户近期行为的影响,要保证推荐列表 对用户兴趣预测的延续性。 提高推荐结果的时间多样性原创 2017-03-06 11:08:30 · 374 阅读 · 0 评论 -
推荐系统实战
什么是好的推荐系统推荐系统和搜索引擎对于用户来说是两个互补的工具。搜索引擎满足了用户有明确目的时的主动 查找需求,而推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容。 推荐系统是为了解决信息过载而推出的推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己 有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息 生产者的双赢主流商品往往代表了绝原创 2017-03-04 21:40:21 · 2738 阅读 · 1 评论 -
优先队列(Priority Queue)
优先队列的应用十分广泛,包括著名的A*算法在内的多种算法,均是利用了优先队列。优先队列的实现可以利用数组与链表,但效果都不太理想,利用二叉堆实现是最高效的算法,基于最小元素的优先队列JAVA代码如下:import edu.princeton.cs.algs4.StdOut;/* * priority Queue using binary heap */public class MinPQ<K原创 2016-03-13 20:09:01 · 403 阅读 · 0 评论 -
快速排序(Quick Sort)
快速排序可以说是排序算法中速度最快的通用排序方法,只要是因为它的内循环中的指令很少。虽然在最差情况之下,其时间复杂度会达到平方级别,但可以通过在排序之前运用随机打乱数组的方法,避免最坏情况的出现。 其Java代码如下:import edu.princeton.cs.algs4.StdOut;import edu.princeton.cs.algs4.StdRandom;public class原创 2016-03-08 22:45:52 · 420 阅读 · 0 评论 -
归并排序(Merge Sort)
归并排序是为数不多的稳定排序算法, 在最坏情况下它的时间复杂度依然能够保持在O(NlgN)的数量级上,是一种十分重要的排序算法。 Java代码如下:import edu.princeton.cs.algs4.StdOut;public class Merge { private Comparable[] aux; public void merge(Comparable[] a,原创 2016-03-07 22:07:26 · 421 阅读 · 0 评论 -
希尔排序
希尔排序(Shell Sort) 实质上是插入排序(Insertion Sort)的变种,它以一组序列为间隔进行插入排序,其具体代码如下: import edu.princeton.cs.algs4.StdOut;public class Shell { public static void sort(Comparable[] a) { int h = 1; while (h原创 2016-03-06 14:07:29 · 302 阅读 · 0 评论 -
选择排序与插入排序
选择排序与插入排序是最基本的两种排序算法,他们是复杂排序算法的基础。 其中选择排序Java代码如下:import edu.princeton.cs.algs4.StdOut;import edu.princeton.cs.algs4.StdRandom;public class Selection { public static void sort(Comparable[] a)原创 2016-03-05 21:49:26 · 307 阅读 · 0 评论 -
用链表实现双向队列
每个节点设置了指向前一节点与后一节点的引用pre与next,实现了队列两端增加删除元素的操作。 具体代码如下:import java.util.Iterator;import edu.princeton.cs.algs4.StdOut;public class Dequeue<Item> implements Iterable<Item>{ private Node head;原创 2016-03-02 21:42:13 · 491 阅读 · 0 评论 -
用2个栈实现数学运算
在看《Algorithm》这本书时看到一个算法,可以很巧妙地实现对一个式子(字符串)实现运算,例如输入((1 + 2)* ( 1 / 2 ) ) =, 可以得到1.5.其基本原理是: 1.构建2个栈,一个用于存储数字,一个用于存储操作符。 2.从左到右扫描字符串中的元素,直到扫描结束: 获得一个子串:原创 2016-02-29 15:31:12 · 798 阅读 · 0 评论 -
可变容量队列的数组实现
其基本思想是构建了一个QueueArray类,其API如下所示: (1) private void resize(int capacity): 当队列的长度与所使用的数组长度相差较大时,重新设置数组的大小。当队列的长度大于数组长度的1/2时,将数组长度扩大2倍;当队列的长度小于数组长度的1/4时,将数组长度缩小2倍; (2)public void enQueue(Item item): 和其他原创 2016-02-29 20:28:02 · 664 阅读 · 0 评论 -
Hive性能优化
作者:哥不是小萝莉 出处:http://www.cnblogs.com/smartloli/转载 2017-09-22 11:52:22 · 303 阅读 · 0 评论