自定义博客皮肤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的博客

https://github.com/bitcarmanlee/easy-algorithm-interview-and-practice 同步更新,欢迎star

  • 博客(616)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Flink流式计算在节省资源方面的简单分析

本文转载自小米大数据部王加胜老师内部作品,并获得加胜老师转载授权。本文会在原文基础上,删除一些公司内部不能泄露的业务数据。1.小米流式计算发展历程小米在流式计算方面经历了Storm、Spark Streaming和Flink的发展历程;从2019年1月接触Flink到现在,已经过去了大半年的时间了。对Flink的接触越深,越能感受到它在流式计算方面的强大能力;无论是实时性、时间语义还是对状态计算的支持等,都让很多之前需要复杂业务逻辑实现的功能转变成了简洁的API调用。还有不断完善的Flink SQL功

2021-04-25 22:25:39 56

原创 Set Mismatch leetcode 645

1.题目描述The set S originally contains numbers from 1 to n. But unfortunately, due to the data error, one of the numbers in the set got duplicated to another number in the set, which results in repetition of one number and loss of another number.Given an ar

2021-04-13 22:12:53 50

原创 提升github网站访问与clone速度

1.github访问众所周知的原因,国内访问github是个老大难问题。经常访问不了,或者访问速度很慢,或者从github上面clone项目很慢,经常被搞得痛不欲生…2.设置代理为了方便访问github,可以采用配置代理的方式。对于http或者https协议,可以如下设置//设置全局代理//httpgit config --global https.proxy http://127.0.0.1:1080//httpsgit config --global https.proxy https

2021-03-20 21:42:19 254 3

原创 深度学习中降低过拟合(OverFitting)的方法

0.前言过拟合(OverFitting)问题在机器学习中很常见,即模型在训练集数据上表现很好,但在测试集与新数据集上泛化能力很差,这就是过拟合。1.过拟合的原因造成过拟合的原因很多。常见的如下1.训练集数据太少,很容易就过拟合了。2.训练集测试集的数据分布不一致,这点很容易被忽略。比如有的算法要求数据集符合高斯分布,训练集也满足条件,但是上线以后线上数据分布发生了变化,效果肯定不会太好。3.模型本身特别复杂。比如树模型,如果树的棵数太多,深度太大,也很容易就过拟合。2.深度学习中解决过拟合问题

2021-03-12 14:17:57 368

原创 ROC曲线与PR曲线对比

1.ROC曲线TPR=TPP=TPTP+FNTPR = \frac{TP}{P} = \frac{TP}{TP + FN}TPR=PTP​=TP+FNTP​FPR=FPN=FPFP+TNFPR = \frac{FP}{N} = \frac{FP}{FP + TN}FPR=NFP​=FP+TNFP​ROC曲线的纵坐标为TPR,真正率,其实也是召回率。分母为所有实际正样本。ROC曲线的纵坐标为FPR,假正率,是预测错误的负样本(实际为负样本,预测成正样本,所以分子是FP)在所有实际负样本中的占比。RO

2021-03-11 11:42:13 264

原创 常用激活函数总结

1.sigmoid函数sigmoid函数的形式为:f(x)=11+e−xf(x) = \frac{1}{1 + e^{-x}}f(x)=1+e−x1​其导数形式为:f′(x)=f(x)(1−f(x))f'(x) = f(x) (1 - f(x))f′(x)=f(x)(1−f(x))sigmoid经常用于隐层神经元输出,函数与导数的图像如下观察函数的图像,我们很容易发现其优点与缺点。优点:1.输出值再(0,1)之间,输出的范围在稳定的范围内,可以用作输出层。实际上sigmoid经常用作输出层

2021-03-10 20:27:38 412

原创 史上最简明八皇后问题分析与套路总结

1.什么是八皇后问题八皇后问题是一个以国际象棋为背景的问题:如何能够在8×8的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n×n,而皇后个数也变成n。当且仅当n = 1或n ≥ 4时问题有解。(问题描述来自参考文献1)数学王子高斯当年花费了无数心血,最近计算认为八皇后问题有76种解法,现在我们通过计算机模拟可以轻松计算出八皇后问题的真正解法有92种。能让

2021-03-08 22:06:04 281 2

原创 史上最全排列组合算法详解以及套路总结一文搞定

1.排列组合问题排列组合是经典的算法问题,相关的内容中学阶段就学习过。在讲算法实现之前,我们先简单复习一下排列组合的相关定义。排列,英文名称为Permutation,简称P。假设有一个数组{1, 2, 3, 4, 5},我们需要将数组中的所有元素进行排序,那么第一个位置,我们可以选择五个数字的任何一个,共有5种选择。第二个位置,可以选择剩余四个数字的任何一个,共有4种选择。第三个位置,可以选择剩余三个数字中的任何一个,共有3种选择。第四个位置,可以选择剩余两个数字中的任何一个,共有2种选择。最后一个位置

2021-03-07 22:45:50 823 2

原创 hive get_json_object json_tuple json解析详解

1.hive中处理json的两个函数json是常见的数据接口形式,实际中使用也很广泛,下面我们看看怎么在hive中解析json格式。hive中常用的解析json格式的函数有两个:先看看get_json_object> desc function extended get_json_object;+---------------------------------------------------------------------------------------------------

2021-03-03 15:58:38 165

原创 回文字符串,回文链表

leetcode中有一些与回文相关的题,下面我们来看几道。1.判断字符串是否回文串判断一个字符串是不是回文串,只需要使用双指针的方式,从字符串两端向中间靠拢即可。public class Huiwen { public static boolean huiwenStr(String s) { if (s == null || s.length() == 0) { return true; } int i=0, j=s.

2021-02-28 10:37:44 58 2

原创 leetcode 877 stone game

1.问题描述Alex and Lee play a game with piles of stones. There are an even number of piles arranged in a row, and each pile has a positive integer number of stones piles[i].The objective of the game is to end with the most stones. The total number of stone

2021-02-25 20:03:14 36

原创 leetcode319 Bulb Switcher

1.问题描述There are n bulbs that are initially off. You first turn on all the bulbs. Then, you turn off every second bulb. On the third round, you toggle every third bulb (turning on if it’s off or turning off if it’s on). For the nth round, you only toggle t

2021-02-24 17:00:23 29

原创 leetcode 292 NimGame

1.问题描述You are playing the following Nim Game with your friend:There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones.The one who removes the last stone will be the winner.You will take the first turn to remove the

2021-02-24 15:41:56 20

原创 hadoop hdfs文件给其他账号授权

1.文件账号授权需求hdfs上的目录与文件对应各自的kerberos账号,很多时候需要对另外的账号授予权限。这个时候可以使用setfacl命令来完成相应的需求。2.getfacl命令在了解setfacl之前,我们先看看getfacl命令。hadoop fs -getfacl filepath# file: filepath# owner: xxx# group: supergroupuser::rwxgroup::rwxmask::rwxother::rwx可以看到,此时file

2021-02-22 16:25:14 227

原创 ip地址与整数的相互转化

1.为什么需要将ip转化为整数对于ipv4的ip地址,如果使用字符串存储,占用的空间比较大。比如0.1.2.3这个字符串,需要的是7个字节。而对于255.255.255.255这个字符串,需要的是15个字节。整体看来,存储一个ip地址需要7-15个字节。那么实际使用过程中有没有更好的方式存储,从而节省存储空间?答案是肯定的。ipv4本质是32为的二进制字符串,一个int的整数刚好是4个字节32位,所以一个int类型的整数刚好可以表示一个ipv4地址。因此,我们使用4个字节的int类型数字来表示一个ip

2021-02-04 19:42:53 211

原创 spark 窗口函数(Window)实战详解

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice欢迎大家star,留言,一起学习进步1.为什么需要窗口函数在1.4以前,Spark SQL支持两种类型的函数用来计算单个的返回值。第一种是内置函数或者UDF函数,他们将单个行中的值作为输入,并且他们为每个输入行生成单个返回值。另外一种是聚合函数,典型的是SUM, MAX, AVG这种,是对一组行数据进行操作,并且为每个组计算一个返回值。上面提到的两种函数,实际当中使用非常广泛,但

2021-02-03 20:20:52 463

原创 git查看某次提交的内容

git上如果想查看某次commit的内容,按如下操作即可1.获取该次的commit idgit log2.查看该次commit的具体内容git show xxxid

2021-02-02 15:43:57 148 1

原创 pandas join操作详解

1.前言join操作是关系型数据库中最核心没有之一的操作,实际中最容易出问题,经常需要优化的点也是join操作。如果我们将dataframe类比为一张表,自然也会涉及到join操作,而且非常非常常见。下面我们就来仔细看看pandas中的join用法。2.join方法原型pandas源码中join方法的签名如下 def join( self, other, on=None, how="left", lsuffix="", rsuffix="", sort=False )

2021-01-28 15:28:42 902 1

原创 python md5算法调用与hashlib模块

1.python中的md5将一个字符串md5匿名化是数据处理中的一种常见手段,python3.X中也内置实现了md5算法,下面我们看下md5的用法。import hashlibdef test(): s = "123" m = hashlib.md5() for i in range(5): m.update(s.encode("utf8")) result = m.hexdigest() print(result)上面代码

2021-01-27 20:22:39 133 1

原创 pandas根据现有列新添加一列

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice欢迎大家star,留言,一起学习进步pandas中一个Dataframe,经常需要根据其中一列再新建一列,比如一个常见的例子:需要根据分数来确定等级范围,下面我们就来看一下怎么实现。def getlevel(score): if score < 60: return "bad" elif score < 80: retur

2021-01-26 20:38:27 754

原创 pandas某一列去重获取唯一值

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice欢迎大家star,留言,一起学习进步去重获取唯一值是常见的需求,下面我们看看pandas里面如何实现去重。直接看代码import pandas as pddef test(): df = pd.DataFrame({"c1": [1, 1, 2, 3, 1], "c2": [10, 20, 30, 40, 50]}) print(df) print()

2021-01-26 20:08:49 1002

原创 python 修改dataframe列名的几种方法

实际开发中经常有修改dataframe列名的需求,特意总结了如下可用的几种方法。import pandas as pddef t1(): df = pd.DataFrame({'c1':[1, 2, 3], 'c2': [4, 5, 6]}) print(df) df.columns = ['d1', 'd2'] print(df) df.rename(columns={'d1': 'e1', 'd2': 'e2'}, inplace=True)

2021-01-25 14:08:20 2810 1

原创 pandas获取dataframe的行数,列数,元素个数

1.测试数据1457822940 0 0 44 36422692440 0 0 3 31460826600 0 0 7 61410115140 -1 3 25 71161370800 0 0 18 14996746700 0 0 30

2021-01-08 18:18:22 2141 2

原创 史上最全macos安装xgboost教程

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice欢迎大家star,留言,一起学习进步0.前言自己的macos上一直没有安装上xgboost,最近因为工作需要,想在macos上安装一下xgboost。本来以为是个很简单的事情,没想到还是费了一些波折,特意记录一下1. 直接安装失败最开始直接使用pin install xgboost安装,安装过程没啥问题。但是安装完毕,使用过程中出现了问题。import xgboost

2021-01-02 23:05:53 495 3

原创 统计文本去重行数

常见的一个需求为:统计某个文本去重以后的行数可以使用如下命令:sort xxxfile | uniq | wc -l也可以使用如下命令sort -u xxxfile | wc -l简单解释一下其中sort -u的选项,解释如下 -u, --unique Unique keys. Suppress all lines that have a key that is equal to an already processed one. This optio

2021-01-02 22:05:02 85

原创 scala正则表达式 findFirstIn findAllIn findFirstMatchIn findAllMatchIn Match MatchData 提取分组

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice欢迎大家star,留言,一起学习进步0.引子节前最后一个工作日,在编写一个简单的正则表达式的时候,卡了比较长的时间。后来总结发现,还是对正则表达式的理解不是很深刻,于是利用假期的时间,特意比较详细地看了一下正则表达式相关内容并加以记录。1.findFirstIn findFirstMatchIn正则表达式中常用的方法包括findFirstIn,findFirstMatchIn等

2021-01-02 21:33:14 343

原创 pandas groupby 用法详解

1.分组groupby在日常数据分析过程中,经常有分组的需求。具体来说,就是根据一个或者多个字段,将数据划分为不同的组,然后进行进一步分析,比如求分组的数量,分组内的最大值最小值平均值等。在sql中,就是大名鼎鼎的groupby操作。pandas中,也有对应的groupby操作,下面我们就来看看pandas中的groupby怎么使用。2.groupby的数据结构首先我们看如下代码def ddd(): levels = ["L1", "L1", "L1", "L2", "L2", "L3",

2020-12-21 22:55:56 2073 1

原创 pandas map applymap apply方法详解

0 前言pandas的基本数据结构是Series与DataFrame。在数据处理过程中,对每个元素,或者每行/每列进行操作是尝尽的需求。而在pandas中,就内置了map,applymap,apply方法,可以满足上面的需求。接下来结合实际的例子,看看一些基本/常规/高大上的操作。1.map方法map方法在数据处理中属于基本操作,重要性无须多言。map方法一般是对元素进行逐个操作,下面来看看几个例子。首先明确一点:map方法只能作用再Series上,不能作用在DataFrame上。换句话说,Data

2020-12-20 22:19:19 373 3

原创 pandas cut qcut 分箱算法详解

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice欢迎大家star,留言,一起学习进步1.分箱数据分箱的需求在实际中非常常见。对于一组连续的值,会对其切分成若干段,每一段我们将其看做一个类别,这个过程就叫做分箱。分箱操作本质上就是将连续值离散化的一个过程。举个常见的例子:最常见的就是对年龄进行分箱操作。假设人的年龄从0-120岁不等,我们将0-5认为是婴幼儿,6-15岁认为是少年,16-30岁认为是青年,31-50认为是中年,

2020-12-19 21:32:35 600 1

原创 手动计算均值,方差,协方差,皮尔逊系数

1.均值,方差假设有个数组,一共n个元素,那么均值,方差的计算公式为均值:xˉ=1n∑inxi\bar x = \frac{1}{n} \sum_i^n x_ixˉ=n1​i∑n​xi​方差(整体方差):var=1n∑in(xi−xˉ)2var = \frac{1}{n} \sum_i^n (x_i - \bar x) ^ 2var=n1​i∑n​(xi​−xˉ)2方差(样本方差):S=1n−1∑in(xi−xˉ)2S = \frac{1}{n-1} \sum_i^n (x_i - \bar

2020-12-18 16:03:52 221

原创 hive sql 13位毫秒时间戳转日期

hive sql 中有时间戳转日期的函数from_unixtime(BIGINT unixtime [, STRING format])这里面的unixtime,输入单位是秒,也就一个十位的BIGINT。但是我们实际中用的时间戳,一般都是13位的到毫秒时间戳,如果直接将该时间戳输入方法中会有错误。如果是13位时间戳,可以这么使用from_unixtime(cast(timestamp/1000 as bigint)) as xxx_timetimestamp/1000 是一个double类型,直

2020-12-18 12:18:57 2181

原创 spark java.lang.StackOverflowError

1.遇到的问题在实际分析数据过程中,需要拉取最近一年的数据进行统计,并且一年的数据按天分区。val ymdSet = TimeUtils.genYmdSet(beginYmd, endYmd) // 获取过去一年时间的日期var rdd = SparkIo.readThriftParquetFile(spark.sparkContext, pathxxx, classOf[xxx]) for(eachYmd <- ymdSet) { val tmppath = PathUtils.xxx

2020-12-09 18:45:19 113

原创 pandas loc, iloc, ix, at, iat用法

1.loc用法loc是基于行的index,可以选择特定的行,同时还可以根据列名称选定指定列。iloc是基于行/列的位置(position)来进行选择def select_test(): a = [i for i in range(10)] b = [2*x + 0.1 for x in a] data = {"x": a, "y": b} tmp = pd.DataFrame(data, index=["r1", "r2", "r3", "r4", "r5", "r6"

2020-12-08 18:14:13 228 1

原创 python 计算均值 方差 标准差

1.计算均值import numpy as npa = [5, 6, 16, 9]print(np.mean(a))最后结果9.0np.mean方法即可求均值2.计算方差var = np.var(a)print(var)输出结果18.5如果我们模拟一下计算方差的过程var2 = [math.pow(x-np.mean(a), 2) for x in a]print(np.mean(var2))输出结果18.5np.var计算的是整体方差,如果想要计算样本方差,

2020-12-02 10:51:14 2826 1

原创 spark sql select selectExpr简析

1.select方法dataframe的select方法,最简单的使用方式为直接选择对应的列名。测试数据如下101 brand1101 brand2101 brand3102 brand1102 brand3102 brand3102 brand4103 brand2103 brand2103 brand2103 brand5103 brand5 def parse() = { val sparkConf = new SparkConf().setMaster("l

2020-10-26 22:42:57 1268 2

原创 spark sql 给dataframe列重命名的三种方式

1.dataframe默认的列名spark sql去读取文本生成dataframe时,如果该文本没有自带schema信息,默认的列名为_c0, _c1这种形式,我们可以看个例子。数据如下101 brand1101 brand2101 brand3102 brand1102 brand3102 brand3102 brand4103 brand2103 brand2103 brand2103 brand5103 brand5如果我们读取上述的csv文本然后生成dataframe

2020-10-25 23:24:56 1436 3

原创 推荐算法面经2

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice欢迎大家star,留言,一起学习进步以下为跟着我一块做项目的小朋友面经前言:因本人的个人规划与组内的项目安排与规划产生了不可调和的分歧,本人在七月份与ld沟通,但情况并未好转,本人于本月提出离职申请。求职之路:面的主要是广告/推荐算法工程师岗位面试挂过的公司:百度(两次一面挂)字节data两面挂字节教育一面挂蚂蚁hrbp挂(4面)腾讯pcg一面挂newsbreak一

2020-10-22 15:41:47 592 2

原创 推荐算法面经1

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice欢迎大家star,留言,一起学习进步TMD某厂面试过程记录如下第一轮1、介绍项目(25min)2、讲下fm3、你是用了哪些方式进行的召回?协同过滤/ucf icf如何构建的训练集?(10min)4、讲下word2vec5、a b两个字符串,对a进行增加、删除、修改操作,最少多少次成为B?第二轮1、项目介绍(20min)2、深挖项目细节3、讲下deepfm与fm的区

2020-10-19 22:03:26 247

原创 sublime安装插件详细教程

1.安装sublime这步没啥好说的,自己去sublime官网下载安装即可。2.安装package control可以直接采取在线安装的形式按ctrl+`的快捷键,调出console控制台。注意`是tab键上方的按键。在控制台中输入import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_o

2020-09-26 21:56:19 326

原创 numpy广播机制小结

1.Broadcast(广播)机制numpy中的广播很常见,其用法是针对不同的shape的ndarray进行对应的数值计算的时候,将较小的ndarray广播变成更大的ndarray进行对应的shape匹配,从而使两个看起来shape不匹配的数组能进行相应的数值运算。2.广播的规则1.All input arrays with ndim smaller than the input array of largest ndim, have 1’s prepended to their shapes.2.

2020-09-13 20:59:03 136

空空如也

bitcarmanlee的留言板

发表于 2020-01-02 最后回复 2020-04-24

空空如也

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

TA关注的人 TA的粉丝

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