分类
成长之路

Python工程师面试必备25条Python知识点

到底什么是Python

你可以在回答中与其他技术进行对比,下面是一些关键点:

  • Python是种解释型语言。这就是说,与C语言和C衍生语言不同,Python代码在运行前不需要编译。其他的解释型语言还包括PHP和Ruby;
  • Python是动态类型语言,指的是你在声明变量时,不需要说明变量的类型。可以直接编写类似x=111和x=”I’m a string”这样的代码,程序不会报错;
  • Python非常适合面向对象的编程,因为支持通过组合composition与继承inheritance的方式定义类class。

Python中没有访问说明符access specifier,类似C++中的public和private,这么设计的依据是“大家都是成年人了”

  • Python语言中,函数是第一类对象。这指的是它们可以被指定给变量,函数既能返回函数类型,也可以接受函数作为输入。类也是第一类对象;
  • Python代码编写快,但运行速度比编译语言通常要慢。好在Python允许加入基于C语言编写扩展,因此我们能够优化代码,消除瓶颈,这点通常是可以实现的。

Numpy就是一个很好地例子,它运行速度真的非常快,因为很多算术运算其实不是通过Python实现的。

  • Python的用途非常广泛:网络应用,科学建模,自动化和大数据应用等。它也常被用作“胶水语言”帮助其他语言和组件改善其运行状况;
  • Python让困难的事变得容易,因此程序员可以专注于算法和数据结构的设计,而不用处理底层的细节。

如果你应聘的是一个Python开发岗位,你应该知道这是门什么样的语言,以及为什么这么酷。以及哪里不好。

什么是PEP8

PEP8是一个编程规范,内容是一些关于如何让你的程序更具可读性的建议。

主要内容包括代码编排、文档编排、空格使用、注释、文档描述、命名规范、编码建议等等。

什么是pickling和unpickling

Pickle模块读入任何Python对象,并将它们转换成字符串,然后用dump函数将其转储到一个文件中:这个过程就叫做pickling。

反之从存储的字符串文件中提取原始Python对象的过程,叫unpickling。

Python是如何被解释的

Python是种解释性语言,它的源代码可直接运行。Python解释器会将源代码转换成中间语言,之后再翻译成机器码再执行。

Python怎样管理内存的

Python的内存管理是由私有heap空间管理的。所有Python对象和数据结构都在一个私有heap中。程序员没有访问该heap的权限,只有解释器才可以对它进行操作。

Python的heap空间分配内存是由Python的内存管理模块进行的,其核心API会提供一些访问该模块的方法供程序员来使用。

Python自带的垃圾回收系统,它回收并释放没有被使用的内存,让它们能够被其他程序使用。

有哪些工具可以帮助debug或做静态分析

PyChecker是一个静态分析工具,不仅能报告源代码中的错误,并会报告错误类型和复杂度。Pylint是检验模块是否达到代码标准的另一个工具。

何为Python装饰器

Python装饰器是Python中的特有变动,可以使修改函数变得更容易。

数组和元组之间区别是什么

数组和元组之间的区别:数组内容可以被修改的,元组内容是只读的。另外,元组可被哈希,比如作为字典的关键字。

参数按值传递和引用传递是怎样实现

Python中的一切都是类,所有的变量都是一个对象的引用。引用的值是由函数确定,因此无法改变。但如果一个对象是可以被修改的,可以改动对象。

字典推导式和列表推导式是什么

它们可以轻松创建字典和列表的语法结构。

Python都有哪些自带的数据结构

Python自带的数据结构分为可变的和不可变的。可变的有:数组、集合、字典;不可变的:元组、字符串以及数。

什么是Python命名空间

Python中,所有的名字都存在于一个空间中,它们在空间中存在和被操作:就是命名空间。

它就好像一个盒子,每一个变量名字都对应装着一个对象。当查询变量的时候,会从该盒子里面寻找相应的对象。

Python的lambda是什么

这是一个常被用于代码中的单个表达式的匿名函数。

为什么lambda没有语句

匿名函数lambda没有语句的原因,是它被用于在代码被执行的时候构建新的函数对象并且返回。

Python的pass是什么

Pass是一个在Python不会被执行的语句。在复杂语句中,如一个地方需要暂时被留白,常常被用于占位符。

Python中什么是遍历器

遍历器是用于遍历一组元素,比如列表这样容器。

Python的unittest是什么

Python中,unittest是Python的单元测试框架。拥有支持共享搭建、自动测试、在测试中暂停代码、将不同测试迭代成一组,等等功能。

Python中什么是slicing

Slicing是种在有序的对象类型中(数组,元组以及字符串)节选某一段的语法。

Python中什么是构造器

生成器是实现迭代器的一种机制。功能的实现依赖于yield表达式,除此之外跟普通的函数没有两样。

Python的docstring是什么

Python文档字符串被称为docstring,在Python中的作用是为函数、模块和类注释生成文档。

如何在Python拷贝一个对象

如果要在Python中拷贝一个对象,大多时候你可以用copy.copy()或者copy.deepcopy()。但不是所有的对象都可以被拷贝。

Python的负索引是什么

Python中的序列索引可以是正也可以是负。如果是正索引,0是序列中第一个索引,而1是第二个索引。如果是负索引,-1是最后一个索引而-2是倒数第二个索引。

如何将一个数字转换成为一个字符串

可以使用自带函数str()将一个数字转换为字符串。如果想要八进制或者十六进制数,可以用oct()或hex()。

Xrange和range区别是什么

Xrange用于返回一个xrange对象,而range用于返回一个数组。不管那个范围多大,Xrange都用同样的内存。

Python中的模块和包是什么

Python中,模块是搭建程序的一种方式。每一个Python代码文件都是一个模块,并可以引用其他的模块,比如对象、属性。

一个包含许多Python代码文件夹是一个包。一个包可以包含模块和子文件夹。

分类
成长之路

Python到底是什么来头

Python将正式纳入高考内容!随着浙江省的重磅官宣,许多家长开始有些恐慌,我们一无所知的Python要加入高考了,到底Python是什么?什么时候要开始学?用什么样的方式学最好?今天就和大家好好聊聊Python这个磨人的神器。

Python英文是大蟒蛇的意思。Python的发明者是荷兰人Guido van Rossum。

Guido在1989年圣诞期间,为了打发圣诞节的无趣,于是想要开发一个新的脚本解释程序,所以就有了Python。

而之所以选中Python作为程序的名字,据说因为Guido是一个名为Monty Python的喜剧团体的爱好者。虽然Python的诞生似乎源于一种偶然,然而Python能够在诞生之后不久就风靡程序员的圈子似乎是一种必然。

权威专家预测Python将成为AI时代的第一语言。从AlphaGo打败人类天才棋手柯洁,到年度编程语言排位Python直逼首席王位,都可看出预言非虚。

与此同时,翻看招聘网站,与Python相关岗位薪资也是远远高于平均水平,近来更有水涨船高之势。

究竟Python为何如此受青睐呢?

程序圈中一直流穿着一句话:人生苦短,我用派神,这句略丧略戏谑的调侃难掩程序猿对Python的喜爱。到底为何会有这种说法,或许和Python以下特点不可分割。

  1. 易学:Python极容易上手,因为Python有极简单的语法;
  2. 丰富资源:Python标准库非常庞大,可以帮助处理各种工作。很多时候简洁的几行代码就可以解决一个问题,很大程度上提高了开发效率;
  3. 应用广泛:Python易学简洁和具有丰富的资源的特点使得它广泛应用在不同领域。较强数据处理能力能够将繁琐凌乱的数据轻松转换为结构化数据,以至于Python在大数据领域,成为最受欢迎语言;
  4. 跨平台性:Python是一门脚本语言,它不需要编译,它执行只跟解释器有关,与操作系统没关系。同样的代码不需要改动就可以在不同的操作系统上运行;
  5. 可扩展性:Python被称作胶水语言,可把Python嵌入C/C++程序,从而向程序用户提供脚本的功能。

对一个程序圈外的人大家或许不能理解Python的这些特点意味着什么,那就用木桶理论简单给大家解读一下Python的特点。

就木桶原理说,一只水桶能装多少水取决于它最短的那块木板,所以许多人都想去思考和补齐自己的短板。

Python恰恰是反木桶理论的极致。自诞生来,Python一直保持了简单、开放、语言工业化等特点,具备良好封装、组合、嵌入能力,开发效率惊人。这些都是它的长板,Python把这些方面都做到了极致。

而它的短板也丝毫没影响它的受喜爱程度,反而其促成了其他软件库对它的优化。

比如,有人觉得Python慢,提高Python的编译器工具出来了;为了配合科学计算、大数据的分析,SciPy/Pandas诞生了;要用机器学习,机器学习库开发出来了。

而这些库对于Python可随意调用,Python调用这些开发出来的库甚至比原生语言调用还要方便,所以大家简直没理由不用Python。

所以,围绕Python语言构建出来的生态库逐渐让其他语言望尘莫及。这也是Python被成为胶水语言并被预言将成为AI时代第一语言的原因。

了解Python的神奇,还有一个疑问,就是到底孩子多大学习Python最合适?

尤其最近山东省最新出版的小学信息技术六年级教材也加入了Python内容,更是又一次把这一问题抛在了大众的面前。

其实,在美国婴幼儿都有Python编程书。打开亚马逊网,就会看到很多婴幼儿Python编程书籍,美国确实是一个非常重视编程技能培养的国家,从比尔盖茨13岁时学习编程,Facebook创始人扎克伯格11岁开始学习编程这些事例中也可见一斑。

可能很多人都会有疑问,小学生学习编程能懂吗?

其实年龄在7岁左右的孩子,学过一点Scratch或者机器人编程的都可学习Python语言。这个年龄段的孩子思维模式和认知能力已经可以接受Python语言课程。

然而,在小学时开设Python编程课,更多是培养兴趣和编程思维,培养孩子发现问题、思考问题和解决问题的能力,学校少量初级的Python课程远远无法满足升学需要。

未来是人工智能的时代到来,Python语言将引领绝大多数工作岗位的情况下,学习Python应该用一种更加专业的学习的心态,同时及早让孩子掌握Python技能已是大势所趋。

分类
成长之路

帮助你工作提质增效的数据爬虫网站

在这个数据说话的时代,能打动人的往往是用数据说话的理性分析,无论对于混迹职场的小年轻,还是需要数据进行分析和研究的同学,能找到合适的数据源都是非常重要的。特别是想对一个新的领域进行研究和探索,拥有这个领域的数据那都是有十分重要的意义。在这里给大家推荐一些能够用上数据获取方式,有了这些资源,不仅可以在数据收集的效率上能够得到很大的提升,同时也可以学习更多的思维方式。

国家数据

数据来源于中国国家统计局,包含我国经济民生等多个方面的数据,且在月度、季度、年度都有覆盖,较为全面权威,对于社会科学研究大有帮助。最关键的,网站简洁美观,还有专门的可视化读物。

CEIC网

最完整的一套超过128国家的经济数据,能精确查找GDP/CPI、进口、出口、外资直接投资、零售、销售,及国际利率等深度数据。其中的中国经济数据库收编了300000多条时间序列数据,数据内容涵盖宏观经济数据、行业经济数据以及地区经济数据。

万得

万得被誉为中国Bloomberg,在金融业有全面的数据覆盖,金融数据的类目更新非常快,据说很受国内的商业分析者和投资人亲睐。

搜数

已经加载到搜数网站的统计资料达到7874本,涵盖1761009张统计表格以及364580479个统计数据,汇集中国资讯行自92年以来收集的所有统计和调查数据,并且提供多样化的搜索功能。

中国统计信息

国家统计局的官方网站,汇集海量的全国各级政府各年度的国民经济和社会发展统计信息,建立了以统计公报为主,统计年鉴、阶段发展数据、统计分析、经济新闻、主要统计指标排行等等。

亚马逊aws

来自亚马逊的跨科学云数据平台,包含化学、生物、经济等多个领域数据集。

figshare网

研究成果共享平台,在这里你会发现来自世界的大牛们的研究成果分享,同时get其中的研究数据,内容都很有启发性,且网站颇具设计感。

github网

如果觉得前面数据源还不够,github上的大神已经为大家整理好一个非常全面的数据获取渠道,包含各个细分领域的数据库资源,自然科学和社会科学的覆盖都很全面,简直是做研究和数据分析的利器。

钱塘大数据交易中心网

钱塘大数据交易中心是为工业制造行业提供数据交易以及预处理交易,算法交易及大数据分析,平台开发,技术服务,数据定价,数据金融,交易监督等综合服务的机构,中心并基于数据金融资产化方向提供撮合,买卖,典当,融资,抵押,贷款等多种的合作模式,为工业制造行业各经济主体盘活数据存量资源提供全面解决方案。

优易数据

国家信息中心发起,拥有国家级信息资源的数据平台,国内领先数据交易平台。平台有B2B、B2C两种交易的模式,包含政务、社会、社交、教育、消费、交通、能源、金融、健康等多个领域的数据资源。

数据堂网

专注于互联网综合数据交易,提供数据交易、处理和数据API服务,包含语音识别、医疗健康、交通地理、电子商务、社交网络、图像识别等方面的数据。

百度指数

大家都熟悉的指数查询平台,可根据指数的变化查看某个主题在各个时间段受关注的情况,进行趋势分析、舆情预测有很好的指导作用。除了关注趋势之外,还有需求分析、人群画像等精准分析的工具,对于市场调研来说具有很好参考意义。

阿里指数

国内权威商品交易分析工具,可以按地域和按行业查看商品搜索和交易数据,基于淘宝、天猫和1688平台的交易数据基本能够看出国内商品交易的概况,对于趋势分析、行业观察意义不小。

艾瑞咨询

艾瑞作为老牌的互联网研究机构,在数据沉淀和数据分析上都有得天独厚的优势,在互联网的趋势和行业发展数据分析上面比较权威,艾瑞的互联网分析报告可以说是互联网研究的必读刊物。

友盟指数

友盟在移动互联网应用数据统计和分析具有较为全面的统计、分析,对于研究移动端的产品、市场调研、用户行为分析很有帮助。除了友盟指数,友盟互联网报告同样是了解互联网趋势的优秀读物。

爱奇艺指数网

爱奇艺指数是专门针对视频播放行为、趋势分析平台,对于互联网视频的播放有着全面的统计和分析,涉及播放趋势、播放设备、用户画像、地域分布等等多个方面。由于爱奇艺庞大的用户基数,该指数基本可以说明实际的情况。

猫眼专业版网

电影票房统计分析平台,猫眼专业版有实时票房统计,影片排盘情况、上座率和影院数据,对于当前电影的分析必不可少的。

火车采集器网

一款专业的互联网数据抓取、处理、分析,挖掘软件,可灵活迅速地抓取网页上散乱分布的数据信息,并通过一系列分析处理,准确挖掘出所需的数据,最常用的就是采集某些网站文字、图片、数据等等在线资源。接口比较齐全,支持扩展比较好用,如懂代码的话,可以使用PHP或C#开发任意功能的扩展。

八爪鱼网

简单实用的采集器,功能齐全,操作简单,不需要写规则。特有的云采集,关机也可以在云服务器运行采集任务。

集搜客网

一款简单易用网页信息抓取软件,能够抓取网页文字、图表、超链接等多种网页元素,提供很好用的网页抓取软件、数据挖掘攻略、行业资讯和前沿科技等。

分类
成长之路

入手机器学习从搞懂这十大经典算法开始

在机器学习的领域“没免费的午餐”是一个不变的定理。简而言之,没有一种算法是完美的,可以作为任何问题最佳解决方案。认清这点,对于解决监督学习问题(如预测建模问题等)尤其重要。

我们不能总说神经网络就比决策树好,反之亦然。影响算法性能的因素有很多,比如数据集的大小和结构等。

因此,对自己的问题,要尝试多种不同的算法,并使用测试数据集来评估各个算法的性能,以选出效果最优的那个。

当然,前面所尝试的算法必须要适合自己的问题,这也正是你要选对正确的机器学习任务的地方。比如,要打扫房子的时候,会使用真空吸尘器、扫帚或者拖把,但绝不应该用铲子在屋子内挖坑。

重要原则

话虽如此,但所有用于预测建模的有监督机器学习算法却有一个共同的原则:机器学习算法的本质是找到一个目标的函数f,使其成为输入变量X到输出变量Y之间的最佳映射,即Y=f(x)。

这是最常见的学习任务,给定任意新输入变量X,我们就能预测出输出变量Y的值。因为我们不知道目标函数f的形式或样子,所以才要机器去把它找出来。不然的话,我们就可以直接用目标函数来进行预测了,不需要用机器学习算法来学习数据了。

最常见的机器学习类型就是找到最佳的映射Y=f(x),并以此来预测新X所对应的Y值。这一过程被称为预测建模或预测分析,目标是尽可能的导出最为准确的预测。

对于渴望理解机器学习基本概念的各位新手们,我们特地整理出数据科学家最常用的十大机器学习算法,便于大家快速上手。

线性回归

线性回归可能是统计学和机器学习中最为知名、最易于理解的一个算法。

预测建模主要关注的是如何最小化模型的误差,或是如何在一个可解释性代价的基础上做出最为准确的预测。我们可以借用、重用和窃取包括统计学在内的多个不同领域的算法,将其用于这些目的。

线性回归所表示的是描述一条直线的方程,通过输入变量的特定权重系数B来找出输入变量x和输出变量y之间最适合的映射关系,即y=B0+B1*x。

需给定输入x,我们可以预测出y的值。线性回归学习算法目标是找到系数B0和B1的值。

找出数据的线性回归模型有多种不同技巧,例如将线性代数解用于普通最小二乘法和梯度下降优化问题。

线性回归业已存在200多年了,并已被广泛研究过。使用该算法的一些窍门,是尽可能地去除非常相似的相关变量以及数据中的噪声。这是一个快速、简单又好用的算法。

逻辑回归

逻辑回归是机器学习借统计领域的另一项技术,用于解决二元分类问题(有两个类值的问题)

逻辑回归就像线性回归,因为它目标是找出每个输入变量的加权系数值。与线性回归不同的,逻辑回归预测输出值函数是非线性的,也被称为逻辑函数。

逻辑回归的函数图像看起来是一个大的S,并将任何值转换至0到1的区间。这种形式非常有用,因为我们可以用一个规则把逻辑函数的值转化成0和1(例如,如果函数值小于0.5,则输出1)从而预测类别。

基于模型学习方式,逻辑回归的输出值可以用来预测给定数据实例属于类别0和类别1的概率。当你的预测需要更多依据时,这一点会非常有用。

线性回归一样,当剔除与输出变量无关或与之除非常相似(相关)的属性后,逻辑回归的效果会更好。对于二元分类问题,它是一个易于上手、快速又有效的模型。

线性判别分析

一般来说,逻辑回归仅限二元分类问题。 但如果分类类别超过了两个,线性判别分析就成为首选的线性分类算法。

线性判别分析的表达式非常简单。由数据的统计属性组成,并计算每个类别属性值。对于单个输入变量,包括:

  1. 每个类别的平均值;
  2. 所有类别方差。

线性判别分析通过计算每个类别的差别值,并对拥有最大值的类别进行预测。该方法假定数据都服从高斯分布(钟形曲线)因此预测前从数据中移除异常值会是一个很好习惯。对于分类预测问题来说,它是一个简单又强大的方法。

分类和回归树

决策树是用于预测建模的一种重要的机器学习算法。

决策树模型的表现形式为二叉树,也就是来自算法和数据结构方面的二叉树,没有什么特别。树上每个节点代表一个输入变量x与一个基于该变量的分离点假定这个变量是数字。

叶节点包含了用于预测的输出变量y。预测是通过遍历树的分离点开始,直到抵达每一个叶节点,并输出该叶节点分类值。

决策树算法学习起来会很快,预测速度也快。决策树对于各种各样的问题都能做出准确预测,并且无需对数据做任何特殊的预处理。

朴素的贝叶斯

朴素贝叶斯是一种简单又强大的预测建模算法。

该模型由两种概率组成,它们都能从训练数据中直接计算出来:

  1. 每个类别的概率;
  2. 对于给定的x值,每个类别的条件概率。

一旦计算出来,概率模型就可以用于使用贝叶斯定理对新数据进行预测。你的数据是实值时,通常假定一个高斯分布(钟形曲线)这样就很容易计算出这些数据的概率。

朴素贝叶斯假定每一个输入变量都是独立,所以被称为朴素的。这是一个假设,对真实数据而言有一点不切实际,但该方法在大范围的复杂问题上非常有效。

K最近邻算法

K最近邻算法非常的简单和有效。它的模型所表示整个训练数据集,看上去很简单,对吧?

对于给定训练数据,通过搜索整个数据集中K个最相似的实例(邻居)汇总这K个实例输出变量可以预测新的数据点。对于回归问题,它可能是输出变量的平均值;对于分类问题,它可能是模式或最常见的类别值。

用K最近邻算法的诀窍,在于如何确定数据实例之间的相似性。最简单的方法,如果你的属性在欧几里德距离上尺度相同(如均以英寸为单位)那基于每个输入变量之间的差异,就可以直接计算其数值来确定相似性。

K最近邻算法可能需要大量内存或存储空间来储存所有数据,但只有在预测时才会执行计算或学习。也可以随时更新和管理你的训练实例,以保持预测准确性。

距离或紧密度的概念在非常高的维度(大量输入变量)中可能会失效,因为输入变量的数量对于算法性能有着很大的负面影响。这是维度灾难。这就要求只使用那些与预测输出变量最相关的输入变量。

学习向量量化

K最近邻算法的一个缺点是你需要使用整个训练数据集。作为人工神经网络,学习向量量化算法(简称为LVQ)允许你选择训练实例的数量,能准确地学习这些实例所应有的特征。

学习向量量化算法所表示的是码本向量的集合。这些向量在初始化时候随机选择出来,在学习算法的多次迭代中优化成最能概括训练数据集的集合。在学习完成后,码本向量可像K最近邻算法一样进行预测。通过计算每个码本向量和新数据实例之间的距离来找到最相似的邻居(最佳匹配码本向量)然后返回最佳匹配单元类别值或(在回归情况下的实际值)作为预测。如果能重新调整数据使其处于相同的区间(如0到1之间)则可以获得最佳的预测结果。

如K最近邻算法在你的数据集上已经给出了很好的预测结果,那么可以尝试用学习向量量化算法来减少整个训练数据集的内存存储需求。

支持向量机制

支持向量机可能是最受欢迎、讨论最为广泛机器学习算法之一。

超平面是输入变量空间内一条分割线。支持向量机中,超平面可以通过类别0类或1类最佳分割输入变量空间。在二维空间内,超平面可被视为一条线,我们假设所有的输入点都可以被该线完全分开。支持向量机目标是找到一个分离系数,让一个超平面能够对不同类别的数据进行最佳分割。

超平面与最近的数据点之间的距离被称为边距。在分离两个类上具有最大边距的超平面称为最佳超平面。超平面的确定只跟这些点及分类器的构造有关。这些点被称为支持向量,它们支持并定义超平面。在实践中,可使用优化算法来找到能够最大化边距的系数。

支持向量机可能是最强大的“开箱即用”的分类器之一,值得尝试。

bagging算法和随机森林

随机森林是最流行、最强大的机器学习算法之一。它是种被称为Bootstrap Aggregation或Bagging的机器学习集成算法。

Bootstrap是种从数据样本中估算数量的强大统计方法。换句话说,你需要抽取大量的数据样本、计算平均数值,然后再计算所有均值的平均,以更好地估计整体样本的真实平均值。

bagging算法使用相同的方式,用于估计整个统计模型的最常见方法是决策树。训练数据中的多个样本将被取样,然后对每一个数据样本建模。对新的数据进行预测时,每个模型都会进行预测,并对每个预测结果进行平均,以更好地估计真实的输出值。

随机森林是对bagging算法的一种调整,它不是选择最佳分割点来创建决策树,而通过引入随机性来得到次优分割点。

因此,针对每个数据样本所创建的模型,会与其他方式有所不同,但仍以其独特和不同的方式准确预测。结合所有模型预测,可以更好地估计潜在的真实输出。

如果用方差较高的算法(如决策树)能够获得较好结果,那么通过bagging算法通常可以获得更好的结果。

Boosting和AdaBoost的算法

Boosting是项从多个弱分类器中构建强分类器的集成预测技术。从训练数据中构建模型,然后通过修正前一个模型的错误创造出第二个模型。以此类推,模型不断叠加,直至能够完美的预测训练数据集,或达到可添加的模型的数量上限。

在针对二元分类所开发boosting算法中,AdaBoost是第一个成功的。它是理解boosting算法的最佳起点。现代的boosting方法基于AdaBoost而构建,最典型的例子是随机梯度加速器。

通常,AdaBoost算法会与决策树一起工作。第一个决策树创建之后,决策树在每个训练实例上的性能,都被用来衡量下一个决策树针对该实例所应分配的关注程度。难以预测的训练数据被赋予更大权重,而容易预测的数据则被赋予更小权重。模型依次创建,每一次更新训练实例的权重,都会影响到序列中下一个决策树学习性能。所有决策树完成后,即可对新输入数据进行预测,而每一个决策树的性能将由它在训练数据上的准确度所决定。

由于模型注意力都集中于纠正上个算法的错误,所以必须确保数据是干净无异常。

最后建议

初学者常会被眼花缭乱的机器学习算法所困扰,提出“我该使用哪种算法”这样问题。

此问题的答案取决许多因素,包括:

  1. 数据大小、质量、性质;
  2. 可用计算时间;
  3. 任务的紧迫性;
  4. 你想要用数据来做什么。

即使一位经验丰富的数据科学家,在尝试不同的算法之前,也无法回答哪种算法的性能是最好的。机器学习算法还有很多,以上这些是最受欢迎的算法。如果你刚入门机器学习,这将是一个很好的学习起点。

分类
成长之路

生命苦短,我需要python

语言,是人们互相沟通交流的工具,大家通过各种各样的语言互相的了解彼此。表情语言、自然语言、身体语言等等。

语言,也是人类和电脑交流的工具,不过因为电脑没有学习能力,所以我们不得不按照其标准与其交流,这时我们就需要掌握一些计算机语言。

计算机语言分为很多种,个人简单分成两类,一类就是编程语言,另一类是执行语言。

何为执行语言,我定义的执行语言就是系统中自带的,类似于linux系统中的命令,将这些命令组合在一起的shell脚本文件,就属于执行语言了。这种语言使用简单,不过因为受系统命令的限制,可以实现功能有限。

何为编程语言,简单来说就是之前不存在的一些功能可以通过这种语言创造出来,例如c等。

今天就想跟大家聊下python,这货跟我的年龄差不多,不过是近几年才流行的(当然之前也有人用,不过还没达到耳熟蓝翔的程度吧)我是因为需要学习自动化运维吧,才接触到python的。

我个人没有任何的语言基础,对任何事物都是三分钟热度,不过python这一门语言确实讨人喜欢。此文列出python的几大特点,以此结束此文,以后可能会更新些关于python的教程,敬请期待!

优势:

  1. 跟C/C++/Java相比,Python能让你用少的多的多的代码写出相同的程序。有人曾计算过,Python写出的程序的代码行数只相当于相对应的Java代码的行数的五分之一。如果没有绝对必要,为什么要花这么多时间写出这么多的代码?而且,有人还说,一个优秀的程序员能维护的代码最多是2万行。这不区分使用的语言究竟是汇编,C还是Python/Ruby/PHP/Lisp。所以,如果你用Python写,你一个人干的,不管是干什么,如果换Java/C/C++,那都需要一个5人的小团队来干。
  2. 跟PHP/VB相比,Python是一种从设计上讲比它们好的不知多少倍的语言。PHP和VB分别是在开发网站和桌面应用程序上非常流行的语言。它们流行的原因是非常易学。不懂计算机的人也很容易的上手。如果你用这些语言开发过大型的项目,你就会发现这些语言的设计是如此的糟糕。是好朋友,他就不会劝你使用PHP/VB。
  3. 跟Lisp/Scala/Haskell/Closure/Erlang相比,Python跟它们比起来显得相当的主流。确实,这些语言每种都有其很酷的特征,对于高级编程人员,了解这些语言能给他们对编程的思考带来实际提升。但这些应该在你以后的职业生涯中才去决定学哪一两种。对于现在,Python是在语言功能和实际运用之间平衡后更好的选择。
  4. 跟Perl相比,Python都受恩于Perl,在两种语言异军突起前,Perl是最好、最大的一种动态型语言。但是现在,Perl已成为明日黄花,越来越多的人都转向Python。我感觉Perl的面向对象机制有点做,很不好用。通常认为,Perl一种比较难学的语言,因为它提供你了太多不同的方法去完成同一个任务,它的语法有一点像密码,非常的不直观,除非对它掌握的非常好。总之,感觉Perl是一种对于学生来说不是很合适的语言,除非你有特殊的理由去学它。
  5. 跟sh/sed/awk/bash相比,如果你使用Linux/Unix,可能需要做一些shell编程,甚至会编写一些不小的程序。但是,对于这些语言,一旦程序达到一定行数,事情就会开始变得让你痛苦不堪,你最好是用Python去做这些事情。当然,要做这种事情,Perl才是最好的选择,Python排第二。
分类
成长之路

学好Linux需要改变的习惯

如果可以选择,相信很多人会使用Windows的操作系统,毕竟图形界面对于我们来说,非常易于操作,但现在我们需要学习Linux操作系统,有些习惯就需要改改了,都有哪些?我们今天就来简单说下。

上面也提到了,我们习惯于操作图形化界面,不过要想在Linux系统中实现更多的操作,我们需要习惯使用文字界面,所以第一个需要改变的习惯,就是由图形转向文字了。

在Windows系统中找文件,我们会选择C盘D盘啊,而在Linux系统中,没有盘符概念,所有分区,都变成挂载点,那什么是挂载点呢?例如在Windows系统中我们插入了一个U盘,系统会立刻检测到有东西在插我,当检测到是U盘时会自动分配一个未被使用的盘符(例如I盘)与我们的U盘相互关联,关联之后,我们可以通过点击I盘盘符访问U盘数据,这个过程就是挂载,而对应的盘符,就是挂载点了。

Linux系统中没有盘符概念,因为和Windows不同,Linux没有顺序性字母列表,所以当新的存储设备接入时,Linux系统不知道该分配哪个挂载点给它,所以当我们每次插入存储设备时,都需要自行手动的挂载。

另外在Windows系统中文件的扩展名决定文件的类型,而在Linux系统中,文件类型定义非常笼统,几乎所有在系统中存在的东西都可以被称之为文件,故有“Linux系统凡事皆文件”一说。在Linux系统中扩展名的作用仅限于方便管理人员识别,甚至很多文件,都没有扩展名。

在Windows系统中常用的东西都会有快捷方式方便我们的查找,但在Linux系统中,更多文件的路径都需要我们记忆,所以对于Windows系统无用的搜索功能,在Linux系统中则是神一般存在!

分类
成长之路

如何记笔记及学习深度

好记性不如烂笔头,说明了记笔记的重要性,但是你会记笔记吗?今天给大家介绍一个我记笔记的方法,不一定适用您,但希望可以对大家提供帮助。

我记笔记用的是三分法,就是把笔记分成三部分,页头、左侧内容、右侧备注。

页头:在笔记的最上边栏,可以写下笔记的关键字,例如今天学的用户,就可以写“用户管理”后面加个括号,写上相关命令;

左侧内容:不管你看书籍、视频、授课,此处可以记上面的内容,不需要加补充,按照实际内容记录即可;

右侧备注:此处写上老师补充、自己心的、遇到问题、解决方案等等,简单来说,就是作为扩展。

这样不管整理笔记,还是后期查询,都会非常简单,想找命令直接查询页头,然后在左侧找使用方法,右侧找曾经遇到问题的解决方案。

另外和大家说一下学习深度,很多同学不太清楚,自己掌握到了什么程度,你不妨给自己定位一下:

第一层为听懂,就是书上写的、老师讲的,你可以听懂理解了;

第二层为会做,可以按照笔记(毕竟不太熟练)可以做出实验,但是不可借助他人帮助;

第三层为解决,在实验过程中,难免遇到一些问题,很多初学者的办法就是重做实验,简单来说就是避开问题,我们不推崇这样的解决方式,可以尝试修复,并且收集经验;

第四层为讲解,达到前三层后,可以尝试用自己理解的概念,给别人讲一下,如果别人听懂,说明你是真的懂了。

希望能对大家有所帮助!

分类
成长之路

用win10几个需要知道的事

尽量别使用ghost版本

Windows系统一直有这个毛病,越用越慢,最好解决的办法并不是优化,而是重装。而重装系统最方便的方法就是ghost,这里建议尽量不要使用ghost的重装方式,首先系统自带恢复出厂设置功能,可以直接恢复到最初的状态,免去了重装系统的繁琐。其次使用ghost重装时,ghost为了精简安装包体积,会删除很多原带的软件,这样就降低了系统的稳定性,并且会影响到后期系统更新。

一定要注册live账号

现在很多系统都是云端,就是需要你注册个账号,将你系统上的东西,同步到网络上,这样你换一个地方,同样可以访问。使用win10的系统,需要你注册live账号,这个账号有很多的功能,所以强烈建议大家注册一个,也不麻烦,注册很简单的。如果不注册呢,首先应用商店功能无法使用,其次系统自带的网盘也无法使用。

4G内存不要装太多东西

win10的优化做的不错,在小内存系统上跑的很流畅,不过win10自带的服务很多,这些服务会持续在后台运行,很耗费内存的,如果再装一些,系统会吃不消,建议资金充足,一定要升到8G以上。

安装软件时一定要选对版本

现在使用的win10很多都是64位,如何查看?随便打开一个目录,在左侧右键计算机,选择属性,即可在出现的窗口中找到系统的版本。
win10有两个界面,一个平板界面,一个普通桌面,两个界面有分别对应的软件类型,这也是需要注意的。

刚装完的系统往往最卡

我们一般在安装系统后,体验系统的流畅性,对于win10系统来说呢,就不要心急了,因为系统安装之后往往是最卡的。原因就是在系统安装后,会自动在后台执行升级,并且win10的升级形式是静默式,也就是说自动下载自动安装,有时候还会自动重启呢!

占用高资源的进程不能随意停止

当系统卡时了你怎么办,无非就是启动任务管理器把占用资源最高那个进程关了。在win10里可不能这样,这些进程往往都是系统进程,如果你强制中止了,系统可能也就死了。

系统自带杀毒软件

普通人家装完系统之后,第一时间会装一款杀毒软件,就怕刚装系统进入病毒。很多人会纠结哪款杀毒软件比较好呢?如果你用win10就不需要纠结了,因为其自带杀毒软件的,听说还很好用。当然,如果你不相信其杀毒的能力,也可以自行安装第三方杀毒软件,系统检测到第三方杀毒软件之后,还会贴心的自动帮你关闭系统自带的杀毒软件。

如何免密直接登录系统

win10的安全性很不错,只要是登系统,必须输入密码。但如果是在家使用台式电脑,就你一个人用,每次开机都要输入密码,太麻烦了,如何去掉?点击Cortana搜索框,输入netplwiz按回车,然后取消要使用本计算机用户必须输入用户名和密码就行了。