- 博客(45)
- 收藏
- 关注
原创 word2vec Parameter Learning Explained 论文学习笔记
文章内容1、word2vec模型:skipgram和CBOW2、训练优化:hierarchical softmax 和 negative sampling.一、CBOW模型CBOW完成的事情是:用给定上下文预测中心词,假设输入的上下文只有一个单词,用这个单词预测接下来的词语,类似于Bigram.输入:单词的one-hot编码。维度是词典大小,输入层和隐藏层之间是全连接。 输出是单词表中...
2020-03-27 11:59:49 391 1
原创 求a的开方
方法1:梯度下降令x=a\sqrt{a}a,那么x2=ax^2=ax2=a,写成方程的形式就是f(x)=x2−af(x)=x^2-af(x)=x2−a,问题就转化为求f(x)=0f(x)=0f(x)=0的解,怎么转化为用梯度下降求呢?因为梯度下降是求极值的问题,可以把f(x)f(x)f(x)看成是某个函数的导数,也就是g(x)=13x3−axg(x)=\frac{1}{3}x^3-axg(x)...
2018-11-19 10:19:21 776 1
原创 判断两个矩形是否有重叠
今天笔试遇到这个题目,原来是图像中的问题:判断图像中检测到的两个人脸框矩形是否有重叠部分,并计算重叠大小,从而确认是否为同一个人脸。直接判断的话,情况有点多,比如:这样代码就比较繁琐了。如果是先考虑没有重叠呢?如上图所示,没有重叠的话,可以分为四种情况,假设红色矩形为A,绿色矩形为B,那么B可以分别在A的上、下、左、右四种情况。设A的左上角坐标为p1,右下角坐标为p2,B的左上角坐标...
2018-11-10 20:13:45 8703 2
原创 根据三点坐标求三角形面积
point.pyimport mathclass CPoint: def __init__(self,x,y): self.x=x self.y=y def point_distance(self,p): return math.sqrt(math.pow(p.x-self.x,2)+math.pow(p.y-self.y,2))...
2018-11-10 17:02:31 5612
转载 为什么要对数据进行归一化?
为什么要归一化1、提高梯度下降法求解最优解的速度如下图所示,蓝色的圈圈图代表的是两个特征的等高线。其中左图两个特征X1和X2的区间相差非常大,X1区间是[0,2000],X2区间是[1,5],其所形成的等高线非常尖。当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛;而右图对两个原始特征进行了归一化,其对应的等高线显得很圆,在梯度下降进行求...
2018-11-09 11:31:00 2505
原创 python中的文件读写
虽然研究了很多python代码,却没有整理过关于文件操作的,系统地整理下。一、普通的文件读写在磁盘上读写文件都是由操作系统控制的,应用读写文件就是请求操作系统打开一个文件对象,然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。python内置了各种函数,来对文件进行操作。1、打开文件:open f = open('data/test.t...
2018-11-07 11:13:40 220
原创 KMeans聚类 K值的确定以及初始类簇中心点的选取
KMeans算法是最常用的聚类算法,基本思想是:在给定K值和K个初始类簇中心点的情况下,把每个样本点分到离其最近的簇中,然后重新计算每个簇的中心点(取平均值),然后再迭代的进行分配点和更新类簇中心点的步骤,直至类簇中心点的变化很小,或者达到指定的迭代次数。KMeans算法本身思想比较简单,但是确定一个合适的K值和K个初始类簇中心点对于聚类效果的好坏有很大的影响。K值的确定1、样本聚类误差平方...
2018-11-06 11:03:31 32237 6
原创 处理数据不平衡的问题
普通的机器学习方法,对于非平衡数据分类,总是倾向于最大化占比多的类别的分类准确率,而把占比少的类别分类错误,但是,现实应用中,我们研究的问题,对于少数的类别却更加感兴趣。所以总结一下,处理不平衡数据的方法。(假设占比多的正样本,占比少的为负样本)1、过采样增加少类别的样本,代表算法是SMOTE算法,基本思想是对每一个负样本利用KNN找到K个近邻,在这k个近邻中根据采样倍率随机有放回的选取样本...
2018-11-05 17:42:03 395
原创 cs231n笔记2:损失函数和正则化
损失函数衡量的是对结果的不满意程度,是全部的训练样本的预测值与真实值的差值的和:L=1N∑iLi(f(xi,W),yi)L=\frac{1}{N}\sum_iL_i(f(x_i,W),y_i)L=N1∑iLi(f(xi,W),yi),我们训练的过程也是通过更新权重w,努力减小损失函数的过程。损失函数的具体形式多种多样,下面介绍常用的多分类支持向量机(SVM)损失函数。一、多分类支持向量...
2018-11-05 14:52:25 720
原创 cs231n作业1:图像分类
作业是在ipython下开发完成的,首先要学会使用ipython。一、IPython使用Jupyter Notebook是以web交互式的编程接口,是一个编程工具,除了通常的新建、删除、更改、下载编程文件外,还支持在线编程运算可帮助持续开发,特别在企业中有些项目需要持续很长时间的开发,每天下班后关闭jupyter,只要服务器的kernel不关闭,jupyter会保存好开发时的数据缓存和可视化结...
2018-11-03 15:51:54 502
原创 cs231n笔记1:图像分类
几个术语初步了解下:图像分割、面部检测(Adaboost)、object recognization、SIFT(SIFT算法是一种提取局部特征的算法,在尺度空间寻找极值点,提取位置,尺度,旋转不变量 )、语义分割(将像素按照图像中表达语义含义的不同进行分组)图像分类是计算机视觉领域的核心问题之一,并且有着各种各样的实际应用。其实在计算机视觉领域中很多看似不同的问题(比如物体检测和分割),都可以被...
2018-11-02 11:57:37 405
原创 蓄水池采样原理
一、原理蓄水池采样算法解决的是在给定但长度未知的大数据集中,随机等概率抽取一个数据。如果知道数据集的长度,可以用随机数rand()%n得到一个确切的随机位置,那么该位置的对象就是所求的对象,选中的概率是1/n。那长度未知该如何取?尤其是如果这个大数据集不能一次性放入内存中,蓄水池采样算法就非常有用了。算法思路:我们总是选择第一个对象,以1/2的概率选择第二个,以1/3的概率选择第三个,以此类推...
2018-11-01 10:12:21 2132
原创 二叉树的非递归遍历
1、先序遍历遍历顺序:根左右,利用栈public void preOrder(TNode root){ if(root==null){ return ; } Stack<TNode> s=new Stack<TNode>(); while(!s.empty()||root!=null){ while(root!=null){ print(root....
2018-10-31 11:25:49 137
原创 单链表的常用操作
生活果然是需要一点刺激的,从今天开始,我一定要好好写博客!!首先链表的节点定义:class Node{ public int data; public Node next;}以下操作假设单链表有头结点(head!=null)。1、末尾添加节点public void addNode(Node node){ Node current=head;//head是单链表的头结点 whi...
2018-10-30 20:33:55 225
原创 Linux简介之用户管理常用命令
一、用户和权限在实际应用中,对每个组设置不同的权限,然后将不同的用户添加到对应的组中,从而不用依次为每一个用户设置权限。查看某个目录下文件的详细信息:ls -l /home/user每一列代表的含义:1)权限,第 1 个字符如果是 d 表示目录2)硬链接数,通俗地讲,就是有多少种方式,可以访问到当前目录/文件,比如,a下有子目录b,b下有子目录c、d…那么a的硬链接数就是3:/home...
2018-10-29 10:05:49 178
原创 Linux简介之远程管理常用命令
1、重启电脑$ shutdown -r now # 重新启动操作系统,其中 now 表示现在$ shutdown now # 立刻关机,其中 now 表示现在$ shutdown 20:25 # 系统在今天的 20:25 会关机$ shutdown +10 # 系统再过十分钟后自动关机$ shutdown -c # 取消之前指定的关机计划加上-r表示重新启动,不指定选项和...
2018-10-28 21:58:14 246
原创 Ubuntu15.1安装openssh-server
客户端电脑通过SSH访问Ubuntu服务器,服务器上必须得安装SSH-server才可以。1、如果Ubuntu系统不是最新系统,需要更新apt-get:sudo apt-get update,如果更新失败,可能需要换源,即修改/etc/apt/sources.list文件:(1)备份:sudo cp sources.list sources.list.bak(2)sudo gedit /et...
2018-10-28 12:46:50 403
原创 windows与ubuntu之间实现复制与粘贴
安装VMware Tools启动Ubuntu虚拟机,点击虚拟机菜单的“VMware Tools”如果弹出下面的对话框,点击“是”此时,会发现虚拟机设备下多了VMware Tools这一项,点击它,其里面有一个VMwareTools…tar.gz文件:把这个压缩文件复制到myfile目录下,并解压(也可以手动提取)cp VMwareTools-10.1.6-5214329.tar.g...
2018-10-27 20:52:04 7554
原创 Linux简介之常用命令
一、操作系统的作用1.直接操作硬件2.把操作硬件的代码封装为系统调用,供其他程序员开发应用程序,间接地操作硬件。二、linux的内核版本和发行版本三、Linux 主要目录/:根目录,一般根目录下只存放目录/bin、/usr/bin:可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等/etc:存放系统配置文件/home:系统默认的用户家目录,新增用户账号时,用户的...
2018-10-27 16:22:34 144
原创 O2O优惠券使用预测
(11429826, 7)参考:赛题:https://tianchi.aliyun.com/getStart/information.htm?spm=5176.100067.5678.2.594e1db7rxv16q&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;raceId=231593https://github.com/InsaneLife/O2O-Predict-Coupon-Usage冠军代码:https://git...
2018-10-25 16:37:53 7058 7
原创 boosting系列算法
boosting是一种集成学习算法,由一系列基本分类器按照不同的权重组合成为一个强分类器,这些基本分类器之间有依赖关系。包括Adaboost算法、提升树、GBDT算法。一、Adaboost算法1、基本思想通过两个问题:1)如何更新样本权重D? 提高被弱分类器错分样本的权值,降低正分样本的权值,作为下一轮基本分类器的训练样本。2)如何将弱分类器组合成强分类器? 加权多数表决,误差率小的分...
2018-10-25 16:02:50 25584
原创 pandas分段读取csv
主要是因为内存太小,一次性读取会MemoryErrordef get_df(file_path): pd.set_option('display.max_columns', None) pd.set_option('display.width',200) mylist = [] for chunk in pd.read_csv(file_path, chunks...
2018-10-20 16:54:33 1757
原创 DataFrame的groupby()函数
groupby()是一个分组函数,对数据进行分组操作的过程可以概括为:split-apply-combine三步:1.按照键值(key)或者分组变量将数据分组。2.对于每组应用我们的函数,这一步非常灵活,可以是python自带函数,可以是我们自己编写的函数。3.将函数计算后的结果聚合。举例:df = pd.DataFrame({'key1':list('aabba'), ...
2018-10-20 11:36:51 10611
原创 TF-IDF原理及sklearn调用
一、原理TF-IDF,也就是“词频-逆文本频率”,是文本挖掘中做分词、向量化之后的一个操作,它由两部分组成:1、词频:某个词在当前文本中出现的次数。2、IDF:有些词语虽然词频很高,但是并不重要,IDF衡量的就是一个词的重要度。IDF的基本公式:IDF(x)=logNN(x)IDF(x) = log\frac{N}{N(x)}IDF(x)=logN(x)N其中,N代表训练集中docum...
2018-10-18 22:07:16 588
原创 朴素贝叶斯原理及sklearn调用
与其他大多数的分类算法不同,如:决策树、KNN、逻辑回归等,它们都是判别方法,直接学习出类别y和特征x之间的关系。朴素贝叶斯属于生成方法,它的理论基础是贝叶斯公式:P(Y∣X′)=P(X′∣Y)P(Y)P(X)P(Y|X&amp;amp;#x27;)=\frac {P(X&amp;amp;#x27;|Y)P(Y)}{P(X)}P(Y∣X′)=P(X)P(X′∣Y)P(Y),其中P(Y)是先验知识,P(X’|Y)...
2018-10-18 20:40:14 2336
原创 numpy中的矩阵合并
1、np.append() 本质是复制,所以占内存比较大。2、np.concatenate()np.concatenate((y_train,np.zeros(len(over_samplings_x))),axis=0)3、列合并:np.column_stack()行合并:np.row_stack()a=[[0, 1, 2], [3, 4, 5], [...
2018-10-18 10:39:02 3164
原创 问题建模之交叉验证
在离线环节,需要对模型进行评估,根据评估指标选择最佳模型。这就需要交叉验证。下面介绍几种常用的交叉验证方法。一、留出法留出法非常简单,就是将数据集划分为训练集合测试集,它甚至不能看做是一种交叉验证,因为它并没有交叉的操作。这种方法的缺点是:1、划分测试集数据量对结论有影响。测试集数据量小,模型可信度不高;训练集数据量小,模型效果可能不够好。通常的做法是,2 /3 数据作为训练集,1 /3...
2018-10-11 20:21:10 1034
原创 问题建模之样本选择
为什么要进行样本选择呢?1、若样本集较大,在训练模型时带来资源和时间的巨大消耗。2、样本集中可能会有一些噪声点和异常点,影响模型效果。3、样本集中可能会有冗余数据或不相关的数据,对我们的模型训练没有提升。下面介绍一下样本选择的几种方法。一、数据去噪噪声的存在具有两面性,一方面,噪声的存在会导致数据质量变低 ,影响模型的效果,但通过在训练集中引人噪声数据也能起到提升模型健壮性的作用 。因...
2018-10-11 19:52:44 3787
原创 问题建模之评估指标
从今天开始学习美团机器学习实践这本书,加一些自己的理解,加油!!!机器学习解决问题的通用流程:问题建模---&amp;amp;amp;amp;gt;数据清洗和预处理--&amp;amp;amp;amp;gt;特征提取---&amp;amp;amp;amp;gt;模型选择--&amp;amp;amp;amp;gt;模型融合问题建模:解决一个机器学习问题,首先要分析问题,将问题转化为机器学习能解决的问题,这个过程要明确业务指标和模型预测
2018-10-11 16:44:47 3643
转载 搜索评价指标——NDCG
概念 NDCG,Normalized Discounted cumulative gain 直接翻译为归一化折损累计增益,可能有些晦涩,没关系下面重点来解释一下这个评价指标。这个指标通常是用来衡量和评价搜索结果算法(注意这里维基百科中提到了还有推荐算法,但是我个人觉得不太适合推荐算法,后面我会给我出我的解释)。DCG的两个思想: 1、高关联度的结果比一般关联度的结果更影...
2018-10-11 16:07:24 5163 2
原创 numpy和pandas的常用操作
一、numpy:1、np.zeronp.zeros(5) 1行5列 结果:array([ 0., 0., 0., 0., 0.])np.zeros((2, 1)) 2行1列 结果:array([[ 0.], [ 0.]])2、矩阵乘法np.dotnp.multiply二、pandas1、 读取文件并自定义列名pdData = pd.read_csv(...
2018-09-26 18:31:34 761
原创 Anacoda中安装第三方库
以jieba为例: 在网上下载压缩包之后,复制到Anaconda的安装目录下的/pkgs文件夹并解压,进入jieba-0.39,在命令窗口输入python setup.py install即可完成安装。 ...
2018-09-16 21:06:27 784
原创 关于问题排查
1.大部分程序通过设断点就可以找到问题出在哪里,但是有时候却找不出问题,这时要考虑是不是有拦截器,断点的调试是不能跟进拦截器的。 2.在线下开发时,可以通过设断点就能找到问题,但是刚发布到线上需要测试,或是线上出了问题怎么排查错误?这时候就要用到日志了。开发时要注意打印错误信息,以方便我们来排查问题:Logger logger = LoggerFactory.getLogger(Test...
2018-09-05 16:38:15 141
原创 @RestController和@Controller
1.@RestController注解相当于@ResponseBody + @Controller,我们都知道,加上@ResponseBody意思是返回json或xml到前台页面,也就是return里的东西。这时候,即使你在视图解析器InternalResourceViewResolver中配置相应的返回页面也是不起作用的。2.如果用@Controller注解,则可以配置视图解析器,retur...
2018-09-05 16:27:08 616
原创 Long与Integer之间的转换产生的问题
在开发中遇到了一个需要将Integer转Long的问题,才发现,包装类型是不能强制转换的。基本类型: 一、将long型转化为int型 long a = 10; int b = (int)a; 二、将int型转化为long型 int a = 10;long b = (long)a;包装类型 三、将Integer型转化为Long...
2018-09-05 16:12:14 54541 5
原创 面试题13:在O(1)时间删除链表节点
在给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。一般思路:从头开始遍历链表,找到指定节点的前一个节点,删除指定节点,那么这样的时间复杂度是O(n). 怎么样才能做到O(1)的时间复杂度呢?我们是否必须得找到前一个节点?换一个角度,删除当前节点不容易,但是删除当前节点的下一个节点是不是和容易?我们可以将指定节点的下一个节点的值赋给当前节点,然后删除下一个节点….....
2018-08-23 16:13:08 352 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人