【机器学习】机器学习python入门
python作为机器学习领域的主要编程语言,其中包含了很多机器学习相关的第三方库,今天就总结一下在机器学习中我们常用的第三方库并告诉大家怎么样使用python正式开始机器学习之旅。本文主要是介绍,详细库的用法太多了大家,可以自寻api文档
1、python的安装配置
开发环境推荐使用pycharm
windows下可以直接去python官网直接下载window版本的python,但是需要注意的是python2.7与3.0之后的版本存在较大差异,这里推荐大家选择高版本的,因为在随着python的更新很多第三方库都转向了对3.0的支持,官网上下的python安装包很人性化环境变量可以不用手动配,安装的时候在加入环境变量上打一个勾就好了。
Linux下因为系统本身存在python2.7支持的所以如果使用2.7可以不用安装,如果使用3.0之后的版本就需要自己下载wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
然后解压到 /usr/local/python3 下,然后还需要自己配置好环境变量和软连接
安装成功之后就可以使用pip命令安装各种第三方库
- pip install XXX
- pip uninstall XXX
- (需要注意的是如果在linux下你已经更改了软连接就需要使用pip3否则会直接安装到python2.7里面去)
2、Anaconda
anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项
conda:是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换
Anaconda就包含了Conda、Python以及集成了大量的科学计算包。所以使用anaconda会非常的方便包管理,当然如果要是不嫌麻烦的话一个一个pip install也是没问题的,我就是这么过来的,因为发现这个神器的时候已经装了好多库了,欲哭无泪。
3、数据分析常用库
Numpy
NumPy系统是Python的一种开源的数值计算扩展,这种工具可用来存储和处理大型矩阵。就是一个玩矩阵特别溜的计算工具包
- 基于向量化的运算
- 进行数值计算的时候Numpy数组效率比list高
Scipy
Scipy是一种使用NumPy来做高等数学、信号处理、优化、统计的扩展包 ,所以与numpy共同出现协同使用。
Pandas
Python Data Analysis Library 或 pandas 也是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。存在Series和DataFrame两种数据类型,总之就是玩表格很强的,一见到什么csv、xls、数据表之类的第一个想到的就是pandas
- 支持自动或明确的数据对齐的带有标签轴的数据结构
- 整合的时间序列功能
- 以相同的数据结构来处理时间序列和非时间序列
- 支持传递元数据(坐标轴标签)的算术运算和缩减
- 灵活处理丢失数据
- 在常用的基于数据的数据库(例如基于SQL)中的合并和其它关系操作
matplotlib
这个包我就非常喜欢了,是用来画图的,可以画折线图、散点图、柱状图、三维图、热度图等各种图都可以
4、高级数据分析库
这里面的库都是比较高级的算法层面的
nltk
nltk的全称是natural language toolkit,是一套基于python的自然语言处理工具集。
- 文本提取
- 切词
- 词频统计分析
- 词袋模型
- 情感分析
可以使用 pip install -U nltk 安装,利用import导入,nltk.download()可以下载语料库
igraph
用于图计算和社交网络分析,可以使用 pip install -U python-igraph 安装
Scikit-learn
Scikit-Learn是用Python开发的机器学习库,其中包含大量机器学习算法、数据集,是数据挖掘方便的工具。属于框架级的库了
Opencv
搞计算机视觉的同学一定非常熟悉,OpenCV是一个用于图像处理、分析、机器视觉方面的开源函数库。用来处理图片非常好用,底层是用C++实现的
opencv需要numpy、Matplotlib、opencv-python三个包
#导入cv模块
import cv2
#读取图像,支持 bmp、jpg、png、tiff 等常用格式
img = cv2.imread("D:\python\test.jpg")
#创建窗口并显示图像
cv2.namedWindow("Image")
cv2.imshow("Image",img)
cv2.waitKey(0)
#释放窗口
cv2.destroyAllWindows()
Tensorflow
这个无疑要用来压轴,TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。也是我们日常开发最常用的一个框架,毕竟是谷歌的亲生的,就用他肯定没错的。
节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。
5、python2.7和python3
最后介绍一下python2.7和3之间的差异
- 3的 print() 必须要加括号
- 整除:3/2=1.5(python3);3/2=1(python2.7)
- 支持Unicode (utf-8) 字符串
- 是用for的时候xrange()函数被集成在range()函数中
- 取消.next()
- raising exceptions:raise IOError(“file error”)
- Handling exceptions:except NameError as error
- for 循环变量和全局命名空间泄漏: [… for var in (item1, item2, …)]
- 比较不可排序内容抛出错误
- 通过input()解析用户输入:把用户的输入存储为一个 str 对象
- 返回可迭代对象,而不是列表
- 使用 future 模块支持python3:division、print_function
上一篇: python安装basemap