机器学习

每日算法题 | 剑指offer 二叉树专题 (16) 平衡二叉树

折月煮酒 提交于 2020-12-16 09:13:19
题目 平衡二叉树 题目要求 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 | 备知识 平衡二叉树:它是一棵空树,或者它的左右子树的高度差不超过1,同时它的左右子树为一棵二叉树。而衡量树和平衡因子说的就是左右子树的高度差,可以为0,1,-1。如下图它就是一棵平衡二叉树: 解题思路 二叉树的套路一般都是可以通过递归的形式来将问题进行解决的,因为根节点存在左子树和右子树,其左子树和右子树又存在了其的左子树和右子树,所以通过递归的形式可以将二叉树的深度或者其他问题求解。 要求该树是平衡二叉树,那么必须满足三个条件: 左子树是平衡二叉树 右子树是平衡二叉树 左右子树的高度之差 <= 1 | 思路A 自底向上的做法,先判断左右子树是否是平衡二叉树,再判断左右子树合起来的子结构是否是平衡。这种先访问左右节点,最后根节点的顺序非常符合树的后序遍历,所以我们采用变形的递归的后序遍历算法。 而求节点的高度(深度)我们也采用同样的变形后序遍历来做,很容易想到一个树的深度为左子树和右子树深度的最大值 + 1。所以问题规模转变为求左子树和右子树的深度,问题形式不变,规模变小,典型的递归问题,最后向上回溯即可求得输入的根节点的高度。 | 思路B: 自上向下的方法,也是最直接的做法,遍历每个结点,借助一个获取树深度的递归函数,根据该结点的左右子树高度差判断是否平衡,然后递归地对左右子树进行判断。

令人头疼的背包九讲(2)完全背包问题

▼魔方 西西 提交于 2020-12-16 08:20:09
重磅干货,第一时间送达 背包问题是一个经典的动态规划模型。它既简单形象容易理解,又在某种程度上能够揭示动态规划的本质,故不少教材都把它作为动态规划部分的第一道例题. 题目 完全背包问题 题目要求 有n个重量和价值分别为wi,vi的物品,从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中价值总和的最大值 1≤n≤100 1≤wi,vi≤100 1≤W≤10000 输入: 整数用空格隔开 第一行有两个整数N,V 代表物品种数和背包容积 接下来有N行,每行两个整数用空格隔开,代表物品体积和价值 输出: 在背包容量下能够最大化的价值 输入样例 4 6 1 1 2 3 3 4 4 5 输出样例: 9 分析 与零一背包不同的是,零一背包中的物品是不可以重复拿取的,只可以拿取当前物品或者不拿取当前物品,不可以拿取多个,完全背包的物品是可以任意拿取多个的来构成不超过背包容量并且构成的总价值是最大的 动态规划的核心是找到dp公式或者状态转移的方程,理解清楚中间的过程是怎么样进行变化的,因为动态规划总是要利用到之前历史上的最佳方案,所以dp数组里面存储的肯定是历史上存储的最佳方案,一开始的时候我们是可以借助excel表格来帮助我们理解dp数组是怎样生成的 我们可以这样想:当前我的背包容量有多少,而且我可以选择的物品的范围是什么,那么这两个变量就可以确定一个值了

程序员懂业务有多重要?

只谈情不闲聊 提交于 2020-12-16 06:36:25
程序员懂业务有多重要?印象中我从来都说,“很重要”这句没有营养的废话。在许多项目中,业务才是真正驱使价值兑现(冠冕堂皇的说法,基本上意思就是“赚钱”)的法宝,而技术实际上有诸多选择,选择某一项并无太大区别。可是,老实说,下意识地,在技术和业务难以两全其美的时候,我还是倾向于选择那些从技术角度更有趣,但是业务上显得没“那么”重要的项目。我不讳认这一点,但是随着这些年的经验积累,或者说经历的项目的洗礼,业务的分量已经越来越大了。 在华为的时候,我做过一些杂七杂八的项目,其中最大的一个项目是一个大型的电信门户网站,由于我参与的是基线版本的研发,定制业务少,变态需求少,扩展性、性能、可维护性这些技术层面的因素考虑更多,因而总体来看,还可以说是一个技术比重明显大过业务的项目。 来到亚马逊,换过几个 team,第一个呆的时间比较长的 team 是 Demand Forecasting(销量预测),由于团队比较成熟,组织结构无论是人员上还是代码上,解耦都做得还可以,因而我更关心的是数据的 ETL 过程、schema、版本、可视化等等这些通用而并不耦合业务逻辑的东西。我们当然有业务方面的需求,但是这个 team 的核心还是在数据上面,大量的机器学习内容,不太可能内建太多的业务逻辑,主要影响销量预测还是数据本身。但是这个团队中,我接触了不少领域知识,这是一个比较大的变化,而这部分和预测算法

最新综述:多标签学习的新趋势

别说谁变了你拦得住时间么 提交于 2020-12-16 03:26:43
这里给大家带来一篇武大刘威威老师、南理工沈肖波老师和 UTS Ivor W. Tsang 老师合作的 2020 年多标签最新的 Survey,我也有幸参与其中,负责了一部分工作。 论文链接: https://arxiv.org/abs/2011.11197 上半年在知乎上看到有朋友咨询多标签学习是否有新的 Survey,我搜索了一下,发现现有的多标签 Survey 基本在 2014 年之前,主要有以下几篇: 1. Tsoumakas 的《Multi-label classification: An overview》(2007) 2. 周志华老师的《A review on multi-label learning algorithms》(2013) 3. 一篇比较小众的,Gibaja 《Multi‐label learning: a review of the state of the art and ongoing research》2014 时过境迁,从 2012 年起,AI 领域已经发生了翻天覆地的变化,Deep Learning 已经占据绝对的主导地位,我们面对的问题越来越复杂,CV 和 NLP 朝着各自的方向前行。模型越来越强,我们面对的任务的也越来越复杂,其中,我们越来越多地需要考虑高度结构化的输出空间。多标签学习,作为一个传统的机器学习任务,近年来也拥抱变化

R语言进行词云统计分析

允我心安 提交于 2020-12-15 02:20:53
R语言进行词云统计分析 本文章从爬虫、词频统计、可视化三个方面讲述了R语言的具体应用,欢迎大家共同谈论学习 1、使用 rvest 进行数据的爬取 #如果没有,先安装rvest包 install.packages("rvest") library(rvest) url <- "http://www.sohu.com/a/123426877_479559" #读取数据,规定编码 web <- read_html(url, encoding = "utf-8") position <- web %>% html_node("article.article") %>% html_text() %>%管道函数,将左边的值赋给右边函数作为第一个参数的值 web存储网页信息的变量。 html_nodes()函数获取网页里的相应节点 html_text()函数获取标签内的文本信息 要获取网页中的节点,打开所要爬取网页内容——>按F12——>找到内容所对应的网页节点 2、使用jiebaR进行分词,统计词频 #install.packages("jiebaR") library(jiebaR) #初始化分词引擎并加载停用词 #user表示需要组合到一起的单词 #stop_word删除不需要出现的词 engine_s <- worker(user = "E:/R-Test/dictionary.txt"

性能提高15倍!只是把MySQL换成了ClickHouse

人盡茶涼 提交于 2020-12-15 01:56:48
简介 我们需要存储结构化时序数据,时间间隔为5分钟或1分钟,计算 95峰值 、 995峰值 、 最值 等指标,并且在网页中展示。 MySQL 项目开发初期,为了快速开发原型,验证产品,我们使用MySQL作为整个项目的存储。带来的问题是时序数据库范围分析查询耗时很长,计算30天的数据需要30s+,到了无法容忍的地步,即便是创建索引、使用BitInt存储时间戳,几乎没有性能提升。 后来我们组其他同事说换ClickHouse来存储时序数据,于是我们就开始了替换之旅。 ClickHouse ClickHouse是面向OLAP(在线分析处理)、兼容SQL标准的列式数据库,主要的不足是 不支持事务 。因此我们目前没有把整个存储都迁移到ClickHouse上,而是只把时序数据存过来。 本以为替换过程会很麻烦,可能修改大量的代码和逻辑,实际上很快,因为之前接口的逻辑设计很合理,所以只替换了数据库ORM库,从gorm换成了sqlx,花了1天时间( 前期重构逻辑花了1个星期我会乱说 )。 更重要的是,ClickHouse提供了很多聚合函数,之前计算95值需要2次查询,而现在只需要一次查询就够了,对应的SQL如下: select d.en_name, max (d.in_value) as peak_in, max (d.out_value) as peak_out, max (d.max_value)

Python 100 个小功能,每个都一行代码,PDF下载!

落爺英雄遲暮 提交于 2020-12-14 22:37:24
这本书牛,适合Python已入门选手,看看各种一行代码能干的事情,绝对提神。 本书一共150页,包括python、小技巧、数据科学、机器学习、正则表达式和算法的各种一行代码所能做的事情: 章节 1 详细目录: 章节 2 详细目录: 一行代码 展示1: first_name = "Json" last_name = "smart" # 不推荐 full_name = first_name + " " + last_name # 推荐,高效 " " .join([first_name, last_name]) 一行代码 展示2 : from itertools import combinations print(list(combinations( '12345' , 2 ))) [( '1' , '2' ), ( '1' , '3' ), ( '1' , '4' ), ( '1' , '5' ), ( '2' , '3' ), ( '2' , '4' ), ( '2' , '5' ), ( '3' , '4' ), ( '3' , '5' ), ( '4' , '5' ) ] 全书 6 个章节,每个章节都有这种精简的、压缩至简的硬核小功能,算下来至少有 100 多个,想要的微信我,备注:一行代码 不必打赏 给我点个赞 就心满意足了 本文分享自微信公众号 - Python与算法社区

Kaggle 年度报告出炉:数据科学家年轻多金,薪资近百万

二次信任 提交于 2020-12-14 13:28:04
‍ 来源:HyperAI超神经 本文 约2400字 ,建议阅读 5 分钟 2020 年已经逐渐接近尾声,kaggle 发布了其年度调查报告《机器学习与数据科学 2020》,向我们展示了当前数据科学家的群体画像。 标签:机器学习 数据科学 kaggle 调查 数据分析竞赛平台 kaggle,近期针对平台用户进行了一项调查,涉及从业者基本信息、薪资水平、工作经验等多个维度。 对 20,036 名 Kaggle 用户的反馈进行数据清洗后,kaggle 最终针对 13%(2675 名)的受访者编制了这份报告。这些受访者都是在职的数据科学家,或其他支持数据科学和机器学习的职位。 kaggle 历时一个月,完成了此项调查报告 目前,最近调查报告已出炉。从这个报告中,我们可一览当前机器学习与数据科学从业者的全貌,以及相关企业在这方面的人员雇佣、资金投入状况等,一窥该行业最新发展趋势。 注:在本次调查中,并未出现中国的数据科学家相关数据,超神经经过研究发现,kaggle 在调查问卷的参与规则中,有一条写道: 若想获得该问卷调查所设奖项,您必须满足: 18 岁以上或所在国规定的公民年龄; 本人不是亚美尼亚、古巴、伊朗叙利亚、朝鲜、苏丹国民; 不是受美国出口管制或制裁的个人或实体的代表。 明确指出以上国家、实体代表及个人没有评奖资格 自 2018 年至今,美国已将 200 多家中国企业以及 13

24张IT工程师技能图谱,这些你都会吗?

余生长醉 提交于 2020-12-13 10:26:02
学习一门新技术的时候,最大的苦恼之一,大概就是不知道从何入手。 典型的情况是,你大概知道学会以后,这门技术可以帮你解决什么问题。但是,怎么才能学会、循序渐进的学习路线是什么、学习范围有多大的深度和广度、涉及到哪些前置知识……这些问题你就不太清楚了,只能根据别人推荐的或者网上看到的教程,先学了再说。 这时,一张技能图谱就能帮到你。它像脑图一样,列出主要的知识节点,并且按照学习的线索串起来,让你明白自己的学习路径,以及哪些地方需要查漏补缺。 知名的 IT 技术知识学习平台 “极客时间” ,在开设了近千门课程的基础上,整理出了24张不同领域的技能图谱,涵盖前端、后端、移动、运维、微服务、大数据、机器学习等热门领域,方便用户把相关的知识和技能串起来。 现在扫码填写相关信息后,就能免费发至您的邮箱中: 这些技能图都是精心制作的 PDF 格式大图,可以方便地查看和打印,以下是几张图谱的示例: 只需要扫描下图二维码填写信息,工作人员会在2个工作日内,将24张技能图谱一起发送到你填写的邮箱。 来源: oschina 链接: https://my.oschina.net/u/4312837/blog/4794474

阿里云研究员叔同:Serverless 正当时!

拟墨画扇 提交于 2020-12-12 14:55:08
作者 | 叔同 来源 | Serverless 公众号 导读: Serverless 将开发人员从繁重的手动资源管理和性能优化中解放出来,就像数十年前汇编语言演变到高级语言的过程一样,云计算生产力再一次发生变革。Serverless 的核心价值是什么?阿里云发布了哪些 Serverless 生态产品,各有什么特别之处?阿里云函数计算的表现如何?阿里云研究员叔同将通过本文分享阿里布局 Serverless 的历程和决心。 引言 早在 2009 年,伯克利曾预测云计算将会得到蓬勃发展。近乎无限的云端计算资源,客户无需自建机房,按需要付费成为可能,企业在 IT 方面的投入显著降低,云计算所释放出的技术红利让越来越多的企业客户从云下搬到了云上。 然而,大部分客户在使用云服务时,仍然要面对复杂的运维、较高的闲置资源、无法做到真正按需付费,云计算的优势并未发挥到极致。 2015 年 AWS 推出了 Lambda 服务,2017 年阿里云推出了函数计算 FC,2019 年伯克利再次预测 Serverless 将取代Serverful 计算;由此,Serverless 引发业内的广泛关注。 Serverless 将开发人员从繁重的手动资源管理和性能优化中解放出来,就像数十年前汇编语言演变到高级语言的过程一样,云计算生产力再一次发生变革。与其说 Serverless 是云计算的升华,不如说