自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(141)
  • 收藏
  • 关注

原创 【个人项目】基于scrapy-redis的股票分布式爬虫实现及其股票预测算法研究

前言 都说做计算机的,项目实践是最能带给人成长的。之前学习了很多的大数据和AI的知识,但是从来没有自己做过一个既包含大数据又包含AI的项目。后来就决定做了个大数据+AI的分布式爬虫系统。下面笔者会讲述整个项目的架构,以及所用到技术点的些许介绍。项目介绍这个项目是笔者的个人项目,是基于scrapy-redis框架的股票分布式爬虫框架实现。scrapy是个爬虫框架,但只允许单机的...

2018-09-10 23:44:35 2213

原创 利用tf.feature_column对tf_record进行特征加工

最近在琢磨一个问题,DL模型读取数据的形式是向量,那么假使存储数据格式为tfrecord。在这种情况下,有几个问题需要解决。需要将里面的数据转换为向量。并且在转换的过程中,会使用feature column的api来进行一些特征加工,比如one-hot。同时,测试集的数据也要转换为同样的向量格式。最后,在线上serving的时候,从后端获取的数据为float或者string形式,也要进行同样的特征加工,才能被送进模型进行预测。为了解决上面三个点,笔者思考了下具体实现( tf 版本是1.9.0.

2022-02-13 17:50:42 1100

原创 word2vec tensorflow2.0代码

from __future__ import division, print_function, absolute_importimport collectionsimport osimport randomimport urllibimport zipfileimport numpy as npimport tensorflow as tf learning_rate = 0.1batch_size = 128num_steps = 3000000display_step =

2021-06-22 10:37:53 405

原创 Node2vec原理剖析,代码实现

DeepWalk原理介绍与词嵌入类似,图嵌入基本理念是基于相邻顶点的关系,将目的顶点映射为稠密向量,以数值化的方式表达图中的信息,以便在下游任务中运用。Word2Vec根据词与词的共现关系学习向量的表示,DeepWalk受其启发。它通过随机游走的方式提取顶点序列,再用Word2Vec模型根据顶点和顶点的共现关系,学习顶点的向量表示。可以理解为用文字把图的内容表达出来,如下图所示。DeepWalk训练图表示的整个过程大致可以分为2步:随机游走提取顶点序列使用skip-gram学习顶点嵌入训

2021-06-09 23:30:59 4325 5

原创 详解熵, 交叉熵,KL散度,互信息

首先介绍几个信息论中的概念。熵, 表示某个概率分布的不确定度:H(x)=−∑p(x)logp(x)H(x) = - \sum p(x) log p(x)H(x)=−∑p(x)logp(x)联合熵,两个变量联合分布的不确定度:H(x,y)=∑∑p(x,y)logp(x,y)H(x,y) = \sum \sum p(x,y) log p(x,y)H(x,y)=∑∑p(x,y)logp(x,y)条件熵,在X确定后,Y的不确定度:H(Y∣X)=∑p(xi)H(Y∣X=xi)=∑∑p(x,y)

2021-06-06 15:49:09 1390

转载 通俗易懂的解释评分卡刻度原理

违约概率:p比率(违约概率/正常概率): odds=p/(1-p)评分卡分值:表示为比率对数的线性表达式Score=A-B*log(odds)A、B是常数,负号的作用使得违约概率越低,分数越高。Logistic回归模型:Log(odds)=β+β1x1+…+βpxp其中,用建模参数拟合模型可以得到模型参数β(截距),β1,…,βp.两个假设:1.在某个特定的比率设定特定的预期分值(设定比率为θ的特定点的分值为P);2.指定比率翻番的分数(PDO)(比率为2θ的点的分值为P+PDO).

2021-02-24 17:14:59 1419 2

原创 分享两道经典的二叉树LC题目---重建二叉树/二叉树的序列化反序列化

1.重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回根结点。解题思路在于:前序遍历中,第一个被遍历的节点永远为根节点,然后再遍历左子树,最后才是右子树。中序遍历中,根节点会被放在中间遍历,根节点左边为左子树,右边为右子树。如上,从这张图,我们能够获知,给点两个数组(前序,中序),根节点的存在

2021-02-11 16:49:47 305

原创 用户画像算法TF_IDF,TextRank实战

TF_IDF算法#coding:utf-8import jieba.analyse#基于 TF-IDF(term frequency–inverse document frequency) 算法的关键词抽取print('*****案例一********')txt='该项目采用盆栽与田间试验相结合的研究方法,揭示了冀南矿粮复合区矿井水的不同灌溉方式对冬小麦和夏玉米轮作体系中粮食产量与品质的影响,探明了矿井水直接用于灌溉抑制冬小麦和夏玉米作物的光合作用,导致作物减产,降低作物的籽粒品质;发现了矿井水

2021-02-02 20:05:55 944

原创 最近公共祖先(二叉搜索树,普通二叉树)

236. 二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:

2020-11-17 09:54:09 280

原创 113. 路径总和 II

给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[ [5,4,11,2], [5,8,4,5]]

2020-11-05 14:43:21 110

原创 剑指 Offer 26. 树的子结构

输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3 / \ 4 5 / \ 1 2给定的树 B: 4 / 1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A = [3,4,5,1,2], B = [4,1]输出:tru

2020-10-28 15:29:45 121

转载 LeetCode399.除法求值

原题链接:https://leetcode-cn.com/problems/evaluate-division/题目描述:知识点:图的深度优先遍历思路:图的深度优先遍历本题是一题经典的图论算法,这里的除法运算可以看成是连接两个节点的一条有向边,那么计算结果存在的条件是什么呢?(1)两个字符串在equations中都出现过。(2)这两个字符串在equations中存在联系,即同属于一个连通分量。首先,利用一个Map将字符串与数字编号一一对应起来。对于图的深度优先遍历,我们选择用一个邻接矩

2020-09-06 20:55:28 174

原创 Leetcode-207.课程表

很经典的图论题目,如果想学习图论的遍历的话,以这道题作为入门,是非常合适的。图的DFS图的DFS和树的DFS其实没什么不同,只不过图是有环的,有可能DFS会走着走着,走回自身。图的BFS同理,图的BFS和树的BFS也是一样。一般情况下,考虑图的DFS,BFS时,要多留意图节点的入度,出度。题目如下:你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个.

2020-08-09 14:23:06 159

原创 Leetcode 79. 单词搜索

Leetcode 79. 单词搜索给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCED", 返回 true给定 word = "SEE", 返回 true给定 wo

2020-07-18 14:58:21 140

原创 深度学习推荐系统 学习笔记--Chapter 2.2

承接深度学习推荐系统 学习笔记–Chapter 2.1一文逻辑回归模型的表达能力不够强大,会造成信息的损失,无法做很灵活的特征交叉。因此诞生了FM模型家族,加入了大量的特征交叉思想。因子分解机(Factorization Machine, FM)是由Steffen Rendle提出的一种基于矩阵分解思想的机器学习算法,FM的提出是为了解决大规模稀疏数据中的特征组合问题。POLY2模型POLY2=∑j1=1n∑j2=j1+1nwh(j1,j2)xj1xj2POLY2 = \sum^n_{j1=1.

2020-06-18 17:43:37 226

原创 深度学习推荐系统 学习笔记--Chapter 2.1

章节2前言即使在深度学习空前流行的今天,协同过滤,矩阵分解,因子分解机等传统推荐模型依旧可凭其解释性强,硬件环境要求低,易于快速训练和部署等不可替代的优势,拥有大量适用的场景传统推荐模型是深度学习推荐模型的基础。在很多出名的推荐系统框架里,都能看到传统推荐模型的影子或思想。传统推荐模型模型的演进关系图传统推荐模型分为几个大族:协同过滤算法族:分为ItemCF,UserCF,但上面两个算法的泛化能力都比较弱,头部效应过于明显,因此后面延伸除了矩阵分解模型MF。逻辑回归模型族:LR相

2020-06-17 10:34:34 352

原创 深度学习推荐系统 学习笔记--Chapter 1

深度学习推荐系统 学习笔记本系列为笔者阅读《深度学习推荐系统》一书的读书笔记。将书读薄,是进步的第一步导言不同的商业化场景对推荐系统的优化目标不一样,比如,电商场景需要更高的购买转化率(CVR),新闻类场景需要更高的点击率,视频类需要更高的观看时长(比如,YouTube就是)推荐系统模块推荐系统主要分为两个部分,数据部分和模型部分。数据部分主要涉及到“用户”,“物品”,“场景”信息的收取,并且需要数据经历离线,准实时,实时的处理,其处理结果作为推荐系统模型部分的输入(这里指的输入是

2020-05-13 16:50:54 375

原创 Spark DataFrame算子使用与窗口函数

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2020-05-05 14:16:46 3311

转载 Spark Shuffle问题高级调优

数据倾斜调优调优概述有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。数据倾斜发生时的现象绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一...

2020-03-13 17:38:20 825

转载 Spark底层原理---Spark宽依赖和窄依赖深度剖析

RDD依赖关系与stage划分Spark中RDD的高效与DAG图有着莫大的关系,在DAG调度中需要对计算过程划分stage,而划分依据就是RDD之间的依赖关系。1. 窄依赖与宽依赖针对不同的转换函数,RDD之间的依赖关系分为窄依赖(narrow dependency)和宽依赖(wide dependency,也成shuffle dependency)。1.1 窄依赖窄依赖是指1个父RDD...

2020-03-02 23:25:37 707

转载 Spark内核剖析4---Master主备切换机制

Spark Master主备切换主要有两种机制,之中是基于文件系统,一种是基于Zookeeper.基于文件系统的主备切换机制需要在Active Master挂掉后手动切换到Standby Master上,而基于Zookeeper的主备切换机制可以实现自动切换Master。切换流程图流程说明:Standby Master模式使用持久化引擎读取持久化的storeApps、storeD...

2020-02-29 15:45:47 184

原创 Spark内核剖析2---Spark yarn client/cluster模式提交任务流程

在Spark内核剖析1—Spark standalone模式提交任务过程中描述了spark的standalone提交模式的主要细节,这是spark最经典的模式。但一般在生产中,使用的都是yarn-client或yarn-cluster模式,下文主要描述其原理。Yarn-cluster模式这里的ResourceManager相当于standalone的master,NodeManager相...

2020-02-22 12:59:49 460

原创 Spark内核剖析1---Spark standalone模式提交任务过程

standalone 模式Spark standalone模式是spark很常见的一种模式,集群角色分为Master,Worker,Driver三个端。Master端是集群的大脑,负责协调,分配资源给worker。Worker端是集群“办事的人”,主要接受Master的调度,以及driver端传来的task的执行。Driver端是指提交spark-submit的服务器,主要会将提交的程序...

2020-02-13 14:41:55 214

转载 如何为Spark集群配置–num-executors, – executor-memory和–execuor-cores

前言在我们提交spark进程时,应该如何为Spark集群配置–num-executors, - executor-memory和–execuor-cores 呢?一些资源参数设置的基本知识Hadoop / Yarn / OS Deamons 当我们使用像Yarn这样的集群管理器运行spark应用进程时,会有几个守护进程在后台运行,如NameNode,Secondary NameNod...

2020-01-02 09:34:11 2304

转载 Scala的implicit

scala语言是纯粹面向对象的语言,对象化的程度比Java更深,其中有个特质是比较特别的–implicit,用于隐式转换和隐式参数。下面为其介绍。隐式参数:把一些变量声明为隐式参数,把一些方法的参数声明为可以支持隐式参数的,当调用方法时,如果没有传递该参数,那么可以去使用隐式参数。隐式转换:首先提供一些类型转换的能力(通过隐式类和隐式方法),然后在调用某些方法时,当某些对象的类型不...

2019-12-06 11:31:24 156

原创 Arango入门Java实现读写

Arango是开源的图数据库,笔者最近正在学习,写了一段Java入门代码代码基于arango官网提供的flights,airports数据,即飞机航线的关系图。笔者参考ArangoDB简单实例介绍,实现了数据导入和AQL操作,顺便写了下段代码,实现数据库的读写操作。/** * Title: FirstProject.java* Description: * Copyright:...

2019-11-05 23:24:24 584

原创 Spark常用RDD算子总结

spark的算子比较多,但只有部分是常用的,特此记录下来,如需补充更多算子,请在评论留言。常见RDD算子(非Key-Vaue型)mapmap作用在RDD分区的每一个元素上scala> val nums=sc.parallelize(List(1,2,3))nums: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[...

2019-10-07 15:46:58 843

原创 记--结合业务从零实现一个推荐系统

有空再写

2019-07-30 00:00:49 1354

原创 [Python造轮子]从零实现一个类关系型数据库

前言进入IT这一行也有几个年头了,该听闻的技术,大都没有遗漏,所以广度上的扩展,不太急迫了,但深度上的扩展,还有很多要做的工作,所以就觉得从 “造轮子” 这方面切入,慢慢扩展自己的深度了。借助于实现一个数据库,笔者主要的目的有三个:1.深入了解一个数据库的底层原理,以及要从零实现的话,要包含哪些模块,如何实现2.这次实现的数据库是玩具级别的,几乎不需要测试我就能知道其具有非常多的缺陷,性...

2019-03-31 12:40:53 862 1

转载 深入浅出数据库索引原理

看到一篇讲述数据库原理非常好的文章,无耻的转载了。转载地址在文章尾。前段时间,公司一个新上线的网站出现页面响应速度缓慢的问题, 一位负责这个项目的但并不是搞技术的妹子找到我,让我想办法提升网站的访问速度 ,因为已经有很多用户来投诉了。我第一反应觉的是数据库上的问题,假装思索了一下,摆着一副深沉炫酷的模样说:“是不是数据库查询上出问题了, 给表加上索引吧”,然后妹子来了一句:“现在我们网站访...

2019-03-09 10:21:52 147

转载 为什么spark中只有ALS

前言spark平台推出至今已经地带到2.1的版本了,很多地方都有了重要的更新,加入了很多新的东西。但是在协同过滤这一块却一直以来都只有ALS一种算法。同样是大规模计算平台,Hadoop中的机器学习算法库Mahout就集成了多种推荐算法,不但有user-cf和item-cf这种经典算法,还有KNN、SVD,Slope one这些,可谓随意挑选,简繁由君。我们知道得是,推荐系统这个应用本身并没有过时...

2019-02-22 18:56:44 497

原创 Single Number II leetcode java

在做下面这道题的时候,很可耻的使用了HashMap来AC了,但查到网上思路完全不是这样,一看题解,原来这道题还是有学问的,特记录下。题目:Given an array of integers, every element appears three times except for one. Find that single one.Note:Your algorithm should h...

2019-01-24 23:15:11 404

转载 Spark的GPU支持方法研究

引言:工作以来研究了一段时间的Spark利用GPU进行异构加速训练的的研究。下文是整理了网上一些常见的Spark结合GPU使用的方法。为了使用Spark进行机器学习,支持GPU是必须的,上层再运行神经网络引擎。目前AWS\GCP和Databricks的云都已经支持GPU的机器学习,AliYun也在实验之中。这包括几个层次:GPU直接支持Spark。因为Spark是多线程的,而GPU往往只能...

2018-12-22 17:54:32 5693

转载 LeetCode25 以k为一组,反转链表

[LeetCode25] Reverse Nodes in k-Group 每k个一组翻转链表ven a linked list, reverse the nodes of a linked list k at a time and return its modified list.k is a positive integer and is less than or equal to th...

2018-12-06 11:18:01 242

转载 LeetCode(17) - Letter Combinations of a Phone Number

经典的backtracking(回溯算法)的题目。当一个题目,存在各种满足条件的组合,并且需要把它们全部列出来时,就可以考虑backtracking了。当然,backtracking在一定程度上属于穷举,所以当数据特别大的时候,不合适。而对于那些题目,可能就需要通过动态规划来完成。递归解法这道题的思路很简单,假设输入的是"23",2对应的是"abc",3对应的是"edf",那么我们在递归时,先...

2018-11-25 12:47:50 189

转载 2Sum Ksum解法

2Sum题目Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use th...

2018-11-24 00:49:33 611

转载 加速python运行-numba

numba是一个用于编译Python数组和数值计算函数的编译器,这个编译器能够大幅提高直接使用Python编写的函数的运算速度。numba使用LLVM编译器架构将纯Python代码生成优化过的机器码,通过一些添加简单的注解,将面向数组和使用大量数学的python代码优化到与c,c++和Fortran类似的性能,而无需改变Python的解释器。Numba的主要特性:动态代码生成 (在用户偏爱的导...

2018-11-21 16:29:06 2215

转载 python3解决位移溢出

在观看该文章前,读者先可以看看这篇文章,清晰明了的介绍了位移的操作:https://www.cnblogs.com/yx729315991/p/6387711.html因为要将js的一个签名算法移植到python上,遇到一些麻烦。int无限宽度,不会溢出算法中需要用到了32位int的溢出来参与运算,但是python的int是不会溢出的,达到界限后会自己转为long,所以很麻烦。#使用-34...

2018-11-19 17:13:17 2805

转载 Python cffi 初探

新建立一个 ext_build.py 用于生成扩展# ext_build.pyimport numpy as npimport cffiffi = cffi.FFI()ffi.cdef("""int add(int a, int b);""")ffi.cdef("""int sub(int a, int b);&am

2018-11-18 11:00:17 2009

转载 Flume拦截器---实现按照时间生成数据目录

Flume中的拦截器(interceptor),当Source读取events发送到Sink的时候,在events header中加入一些有用的信息,或者对events的内容进行过滤,完成初步的数据清洗。这在实际业务场景中非常有用,Flume-ng 1.7中目前提供了以下拦截器:Timestamp Interceptor;Host Interceptor;Static Interceptor...

2018-10-27 23:54:42 2654

空空如也

空空如也

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

TA关注的人

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