前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小白入门机器学习必备:编程语言环境介绍及搭建

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

作者头像
IT阅读排行榜
发布2020-02-20 15:18:05
1K0
发布2020-02-20 15:18:05
举报
文章被收录于专栏:华章科技华章科技

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

本文将介绍当前机器学习主流的编程语言环境,当前机器学习使用最多的编程语言是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工具,在命令行输入命令:

代码语言:javascript
复制
pip install 库名

代码语言:javascript
复制
conda 库名

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

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

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

代码语言:javascript
复制
import 库名

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

代码语言:javascript
复制
import 库名 as 别名

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

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

代码语言:javascript
复制
from 库名 import 类名

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

03 Numpy简介

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

▲图2-3 Numpy官网首页

1. Numpy的安装

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

代码语言:javascript
复制
pip install -U numpy

2. Numpy的基本用法

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

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

代码语言:javascript
复制
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安装,命令如下:

代码语言:javascript
复制
pip install -U scikit-learn

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

代码语言:javascript
复制
conda install scikit-learn

2. Scikit-Learn的基本用法

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

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

代码语言:javascript
复制
import sklearn

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

代码语言:javascript
复制
from sklearn import linear_model
model = linear_model.LinearRegression()

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

代码语言:javascript
复制
from sklearn.linear_model import LogisticRegression
model =linear_model.LogisticRegression()

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

代码语言:javascript
复制
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安装,命令如下:

代码语言:javascript
复制
pip install -U pandas

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

代码语言:javascript
复制
conda install pandas

2. Pandas的基本用法

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

  • Series:一维数据,可以认为是一个统计功能增强版的List类型。
  • DataFrame:多维数据,由多个Series组成,不妨认为是电子表格里的Sheet。

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

代码语言:javascript
复制
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实现》,经出版方授权发布。

有话要说?

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

欢迎留言与大家分享

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据DT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档