能力说明:
通过课程学习与实战项目,熟练掌握Python的语法知识与编程技能,具备Python语言的函数、面向对象、异常处理等能力,常用开发框架的实际应用和开发能力,具备使用,掌握Python数据分析三剑客Matplotlib、Numpy、Pandas的概念与应用场景,掌握利用Python语言从数据采集到分析的全流程相关知识。
暂时未有相关云产品技术能力~
暂无个人介绍
近年来,可解释AI(eXplainable AI,XAI)是人工智能的一个热门方向,相关研究内容呈现快速增长趋势。在众多可解释AI相关开源工具中,微软的interpret是一个功能比较全面、展示效果较好的代表,个人在学习了interpret文档后,发现其一个demo中用到的数据集为Adult数据集——一个用于预测个人年收入是否大于50K(单位:$)的人口普查数据集。所以,刚好用interpret来分析一下,影响年薪收入的因素都有哪些,以及影响程度如何
近来在浏览DataCastle竞赛平台时,注意到了上面挂载的一些数据挖掘训练赛题目,因为是定位于训练赛,主要用于帮助初学者快速熟悉和练手机器学习技能,所以赛题难度相对基础,也没有提供实质性的竞赛奖励
近几天的推文中,分别对深度学习中的三大神经网络——DNN、CNN、RNN进行了系统的介绍,今天本文以股票数据集为例对其进行案例实战和对比。 对这三类神经网络不熟悉的读者,欢迎查看历史推文: PyTorch学习系列教程:深度神经网络【DNN】 PyTorch学习系列教:卷积神经网络【CNN】 PyTorch学习系列教程:循环神经网络【RNN】
前两篇推文分别介绍了DNN和CNN,今天本文来介绍深度学习的另一大基石:循环神经网络,即RNN。RNN应该算是与CNN齐名的一类神经网络,在深度学习发展史上具有奠基性地位。 注:RNN既用于表达循环神经网络这一类网络,也用于表达标准RNN模块。正常情况下不存在理解歧义,因此本文不加以明确区分。
前篇推文介绍了深度学习中最为基础和常见的一类网络——深度神经网络,也就是DNN,其源起于MLP网络,经过丰富的激活函数和反向传播算法的加持,使得网络在层数深的情况下能够有效训练,并大大增强了网络的信息表达能力(神经网络模型本质上是在拟合一个相对复杂的映射函数,随着网络层数的增加,能拟合逼近的映射函数可以越复杂,意味着信息表达能力越强)。 本篇继续深度学习三大基石之卷积神经网络(CNN)——一类在计算机视觉领域大放异彩的网络架构。
趁着清明小假期,决定继续输出几篇文章。对于PyTorch学习教程系列,有了前几篇推文做铺垫,这次打算用三篇文章分别介绍一下深度学习中的三大基石:DNN、CNN、RNN。本文就从DNN开始,即深度神经网络。 本文建议结合历史推文《PyTorch学习系列教程:Tensor如何实现自动求导》配套阅读。
Pandas对于日常数据分析和处理来说是最常用的工具(没有之一),笔者之前也总结分享了很多相关用法和技巧。与之不同,今天本文来介绍几个已经在函数文档中列入"deprecated"的函数/属性,可能在不久的未来版本中这些用法将正式与我们告别,以此权当留念。
今天本文继续PyTorch学习系列。虽然前几篇推文阅读效果不是很好(大体可能与本系列推文是新开的一个方向有关),但自己选择的路也要坚持走下去啊! 前篇推文介绍了搭建一个深度学习模型的基本流程,通过若干个Epoch即完成了一个简单的手写数字分类模型,效果还不错。在这一过程中,一个重要的细节便是模型如何学习到最优参数,答案是通过梯度下降法。实际上,梯度下降法是一类优化方法,是深度学习中广泛应用甚至可称得上是深度学习的基石。本篇不打算讲解梯度下降法,而主要来谈一谈Tensor如何实现自动求导,明白这一过程方能进一步理解各种梯度下降法的原理。
继续PyTorch学习系列。前篇介绍了PyTorch中最为基础也最为核心的数据结构——Tensor,有了这些基本概念即可开始深度学习实践了。本篇围绕这一话题,本着提纲挈领删繁就简的原则,从宏观上介绍搭建深度学习模型的几个基本要素。
本文继续PyTorch学习系列教程,来介绍在深度学习中最为基础也最为关键的数据结构——Tensor。一方面,Tensor之于PyTorch就好比是array之于Numpy或者DataFrame之于Pandas,都是构建了整个框架中最为底层的数据结构;另一方面,Tensor又与普通的数据结构不同,具有一个极为关键的特性——自动求导。今天,本文就来介绍Tensor这一数据结构。
对Pandas投入了很多精力,自认掌握的还算扎实,期间也总结分享了很多Pandas相关技巧和心得(点击上方“Pandas”标签可以查看系列文章)。近日,在github中查看一些他人提交的代码时,发现了Pandas中这三个函数,在特定场景中着实好用,遂成此文以作分享。
新的一年还是要肝起来啊,这个公众号节前节后沉寂了快两个月了,许久没更新原创推文,自己感觉不能再这样堕落下去了。所以最近一直在思考写些什么推文:既要符合当下工作所需,倒逼成长;也要于广大读者有益,而非单纯的推销运营。 于是,终于决定“染指”深度学习方向,并打算先更新一波Pytorch学习教程。当然,这会是一个系列。
时序预测是一类经典的问题,在学术界和工业界都有着广泛的研究和应用。甚至说,世间万物加上时间维度后都可抽象为时间序列问题,例如股票价格、天气变化等等。关于时序预测问题的相关理论也极为广泛,除了经典的各种统计学模型外,当下火热的机器学习以及深度学习中的循环神经网络也都可以用于时序预测问题的建模。今天,本文就来介绍三种方式的简单应用,并在一个真实的时序数据集上加以验证。
从事数据挖掘相关工作的人肯定都知道XGBoost算法,这个曾经闪耀于数据挖掘竞赛的一代神器,是2016年由陈天齐大神所提出来的经典算法。本质上来讲,XGBoost算作是对GBDT算法的一种优化实现,但除了在集成算法理念层面的传承,具体设计细节其实还是有很大差别的。最近深入学习了一下,并简单探索了底层设计的数据结构,不禁感慨算法之精妙!聊作总结,以资后鉴!
前期在做一些机器学习的预研工作,对一篇迁移随机森林的论文进行了算法复现,其中需要对sklearn中的决策树进行继承和扩展API,这就要求理解决策树的底层是如何设计和实现的。本文围绕这一细节加以简单介绍和分享。
在入道数据岗位之初,曾系列写过多个数据科学工具包的入门教程,包括Numpy、Pandas、Matplotlib、Seaborn、Sklearn等,这些也构成了自己当初的核心工具栈。在这5个工具包中,用于数据绘图的有2.5个(Pandas可以算0.5个),占比之高定与当时一度"沉迷"于简单而有效的可视化有关,可谓乐此不疲。时隔一年有余,在不断接触了Plotly这个可视化新贵之后,近期终于正式学习了一下这个包的使用、特性及优劣,并稍作整理、以资后鉴,遂成此文!
机器学习中的一个经典理论是:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限。也正因如此,特征工程在机器学习流程中占有着重要地位。广义的特征工程一般可分为三个环节:特征提取、特征选择、特征衍生,三个环节并无明确的先手顺序之分。本文主要介绍三种常用的特征选择方法。
机器学习在当下早已成为一项热门的技术,在众多机器学习算法中,除去深度学习和强化学习等最新发展方向,若是谈及经典机器学习算法,那么集成学习算法无论是在效果上还是热度上都是当之无愧的焦点。今天本文就来简要介绍那些经典的集成学习算法。
Numpy其提供了大量常用的数值计算功能,当然这些数值计算函数大多依赖于其核心的数据结构:ndarray,也就是N维数组。而关于这个ndarray,有一个重要特性是广播机制,也正是整个广播机制,使得Numpy中的数值计算功能更加丰富和强大。那么问题来了,你是否已经正确理解了这个广播机制呢?
从事机器学习相关岗位的同学都知道这样一句话:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限。在数据确定的情况下,那么特征工程就成了唯一可供发挥的关键步骤。广义来讲,特征工程包括特征提取、特征衍生以及特征选择等等,可自动化快速实现特征提取和特征衍生的工作,对加速机器学习建模和保证特征工程效果都非常有帮助。
在传统的算法建模过程中,影响算法性能的一个重要环节、也可能是最为耗时和无趣的一项工作就是算法的调参,即超参数优化(Hyper-parameter Optimization,HPO),因此很多算法工程师都会调侃的自称"调参侠"。近期在研究一些AutoML相关的论文和实现,而在AutoML中的一个核心组件就是HPO。借此机会,本文梳理总结Python中三种常见的可实现HPO的库,并提供一个简单的示例。
Pandas之于日常数据分析工作的重要地位不言而喻,而灵活的数据访问则是其中的一个重要环节。本文旨在讲清Pandas中的9种数据访问方式,包括范围读取和条件查询等。
近期在学习研究一些关于自动化机器学习方面的论文,本文作为该系列的第一篇文章,就AutoML的一些基本概念和现状进行简单分享,权当抱砖引玉。
最近在研究一些机器学习方面的论文,翻到了一篇较早的机器学习综述(2017年),虽然不是最新的研究现状,但考虑到经典机器学习算法其实发展并不像深度学习那么迅猛,所以其论述还是很有参考性。本文就其中关于机器学习算法分类的一段进行选摘翻译,以供参考。原文链接可通过阅读原文查阅。
作为一名数据分析师,自己对Pandas有过系统的学习和应用实践,对其大部分功能甚至骚操作也称得上有所研究,前期也写过太多的Pandas应用技巧相关的文章。那么在赞美之余,有没有一些觉得不好的设计呢?今天本文就来吐槽3个自己觉得Pandas设计有欠妥当的地方,纯为个人见解!
Pandas其提供了从数据读取、数据预处理到数据分析以及数据可视化的全流程操作。其中,在数据读取阶段,应用pd.read_csv读取csv文件是常用的文件存储格式之一。今天,本文就来分享关于pandas读取csv文件时2个非常有趣且有用的参数。
SQL是所有数据从业者必须打牢的基本功之一,扎实的SQL查询和适当的调优技巧是检验SQL能力的两大重要准则。个人曾经专门花费过好多时间用于提升SQL能力,期间也刷了大量的SQL题目,在这期间也不断摸索总结了一些小技巧,今天本文就来分享其中的两个,也差不多是日常使用中最为高频的两个了。
SQL是IT行业很多岗位都要求具备的一项能力,对于数据岗位而言更是如此,甚至说扎实的SQL基础也往往是入职这些岗位的必备技能。而在SQL面试中,一道出镜频率很高的题目就是行转列和列转行的问题,可以说这也是一道经典的SQL题目,本文就这一问题做以介绍分享。
Pandas提供了功能强大且灵活多样的API,可以满足使用者在数据分析和处理中的多种选择和实现方式。今天本文以Pandas中实现分组计数这个最基础的聚合统计功能为例,分享多种实现方案,最后一种应该算是一个骚操作了……
数据透视表是一个很重要的数据统计操作,最有代表性的当属在Excel中实现(甚至说提及Excel,个人认为其最有用的当属三类:好用的数学函数、便捷的图表制作以及强大的数据透视表功能)。所以,今天本文就围绕数据透视表,介绍一下其在SQL、Pandas和Spark中的基本操作与使用,这也是沿承这一系列的文章之一。
Jupyter一直是个人非常喜爱的coding环境,也着实适用于简单的数据分析和探索。前期分享了个人使用Jupyter的3个实用技巧,今天本文就再来总结6组常用快捷键,其使用频率之高和由之而带来的便捷程度都称得上可观!
Pandas素以API丰富著称,个人也是常常沉醉于其中的各种骚操作而不能自拔(好吧,有些言重了)。近日,发现了一个前期一直忽略了的函数,仔细探索之下,发现竟然还有一些好用的功能,这个函数就是——transform。
窗口函数是数据库查询中的一个经典场景,在解决某些特定问题时甚至是必须的。个人认为,在单纯的数据库查询语句层面【即不考虑DML、SQL调优、索引等进阶】,窗口函数可看作是考察求职者SQL功底的一个重要方面。 前期个人以求职者身份参加面试时被问及窗口函数的问题,近期在作为面试官也提问过这一问题,但回答较为理想者居少。所以本文首先窗口函数进行讲解,然后分别从SQL、Pandas和Spark三种工具平台展开实现
当今信息时代,数据堪称是最宝贵的资源。沿承系列文章,本文对SQL、Pandas和Spark这3个常用的数据处理工具进行对比,主要围绕数据查询的主要操作展开。
在当今这个人工智能时代,似乎人人都或多或少听过机器学习算法;而在众多机器学习算法中,决策树则无疑是最重要的经典算法之一。这里,称其最重要的经典算法是因为以此为基础,诞生了一大批集成算法,包括Random Forest、Adaboost、GBDT、xgboost,lightgbm,其中xgboost和lightgbm更是当先炙手可热的大赛算法;而又称其为之一,则是出于严谨和低调。实际上,决策树算法也是个人最喜爱的算法之一(另一个是Naive Bayes),不仅出于其算法思想直观易懂(相较于SVM而言,简直好太多),更在于其较好的效果和巧妙的设计。似乎每个算法从业人员都会开一讲决策树专题,那么今天
本篇继续Pandas与Spark常用操作对比系列,针对常用到的获取指定列的多种实现做以对比。 注:此处的Pandas特指DataFrame数据结构,Spark特指spark.sql下的DataFrame数据结构。
按照前文所述,本篇开始Pandas和Spark常用数据处理方法对比系列。数据处理的第一个环节当然是数据读取,所以本文就围绕两个框架常用的数据读取方法做以介绍和对比。
自从事数据科学行业以来,便每天在与各种数据处理打交道,当然这里的数据处理是多方面的:既有数据采集和读写,也有数据清洗与变换,当然还有数据分析和挖掘。从主用工具的角度来看,大体上经历了这4重境界:Excel->MySQL->Pandas->Spark,姑且就称之为EMPS吧。
年前,个人换了大数据岗位,目前主要从事大数据分析和大数据算法相关工作。在前期数据分析师岗位的基础上,虽然只是增加了一个"大"字作为前缀,但所涉及的技术栈和工作理念其实还是有很大变化的,其中打交道最为频繁的当从一个关键词说起:Apache
截至本篇,Scala入门系列即将告一段落,先后用7篇文章将Scala语言的四梁八柱进行了简要介绍,虽然阅读量相较于其他文章更为惨淡,但相信对于有一定编程语言基础又想快速入门Scala的读者来说还是会有一定收获和借鉴的。 本文作为该系列的最后一篇,将重点介绍Scala中类和对象的概念,毕竟Scala也是一门面向对象的编程语言。 坦白讲,个人在学习Scala中这一部分内容时其实也是有些凌乱的,一直觉得未能理解到Scala中类和对象的精髓,所以当下完成此文也仅仅是出于系列内容的完整性,后续也将适时推出其他分享。
编程语言中最为基础的一个概念是控制结构,几乎任何代码都无时无刻不涉及到,其实也就无外乎3种:顺序、分支和循环。本文就来介绍Scala中控制结构,主要是分支和循环。
封装是计算机编程语言中最基本但也十分经典的思想(更严谨地说封装是面向对象设计中的一种思想),例如将一段频繁用到的逻辑写成一个函数的过程,其背后蕴含的其实就是封装的思想。与众多编程语言类似,Scala中也提供了方法和函数的功能,但在具体使用上又有很多特别之处,甚至一定程度上可以彰显Scala的设计理念。
这是得益于Pandas底层由C实现,同时其向量化执行方式也非常利于并行计算。更重要的是,这种向量化操作不仅适用于数值计算,对于文本和时间格式也有着良好的支持,而这就不得不从Pandas的属性接口谈起。
继续Scala从零起步系列,在前文分享变量和标识符的基础上,本文介绍Scala中的运算符。简单地说,Scala中的运算符和其他编程语言中的运算符并无太大区别,更多都是相同或者相近的,但是出于系列文章的内容完整性,仍然单开此文对其予以介绍。
学Pandas有一年多了,用Pandas做数据分析也快一年了,常常在总结梳理一些Pandas中好用的方法。例如三个最爱函数、计数、数据透视表、索引变换、聚合统计以及时间序列等等,每一个都称得上是认知的升华、实践的结晶。今天,延承这一系列,再分享三个函数,堪称是个人日常在数据处理环节中应用频率较高的3个函数:apply、map和applymap,其中apply是主角,map和applymap为赠送。
前几天发表了一篇推文,分享了Pandas中非常好用的一个API——explode,然而今天又发生了戏剧性的一幕:因Pandas版本过低系统提示'Series' object has no attribute 'explode'!好吧,好用的东西永远都是娇贵的,这个道理没想到在代码中也适用。所以,今天就以此为题展开拓展分析,再输出一点Pandas干货……
要问当下最热门的IT技术,大数据可占一席之地;要问当下最网红的IT岗位,数据分析师也必将榜上有名。二者结合,自然就是大数据分析师。所谓大数据分析,个人理解就是在传统数据分析思维和技能的基础上,加持大数据工具,而Spark作为一个优秀的分布式计算框架,自然可作为大数据分析的必备技能。进一步地,虽然Spark提供了4种主流语言,但Scala作为Spark的原生开发语言,仍不失为应用Spark开发的首选。 基于以上考虑,我终于还是入坑了Scala的学习之旅——尽管Scala实际上属于一门小众语言,小众到似乎除了Spark甚至没什么用武之地
近日,在实际工作中遇到了这样一道数据处理的实际问题,凭借自己LeetCode200+算法题和Pandas熟练运用一年的功底,很快就完成了。特此小结,以资后鉴!
Excel作为Office常用办公软件之一,其在一名数据分析师的工作日常中也占有一定地位,比如个人就常常倾向于依赖Excel完成简单的数据处理和可视化作图,其中数据处理部分则主要是运用内置函数+数据透视表两大部分。 Excel数据透视表虽好,但在pandas面前它也有其不香的一面!
作为一名数据分析师,每天都在完成各种数据分析需求,其中数据清洗是必不可少的一个步骤。一般而言,当提及数据清洗时,其实是主要包括了缺失值处理、重复值处理和异常值处理三类操作,本文即围绕这这三个方面介绍一下个人的一些习惯操作。