查看原文
其他

小白入门机器学习必备:编程语言环境介绍及搭建

莫凡 大数据DT 2020-09-08


导读:工欲善其事,必先利其器,机器学习也不例外。算法原理理解得再清楚,最终也需要通过编写代码来真正实现功能和解决问题。


本文将介绍当前机器学习主流的编程语言环境,当前机器学习使用最多的编程语言是Python,在业界口碑一直不错的Python语言借着机器学习的东风一下跻身编程语言热门榜的首位。


本文还将介绍Python语言下机器学习相关的支持库,包括科学计算支持库Numpy、机器学习库Scikit-Learn和数据处理库 Pandas。想要在实际工作中使用机器学习解决具体问题时,使用这些支持库将大大提升效率。


作者:莫凡

来源:大数据DT(ID:hzdashuju)





01 常用环境


一般来说,算法理论的实践方式有两种,一种是自己动手将算法用代码都实现一遍,另一种则是充分利用工具的便利性,快速了解掌握现有资源后,随即开始着手解决现实问题。


对于要不要重复造轮子的争论,我想是很难有决断的,两种方法各有利弊,这里我们选用第二种,这也贯彻了本文的宗旨:不是为了学习知识而制造知识,而是为了解决问题去学习知识。


机器学习经过这几年的高速发展,已经积累了非常丰富的开放资源,通过充分利用这些资源,哪怕此前你对这个领域不了解,也能快速掌握并着手解决实际问题。


首先是编程语言,我们选择Python。在前些年,Python和R语言在机器学习领域保持着双雄并立的局面,大致可以认为工业界偏爱Python而学术界偏爱R,但随着技术发展,特别是这几年深度学习所需的支持库毫无例外地都选择了用Python实现之后,Python语言已经成为机器学习领域毫无疑问的“老大”。


由于机器学习的火热,Python甚至拥有了与传统编程语言C和Java一较高下的底气,在多种编程语言排行榜上都大有后来居上的趋势。那么Python,决定就是你了!


接下来是支持库Numpy。机器学习涉及矩阵运算等大量数学运算,好在Python有两大特点,一是灵活,二是库多,Numpy就是Python中专门设计用于科学计算的专业支持库,在业界有口皆碑。不只是机器学习,其他科学领域譬如天体物理涉及的数学运算,要么直接使用Numpy,要么基于Numpy构建更高层的功能库。


最后是算法库Scikit-Learn。基于Python的机器学习算法库实际上有很多,每过一段时间就会冒出个“前五”“前十”这样的排行,但稳坐榜首的一直是Scikit-Learn。


它不但种类齐备,市面上见得到的机器学习算法基本上都能在此找到对应的API,简直是一家“机器学习算法超市”,而且封装良好、结构清晰,你可以通过简单几行代码就能完成一个复杂算法的调用,是机器学习领域入门的福音,更是进阶的法宝。


另外再加上一个Pandas数据处理库。它内置许多排序、统计之类的实用功能,属于“没它也不是不行,但有它会方便很多”的角色。业界实现机器学习,基本上都会用到Numpy、Scikit-Learn和Pandas这三件套。




02 Python简介


Python是一种动态的高级编程语言,与C和Java需要编译执行不同,Python代码是通过解释器解释执行,一个明显的区别是,Python的数据类型不用事先声明,语法更为灵活多变,代码看起来也更加简洁,用C和Java需要十行代码才能写明白的意思,可能用Python写一行就可以了。


高效快速是Python引以为傲的特点,Python社区甚至流传一句口号:“Life is short, I use Python.


Python仍在不断迭代,而且并不向前兼容,这也导致当前Python分裂成两大版本分支,即Python 2.X和Python 3.X,虽然从语法上看还不至于成为两款语言,但二者代码是无法混用的,对于版本的选择也是开始学习使用Python时所要确定的第一件事。


之前一般认为,Python 2.X的发展时间更长,各方面的支持库更多且更成熟,不少人推荐从这个版本入手。但随着Python团队宣布将于2020年停止对Python 2.X的维护,各大社区都早已开始了从2.X向3.X迁移的工作,所以现在开始学Python的话更建议选择3.X。Python官网见图2-1。


▲图2-1 Python官网首页


1. Python的安装


Python具有很强的泛用性,支持Windows、Linux/UNIX、Mac OS X等主流操作系统平台,安装也很简单,可以通过


https://www.python.org/downloads


选择你使用的操作系统平台所对应的在线或离线安装包并进行安装。在安装包下载页面同时提供了多个版本的Python安装包,如果初次接触可能让你觉得难以选择。不过请放心,你也可以直接下载最新版本的Python安装包。


▲图2-2 Python下载页面


Python是一款开源编程语言,你也可以选择通过源代码进行编译安装。


2. Python的基本用法 


Python是一款通用编程语言,语法满足图灵完备性,这里无法完全展开说明。


不过,如果你熟悉C或者Java语言,那么可以认为Python的语法就是它们的高度精简版,除了上面提到的不用进行类型声明外,Python还少了用来表示作用域的大括号以及语句结尾的分号,但同时,在Python中缩进不仅仅是代码规范,而是语法层面的强制要求。


如果你有语言基础,记住这些区别,应该就能很快熟练地使用Python。


这里仅对两项常用的Python工具进行说明,即Python库安装工具Pip和Conda。丰富的第三方支持库是Python功能强大的原因之一。在使用Python实现功能时,往往需要依赖第三方支持库,这些第三方库需要先安装再使用。安装方法是通过Pip或Conda工具,在命令行输入命令:


pip install 库名



conda 库名


进行联网下载并自动安装。


一般当你成功安装Python后,就能在命令行中直接使用Pip命令了,而Conda则可能需要额外进行安装才能够使用。Conda的功能更为强大,但如果你并不了解Python及相关背景知识,推荐通过Pip工具来下载安装第三方库。


在库的使用方面,Python也与其他编程语言一样,需要先导入再使用,语法是:


import 库名


import之后就能正常使用库的资源了。如果库名较长,还可以使用:


import 库名 as 别名


设定别名之后,通过别名也能够使用库的资源。


要使用库里的某个类,可以通过“库名.类名”的方法调用。如果认为这样写麻烦,或者导致单行语句太长,可以在导入时使用:


from 库名 import 类名


这样就可以在代码中直接使用类名了。



03 Numpy简介


Numpy是Python语言的科学计算支持库,提供了线性代数、傅里叶变换等非常有用的数学工具。Numpy是Python圈子里非常知名的基础库,即使你并不直接进行科学计算,但如图像处理等相关功能库,其底层实现仍需要数学工具进行支持,则需要首先安装Numpy库。Numpy官网见图2-3。


▲图2-3 Numpy官网首页


1. Numpy的安装


Numpy的安装很简单,使用Pip直接安装即可。命令如下:


pip install -U numpy


2. Numpy的基本用法


Numpy拥有强大的科学计算功能,也许刚一接触容易眼花缭乱,不知从何入手。不过不必担心,Array数据类型是Numpy的核心数据结构,与Python的List类型相似,但功能要强大得多。Numpy相关功能都是围绕着Array类型建设的,可以作为你了解Numpy的一条中心线索。


使用Numpy包很简单,只要用import导入即可。业界习惯在导入时使用“np”作为它的别名:


import numpy as np


导入后就可以使用了,常用功能如下。


  • array

    数据创建

    创建Array类型数据

  • zeros

    数据创建

    创建值为0的Array类型数据

  • ones

    数据创建

    创建值为1的Array类型数据

  • eye

    数据创建

    创建单位矩阵

  • arange

    数据创建

    类似内置函数range,生成等差数值

  • linspace

    数据创建

    生成可指定是否包含终值的等差数值

  • random.rand

    数据创建

    随机生成数值

  • T

    数据操作

    转置操作

  • reshape

    数据操作

    不改变原数据的维度变换

  • resize

    数据操作

    修改原数据的维度变换

  • mean

    统计操作

    取均值

  • sum

    统计操作

    求和

  • max

    统计操作

    取最大值

  • min

    统计操作

    取最小值

  • var

    统计操作

    求方差

  • std

    统计操作

    求标准差

  • corrcoef

    统计操作

    计算相关系数

  • append

    数据操作

    新增

  • insert

    数据操作

    插入

  • delete

    数据操作

    删除

  • concatenate

    数据操作

    按行(列)连接数据表

  • add

    数学运算

    标(向)量加法

  • subtract

    数学运算

    标(向)量减法

  • multiply

    数学运算

    标(向)量乘法

  • divide

    数学运算

    标(向)量除法

  • exp

    数学运算

    以e为底的指数运算

  • log

    数学运算

    以e为底的对数运算

  • dot

    数学运算

    点乘



04 Scikit-Learn简介


正如机器学习中推荐使用Python语言,用Python语言使用机器学习算法时,推荐使用Scikit-Learn工具。


或者应该反过来,现在机器学习推荐使用Python,正是因为Python拥有Scikit-Learn这样功能强大的支持包,它已经把底层的脏活、累活都默默完成了,让使用者能够将宝贵的注意力和精力集中在解决问题上,极大地提高了产出效率。Scikit-Learn官网见图2-4。


▲图2-4 Scikit-Learn官网首页


1. Scikit-Learn的安装


安装Scikit-Learn可以有两种方法。通过Pip安装,命令如下:


pip install -U scikit-learn


或通过 Conda安装,命令如下:


conda install scikit-learn


2. Scikit-Learn的基本用法


Scikit-Learn库包含了常见的机器学习算法,而且还在不断更新,常见机器学习算法都可以在Scikit-Learn库中找到,不妨将它当作机器学习算法的百科全书来使用。这里简要介绍它的用法。


使用Scikit-Learn包很简单,使用import导入即可,但须注意Scikit-Learn包的包名为sklearn:


import sklearn


调用机器学习算法也非常简单,Scikit-Learn库已经将算法按模型分类,查找起来非常方便。如线性回归算法可以从线性模型中找到,用法如下:


from sklearn import linear_model
model = linear_model.LinearRegression()


Logistic回归算法也是依据线性模型,同样也在其下:


from sklearn.linear_model import LogisticRegression
model =linear_model.LogisticRegression()


类似的还有基于近邻模型的KNN算法:


from sklearn.neighbors import NearestNeighbors
model =NearestNeighbors()


生成模型后,一般使用fit方法给模型“喂”数据及进行训练。完成训练的模型可以使用predict方法进行预测。


Scikit-Learn库对机器学习算法进行了高度封装,使用过程非常简单,只要根据格式填入数据即可,不涉及额外的数学运算操作,甚至可以说只要知道机器学习算法的名字和优劣,就能直接使用,非常便利。



05 Pandas简介


Pandas是Python语言中知名的数据处理库。数据是模型算法的燃料,也决定了算法能够达到的上限。一般在学习中接触的数据都十分规整,可以直接供模型使用。


但实际上,从生产环境中采集得到的“野生”数据则需要首先进行数据清洗工作,最常见的如填充丢失字段值。数据清洗工作一般使用Pandas来完成,特征工程也可通过Pandas完成。Pandas官网见图2-5。


▲图2-5 Pandas官网首页


1. Pandas的安装


安装Pandas可以有两种方法。通过Pip安装,命令如下:


pip install -U pandas


或通过 Conda安装,命令如下:


conda install pandas


2. Pandas的基本用法


Pandas针对数据处理的常用功能而设计,具有从不同格式的文件中读写数据的功能,使用Pandas进行一些统计操作特别便利。与Numpy类似,Pandas也有两个核心的数据类型,即Series和DataFrame。


  • Series:一维数据,可以认为是一个统计功能增强版的List类型。

  • DataFrame:多维数据,由多个Series组成,不妨认为是电子表格里的Sheet。


使用Pandas 包很简单,只要import导入即可。业界习惯在导入时使用“pd”作为它的别名:


import pandas as pd


导入后就可以使用了,其常用功能如下。


  • read_csv

    读取数据

    从CSV格式文件中读取数据

  • read_excel

    读取数据

    从电子表格中读取数据

  • read_json

    读取数据

    从json格式的文件中读取数据

  • read_clipboard

    读取数据

    从剪切板读取数据

  • to_csv

    写入数据

    将数据写入CSV格式文件

  • to_excel

    写入数据

    将数据写入电子表格

  • to_json

    写入数据

    将数据写入json格式文件

  • to_clipboard

    写入数据

    将数据写入剪切板

  • Series

    写入数据

    创建Series类型数据

  • DataFrame

    写入数据

    创建DataFrame类型数据

  • head

    信息查看

    从头开始查看N位数据

  • tail

    信息查看

    从末尾开始查看N位数据

  • shape

    信息查看

    行列数信息

  • dropna

    数据操作

    删除空值

  • fillna

    数据操作

    填充空值

  • sort_values

    数据操作

    正(逆)序排序

  • append

    数据操作

    横向(按行)连接两个数据表

  • concat

    数据操作

    纵向(按列)连接两个数据表

  • value_counts

    统计操作

    值计数

  • describe

    统计操作

    总体概况信息

  • info

    统计操作

    数值类型统计

  • mean

    统计操作

    取均值

  • corr

    统计操作

    计算相关系数

  • count

    统计操作

    非空值计数

  • max

    统计操作

    取最大值

  • min

    统计操作

    取最小值

  • median

    统计操作

    计算中位数

  • std

    统计操作

    计算标准差


关于作者:莫凡,新技术深度爱好者,曾经从事信息安全前沿技术跟踪研究和数据分析工作,在各类信息安全类技术期刊发表文章五十余篇,现转为投身高端知识“白菜化”项目,希望能让将更多听起来高大上的名词沾一沾“人间烟火”,成为日常生活中真正用得上的知识。


本文摘编自《机器学习算法的数学解析与Python实现》,经出版方授权发布。


延伸阅读

《机器学习算法的数学解析与Python实现》

点击上图了解及购买
转载请联系微信:DoctorData


推荐语:从生活案例中理解算法,发现算法的乐趣,再把算法应用到机器学习中。零基础掌握算法精髓,快速进入人工智能开发领域。



有话要说👇


Q: 入门机器学习,你准备好了吗?

欢迎留言与大家分享


猜你想看👇



据统计,99%的大咖都完成了这个神操作
👇



原来你也在看

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存