当前位置: 首页 > news >正文

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

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

本文将介绍当前机器学习主流的编程语言环境,当前机器学习使用最多的编程语言是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: 入门机器学习,你准备好了吗?

欢迎留言与大家分享

猜你想看????

  • 新手学Python, 如何从"入门到入土"变为"从入门到快速上车"?

  • 机器学习入门必读:6种简单实用算法及学习曲线、思维导图

  • 2020大风口!什么是图神经网络?有什么用?终于有人讲明白了

  • 学AI哪家强?2019全球排行清华第1,北大第2

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

????

原来你也在看

相关文章:

  • Linux系统运维书单
  • OpenStack常见的22个问题汇总
  • 疫情肆虐下,程序员用代码告诉你为什么千万不要出门!
  • 双手奉上数据库技术书单,助你玩转数据库的各种技术!
  • TIOBE 2 月编程语言排行榜:Objective-C 的出路在何方?
  • “猿”宵佳节,“猿”来是你。
  • 数据科学家们会被 AutoML 代替吗?
  • 【新书速递】机器学习算法的数学解析与Python实现
  • 【直播预告 】2月10日 两场直播“Flutter技术入门+Linux从业方向扫盲及必读书籍推荐” 等你来!...
  • 柱状图、堆叠柱状图、瀑布图有什么区别?怎样用Python绘制?
  • 【直播预告】2月11日20:00-21:00 “引爆微信群 用社群倍增业绩”扫码即可进入直播间~...
  • 用python数据分析了北京积分落户名单,发现……
  • 中台辨析:架构的演进趋势
  • 【直播预告】2月12日“实体企业如何打造私域流量+企业级业务架构方法与工作”两场直播等你来!...
  • 【直播预告】2月13日 三场科技类大咖直播!带好小板凳,前排等你哦!
  • JavaScript DOM 10 - 滚动
  • MySQL QA
  • Puppeteer:浏览器控制器
  • Python进阶细节
  • python学习笔记 - ThreadLocal
  • redis学习笔记(三):列表、集合、有序集合
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 记一次删除Git记录中的大文件的过程
  • 力扣(LeetCode)56
  • 聊聊hikari连接池的leakDetectionThreshold
  • 入口文件开始,分析Vue源码实现
  • 手写一个CommonJS打包工具(一)
  • (bean配置类的注解开发)学习Spring的第十三天
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (阿里云万网)-域名注册购买实名流程
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (转载)虚函数剖析
  • .aanva
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .net6+aspose.words导出word并转pdf
  • .net反编译的九款神器
  • .NET连接MongoDB数据库实例教程
  • @FeignClient注解,fallback和fallbackFactory
  • [<MySQL优化总结>]
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [BZOJ3211]:花神游历各国(小清新线段树)
  • [CakePHP] 在Controller中使用Helper
  • [Golang]K-V存储引擎的学习 从零实现 (RoseDB mini版本)
  • [hibernate]基本值类型映射之日期类型
  • [HNCTF 2022 WEEK2]easy_include 文件包含遇上nginx
  • [HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页