自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

bitcarmanlee的博客

专注算法与数据,正在计划写机器学习方面的数学书籍,有出版社的朋友请联系。微信1833133594...

原创 No module named swigfaiss

本地ubuntu系统装了faiss以后,运行相关测试代码还会报如下错误: No module named '_swigfaiss' 查阅了一下github上faiss相关文档,还需要安装如下组件 sudo apt-get install libopenblas-dev sud...

2020-05-24 16:53:36 20 0

原创 推荐系统矩阵分解详解之spark ALS
原力计划

1.推荐系统与spark 做推荐系统的同学,一般都会用到spark。spark的用途相当广泛,可以用来做效果数据分析,更是构建特征与离线训练集的不二人选,同时spark streaming也是做实时数据的常用解决方案,mllib包与ml包里面也实现了很多常用的算法,是针对大数据集分布式算法最常用的...

2020-05-17 23:40:02 92 0

原创 推荐系统中的矩阵分解详解

0.前言 推荐系统最常见的两种场景为评分预测与排序。评分预测的典型场景为豆瓣上一个用户对电影的评分,淘宝上对某个商品的评分。排序的场景更为普遍,比如信息流业务中,从海量的内容中挑选出最合适的topN内容给用户展示,就是一个典型的排序问题。 推荐系统中非常经典的技术之一就是矩阵分解(Matrix F...

2020-05-13 23:15:46 74 0

原创 SparkStreaming kafka zookeeper本地环境调试安装

1.需求 线上需要使用流式数据实时反馈CTR,因此想用spark streaming计算相关数据。之前一直没有在本地配置streaming的调试环境,因此在本地安装一下streaming的调试环境并记录。 2.需要安装的组件 spark streaming一般会接消息队列作为数据源,以kafka为...

2020-05-12 15:52:54 66 0

原创 解压tar.gz文件与tar.bz2文件

解压tar.gz文件与tar.bz2文件的命令是不一样的。 其中 解压tar.gz的命令为 tar -zxvf ×××.tar.gz 解压tar.bz2的命令为 tar -jxvf ×××.tar.bz2 主要区别在于,一个参数为-z,一个参数为-j。 -z即询问是否有gzip属性,-j询问是否有...

2020-05-11 14:51:50 50 0

原创 ubuntu dock栏添加应用启动图标

1.问题描述 新安装的ubuntu18系统,自己下载的软件包安装好以后,无法将启动图标固定在dock栏上,导致每次启动都要去软件安装的目录中执行对应的启动脚本,非常不方便。为了解决上述问题,可以采用如下解决方案。 2.解决办法 以pycharm为例 在~/.local/share/applicat...

2020-05-11 14:27:52 41 0

原创 ubuntu修改源为阿里云

1.备份 先备份原有的配置,以防不测。 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2.修改配置 讲sources.list原有内容全部删除,加上如下配置 deb http://mirrors.aliyun.com/ubuntu...

2020-05-08 17:37:32 79 0

原创 python 时间戳转换,求时间差等常见用法

1.常用的模块 from datetime import datetime import time from dateutil.parser import parse 2.得到当前时间 def getCurrentTime(): now = datetime.now() prin...

2020-05-07 09:49:43 126 0

原创 tensorflow手动实现算法之三逻辑回归
原力计划

1.逻辑回归算法 逻辑回归是日常工作中最常用的算法之一。虽然逻辑回归很简单,出现的年代也比较久远,但是实现简单,可解释性强,一般效果也不会太差,尤其在处理海量数据集的时候具有性能上的巨大优势,因此逻辑回归一般会被用作线上算法的baseline版本之一。 之前逻辑回归系列文章 为什么要使用logis...

2020-04-29 16:34:54 46 0

原创 numpy与tensorflow中的广播(broadcast)机制

1.numpy中的广播 广播(broadcast)是numpy中经常使用的一个技能点,他能够对不同形状的数组进行各种方式的计算。 举个简单的例子: a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) c = a + b 此时c的结果为[5, 7, 9]...

2020-04-29 15:06:34 82 0

原创 tensorflow手动实现算法之二多元线性回归

1.多元线性回归 与前面线性回归不同,线性回归的变量X只有一维,而多元线性回归的输入 X有多维。其他方面都很类似。 2.代码实现 ''' 0.00632 18.00 2.310 0 0.5380 6.5750 65.20 4.0900 1 296...

2020-04-28 20:54:43 65 0

原创 tensorflow手动实现算法之一线性回归

0.前言 现在算法相关的框架与工具,封装得越来越好,调用越来越方便,以至于很多算法工程师被嘲笑或者自嘲为"调包侠",“调参侠”。确实在实际工作中,需要自己从头到尾实现算法的机会越来越少,尤其是分布式的系统,最多就是在框架实现的基础之上拉出一部分逻辑进行二次开发重新封装一下。即便...

2020-04-28 11:26:42 86 0

原创 TypeError: Fetch argument has invalid type class 'numpy.float32', must be a string or Tensor

1.问题 tensorflow代码在运行的时候,出现如下错误 Epoch: 0010 cost= 0.080483146 W= 0.23614137 b= 0.97142047 ... TypeError: Fetch argument 0.080483146 has invalid type &...

2020-04-26 12:00:46 119 0

原创 小白都能理解的矩阵与向量求导链式法则
原力计划

0.前言 深度学习中最常见的是各种向量还有矩阵运算,经常会涉及到求导操作。因此准确理解向量矩阵的求导操作就显得非常重要,对我们推导计算过程以及代码书写核对有非常大的帮助。 神经网络中最常见的操作为向量,矩阵乘法,在求导的时候经常需要用到链式法则,链式法则在计算过程中会稍微麻烦,下面我们来详细推导一...

2020-04-21 22:41:45 170 1

原创 交叉熵损失函数(Cross Entropy Error Function)与均方差损失函数(Mean Squared Error)

1.均方差损失函数(Mean Squared Error) 均方差损失函数是预测数据和原始数据对应点误差的平方和的均值。计算方式也比较简单 MSE=1N(y^−y)2MSE = \frac{1}{N}(\hat y - y) ^ 2MSE=N1​(y^​−y)2 其中,N为样本个数。 2.交叉熵损...

2020-04-19 18:59:13 1600 0

原创 小白都能看懂的numpy与pandas中axis解释

1.axis参数 在numpy与pandas,以及各种涉及到数值计算的类库中,都会有axis这个参数。这个参数非常重要,初学者理解起来比较困难,如果按二维矩阵中行列的概念去理解会比较难理解。今天咱们用另外一种角度去理解axis参数,比较清晰更容易理解。 2.二维的情况 先看一个例子 data = ...

2020-04-17 16:28:42 81 0

原创 pandas读取与存储操作详解

1.前言 pandas可以将读取到的数据(不一定是csv或者txt)转换成dataframe,然后后面可以方便地对dataframe进行操作,进行各种数据分析工作。下面我们对pandas里常用的一些IO操作进行详细的分析。 2.read_csv read_csv最常用的方式是从文件中读取数据,re...

2020-04-17 12:03:38 70 0

原创 Java Byte数组与Long的相互转化

1.java.nio中的Buffer java.nio(NEW IO)是JDK 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同, NIO支持面向缓冲区的、基于通道的IO操作。 NIO将以更加高效的方式进行...

2020-04-17 10:03:15 40 0

原创 科学计算库BLAS LAPACK ATLAS OpenBLAS MKL EIGEN等之间的关系

1.BLAS(Basic Linear Algebra Subprograms)与LAPACK (Linear Algebra PACKage) Blas是Netlib基于Fortran实现的基本向量乘法,矩阵乘法的一种科学计算函数库。 Fortran语言是为了满足数值计算的需求而发展出来的。19...

2020-04-15 11:38:43 109 0

原创 anaconda下载过慢修改源配置

1.anaconda默认源太慢 anaconda的默认源在下载安装相应包的时候,速度很慢,碰到包稍微大一点,基本就慢得让人无法接受。因此可以更改一下源的配置,提高效率。 2.查看conda版本 执行下面的命令 conda --version conda 4.8.2 可以查看到本地的conda版本...

2020-04-14 21:49:51 213 0

原创 hive窗口函数实战(2)

1.什么是窗口函数 在明白窗口函数的用途之前,我们先稍微提一下聚合函数,比如sum, count等常用的聚合函数,作用是将一列中多行的值合并为一行。与之对应的是,窗口函数完成的功能是本行内运算,从而多行的运算结果,即每一行的结果对应的多行的结果。一般窗口函数的语法为 function() over...

2020-04-08 17:50:26 84 0

原创 item2vec详解

1.item2vec的兴起 自从word2vec被证明效果不错以后,掀起了一股embedding的热潮。item2vec, doc2vec,总结起来就是everything2vec。在实际工作中,embedding的使用也非常广泛,今天我们就来说说常用的item2vec。 word2vec构建样本...

2020-04-07 23:04:13 281 0

原创 小白都能了解的聚类算法之四(谱聚类)

1.谱聚类概述 谱聚类(Spectral clustering)是利用矩阵的特征向量进行聚类的一种方法,其本质上是矩阵特征分解进行降维的一种方法。它一般由两部分组成,第一部分是对数据进行变换,第二部分再使用传统的kmeans等方法对变换以后的数据进行聚类。 谱聚类是从图论中演化出来的算法,后来在聚...

2020-03-29 23:12:17 142 0

原创 小白都能了解的聚类算法之三(层次聚类)

1.简介 层次聚类(Hierarchical Clustering)通过计算各类别中数据之间的相似度,最终创建一棵有层次的嵌套聚类树。起核心思想是基于各"簇"之间的相似度,在不同层次上分析数据,得到最终的树形聚类结构。 2.agglomerative与divisive 自底向上...

2020-03-29 12:07:22 135 0

原创 小白都能了解的聚类算法之二(DBSCAN)

1.简介 DBSCAN(Density-Based Spatial Clustering of Application with Noise)是一种基于密度的经典聚类算法,出现的时间大概是1996年前后。 2.DBSCAN的一些基本概念 DBSCAN算法基于一组“邻域”参数(经常用ϵ\epsilo...

2020-03-27 22:43:18 90 0

原创 小白都能了解的聚类算法之一(Kmeans与GMM)

1.标准Kmeans 经典的标准kmeans算法无需多言,每个无监督学习的开场白一般都是标准kmeans算法。具体的原理不再多言,可以参考之前的文章: https://blog.csdn.net/bitcarmanlee/article/details/52092288 标准的kmeans的优缺点...

2020-03-24 23:58:20 183 0

原创 小白都能理解的ROC曲线与AUC值

1.ROC曲线 在信号检测理论中,接收者操作特征曲线(receiver operating characteristic curve,或者叫ROC曲线)是一种坐标图式的分析工具,用于 (1) 选择最佳的信号侦测模型、舍弃次佳的模型。 (2) 在同一模型中设定最佳阈值。 在做决策时,ROC分析能不受...

2020-03-22 21:24:05 195 0

原创 小白都能理解的FTRL

前言 FTRL(Follow The(Proximally) Regularized Leader)算法是Online Learning的一种常用方法。 传统的机器学习算法,基本的步骤是离线先做数据清洗,ETL,特征工程,然后训练模型上线。模型上线后,一般就是静态的,不会在线上有任何变化。即使是效...

2020-03-20 17:31:50 109 0

原创 Redis常用数据结构

1.Redis数据结构概览 Redis总共包含有五种数据结构: 1.String,单个key,单个value,一个redis字符串中最大有512M。 2. Hash 是一个键值对的集合 3. List 是一个链表结构 4. Set 是一个无序集合,并且无重复 5. Zset(sort set) 是...

2020-03-19 14:55:25 100 0

原创 HashMap简单小结

1.HashMap的基础结构 在1.7中,HashMap 底层是基于 数组 + 链表的结构组成。在1.8中,如果链表的长度大于一定的值,链表会转成红黑树。 2.HashMap的参数(1.8) /** * The default initial capacity - MUST be...

2020-03-18 22:18:39 60 0

原创 redis缓存命中率计算

登录到Redis服务器上以后,输入info命令,在Stats部分会看到如下数据 # Stats total_connections_received:7429663 total_commands_processed:5927397034 instantaneous_ops_per_sec:1 to...

2020-03-18 18:41:05 75 0

原创 BloomFilter, Count-Min Sketch算法

1.bloom filter 布隆过滤器(英语:Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。 2.两种错误...

2020-03-08 21:48:35 121 0

原创 Horner法则,MurMurHash

1.Horner法则 假设有一个n次多项式需要计算。 f(x)=anxn+an−1xn−1+⋯+a1x+a0f(x) = a_nx^n + a_{n-1}x^{n-1} + \cdots + a_1x + a_0f(x)=an​xn+an−1​xn−1+⋯+a1​x+a0​ 如果直接进行计算,需要...

2020-03-08 18:55:25 40 0

原创 HyperLogLog浅析

1.伯努利实验 如果我们不断投掷一个硬币,而且该硬币是均匀的,每次投掷出现正反面的概率相等都为0.5,知道我们得到第一个正面,假设这个过程为一次伯努利过程。那么,投掷一次硬币就得到正面的概率为1/2,投掷两次硬币得到正面的概率为1/4。 现在有如下两个问题: 1.如果进行上述n次伯努利过程,所有投...

2020-03-05 22:13:19 51 0

原创 缓存穿透,缓存击穿,缓存雪崩以及解决方案

1.缓存穿透 一个缓存系统,正常情况下我们去查询的时候大部分key都是存在的。 如果去请求一个缓存系统中没有的数据,此时系统如果没有经过优化,会将请求继续打到数据库上,但其实数据库上也没有这条数据。上面这种情况就叫缓存穿透。 如果有人要对系统进行攻击,拿大量不存在的key去发起请求,你的系统将会产...

2020-03-02 10:06:05 99 1

原创 调和平均数

调和平均数(Harmonic mean),是求一组数值的平均数的方法中的一种,一般是在计算平均速率时使用。 计算方法为: nHn=1a1+1a2+⋯+1an\frac{n}{H_n} = \frac{1}{a_1} + \frac{1}{a_2} + \cdots + \frac{1}{a_n}H...

2020-03-01 23:55:04 211 0

转载 Java 程序员都该懂的 volatile 关键字

原文链接 https://www.jianshu.com/p/4aea469f8e47 一. 主存与工作内存 说 volatile 之前,先来聊聊 Java 的内存模型。 在 Java 内存模型中,规定了所有的变量都是存储在主内存当中,而每个线程都有属于自己的工作内存。线程的工作内存保存了被该内存...

2020-02-20 16:39:47 88 0

原创 spark User class threw exception: java.lang.NoSuchMethodError

在spark 集群上运行job的时候,经常会出现类似如下错误提示: User class threw exception: java.lang.NoSuchMethodError: org.apache.spark.WritableConverter$.writableWritableConver...

2020-02-08 12:14:37 302 0

原创 查找算法小结

前言 对数据进行查找是数据处理中一个最基本最常见同时也最重要的操作。那么常见的查找方法有哪些,怎么能够实现又好又快的查找方式呢?下面来做一个小结 1.遍历,顺序查找 如果数据没有任何特点可言,要在一堆数据比如一个一维数组中查找一个特定的数据,此一维数组没有规律。那么很自然想到的方法就是遍历该一维数...

2020-02-01 22:04:46 53 0

原创 linux shell用变量的值作为新变量名

实例如下: path1="123abc" i=1 pathstr=path$i echo $pathstr # 结果为path1 # 想将path1替换为123abc path=`eval echo '$'"$pathstr"` echo...

2020-01-20 09:52:41 211 0

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