![](/style/images/good.png)
![](/style/images/bad.png)
Machine Learning之Python篇(一)
source link: http://antkillerfarm.github.io/ai/2017/09/04/ML_python.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Machine Learning之Python篇
https://ljalphabeta.gitbooks.io/python-/content/
《Python机器学习》中文版
https://github.com/lawlite19/MachineLearning_Python
东南大学某研究生的github,包含大量ML算法示例。
https://github.com/lawlite19/DeepLearning_Python
上个哥们的DL示例
http://www.jianshu.com/p/eb9e3be977ed
Python数据分析之武林秘籍。这里包括了大量ML或DL的python工具包。
https://chrisalbon.com/
Chris Albon的个人主页。包含大量ML/DL相关的note。
Chris Albon, UC Davis博士。在肯尼亚工作多年,援非的IT人。著有《Machine Learning with Python Cookbook: Practical Solutions from Preprocessing to Deep Learning》。
https://store.chrisalbon.com/
Chris Albon写的ML卡片书。
https://github.com/CharlesPikachu/Games
一个python制作游戏的示例库,包括使用AI玩游戏(DQN等)
https://github.com/CharlesPikachu/AIGames
上个作者的另一个python+AI+游戏的代码库
https://github.com/HuberTRoy/leetCode
Python实现各种基础算法
Conda
Conda是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。它是目前最流行的Python环境管理工具。
https://conda.io/docs/
https://mp.weixin.qq.com/s/NX2zWc7y8Y2kK9ZNxlUBVA
conda+jupyter玩转数据科学环境搭建
https://mp.weixin.qq.com/s/SGhKcD9zakXOInkZSmKX9A
Conda太慢?试试这个加速工具!
Anaconda
Anaconda是一个科学计算方面的python发行版,下面提到的所有工具都可以通过Anaconda一站式安装。
Python:蟒
Anaconda:森蚺
https://www.anaconda.com/download/
https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
基本命令:
conda update --all
conda update conda
conda update anaconda
Anaconda同时也支持多个Python版本的并存和切换。它的底层用到了virtualenv。这个功能在Ubuntu下意义不太大,因为后者的apt工具已经维护好了2.x和3.x两个分支,除非你想同时支持两个不同的3.x分支。但在Windows下,由于包管理器的缺位,这个问题是很难解决的。
创建一个virtualenv:
conda create -n python2 python=2.7
这条命令会在Anaconda/envs下创建一个python2文件夹。
显示env:
conda env list
将命令行环境切换到该版本:
conda activate python2
最新的Anaconda提供了conda init
命令用于将环境添加到shell中。如果不想要的话,可以到~/.bashrc
删除之。
退出环境:
conda deactivate
conda install XXX
conda环境也支持用pip安装包,而且在conda list
的时候会给出来源。
http://www.cnblogs.com/zhusleep/p/5616099.html
Anaconda安装更新库
https://segmentfault.com/a/1190000004020387
Python多版本切换工具-Pyenv\virtualenv及Anaconda科学计算环境的配置
http://www.jianshu.com/p/d2e15200ee9b
Anaconda多环境多版本python配置指导
https://mp.weixin.qq.com/s/i4oUKZXAUMLGaRpJVmT1ZQ
一行命令装下所有“炼丹”工具及依赖项,就靠这个免费软件源了
virtualenv
sudo apt install python3-pip python3-virtualenv
pip3 install virtualenv
创建env:
virtualenv --no-site-packages venv
source venv/bin/activate
deactivate
Conda可以创建当前系统中没有的python版本的env,但是virtualenv则不行。
NumPy
NumPy是python语言所有数学计算库的基础。它主要提供了矩阵运算的功能。
http://www.numpy.org/
官方中文网:
https://www.numpy.org.cn/
https://docs.scipy.org/doc/numpy-dev/user/quickstart.html
API参考:
https://docs.scipy.org/doc/numpy/reference/
quickstart中文版:
https://mp.weixin.qq.com/s/q0jSrxRRQAB7FUUqgD5H6A
中文教程:
https://www.runoob.com/numpy/numpy-tutorial.html
原始二进制文件:tofile()和fromfile()
NumPy专用的格式文件(.npy或.npz,它和原始二进制文件的区别在于:前者包含维度和类型信息,而后者只有数据本身):save()和load()
文本文件:savetxt()和loadtxt()
http://www.cnblogs.com/dmir/p/5009075.html
python:numpy(文件存取)
数据类型转换
类型转换:c = b.astype(int)
把A类型看做B类型,比如将一个float64的数,看做8个单字节的数:a.dtype = 'int8'
http://www.cnblogs.com/hhh5460/p/5129032.html
numpy数据类型dtype转换
运算符重载
运算符重载,本来是python语言提供的功能。但通常来说,还是数值计算领域用的比较多,所以就写在这里了。
C++的运算符重载,使用运算符作为函数名。而python则使用内置函数名,作为运算符重载的函数名。例如,__lt__
函数对应<
运算符。
从设计上,我是比较支持python这种方式的。毕竟运算符都有特定含义,突然变成函数名,还是挺别扭的。
numpy的运算符重载还是挺方便的。
a[a<0.5]=0
上面的示例,可将a中小于0.5的值都设置为0。其中,a<0.5
实际上返回的是一个bool型的tensor。
python的运算符重载不仅于+-*/><
,还包括索引之类的操作。例如__getitem__
和__setitem__
分别对应了X[key]
的读写操作。
https://blog.csdn.net/goodlixueyong/article/details/52589979
浅析Python运算符重载
nan_to_num:将NaN替换为0,将infinity替换为最大值。
histogram:直方图。
percentile:百分位数。用途举例:提取数组中最小的30%的数。
einsum
在实现一些算法时,数学表达式已经求出来了,需要将之转换为代码实现,简单的一些还好,有时碰到例如矩阵转置、矩阵乘法、求迹、张量乘法、数组求和等等,若是以分别以transopse、sum、trace、tensordot等函数实现的话,不但复杂,还容易出错
现在,这些问题你统统可以一个函数搞定,没错,就是einsum。
einsum全称Einstein summation convention,是爱因斯坦1916年提出的一种标记约定。
cik=aijbjk=∑jaijbjk
c = np.einsum('ij,jk->ik', a, b)
https://zhuanlan.zhihu.com/p/71639781
一个函数打天下,einsum
https://mp.weixin.qq.com/s/QxowSMirwnsUjIA-MFCj7g
特斯拉AI高管都推荐的张量工具(Einops)
arr1D = np.array([1, 1, 2, 2, 3, 4])
constant: [0 0 1 1 2 2 3 4 0 0 0]
edge: [1 1 1 1 2 2 3 4 4 4 4]
linear_ramp: [0 0 1 1 2 2 3 4 3 1 0]
maximum: [4 4 1 1 2 2 3 4 4 4 4]
mean: [2 2 1 1 2 2 3 4 2 2 2]
median: [2 2 1 1 2 2 3 4 2 2 2]
minimum: [1 1 1 1 2 2 3 4 1 1 1]
reflect: [2 1 1 1 2 2 3 4 3 2 2]
symmetric: [1 1 1 1 2 2 3 4 4 3 2]
wrap: [3 4 1 1 2 2 3 4 1 1 2]
https://mp.weixin.qq.com/s/FVI3zEp4it-fd99-3MU9vA
从数组到矩阵的迹,NumPy常见使用大总结
https://www.machinelearningplus.com/101-numpy-exercises-python/
101 NumPy Exercises for Data Analysis。这里包含了101个和numpy有关的问题,并附有答案。
https://mp.weixin.qq.com/s/DiFTV29gvMlosoy2HaPQjw
用Python做图像处理(3)
https://mp.weixin.qq.com/s/qMiNGHHZMnPeFqXFz9c6rQ
numpy ndarray之内功心法,理解高维操作!
https://mp.weixin.qq.com/s/YxRPhTVu3zjVTzWn1290HQ
第二代NumPy?阿里开源超大规模矩阵计算框架Mars
https://mp.weixin.qq.com/s/0OSweIx9ibpp2bc5N61I4Q
C++程序员也能用上NumPy了
https://github.com/ddbourgin/numpy-ml
惊为天人,NumPy手写全部主流机器学习模型,代码超3万行!
https://mp.weixin.qq.com/s/MxvA-f6ocpmGLW5JQ8qsSg
玩数据必备Python库:Numpy使用详解
https://mp.weixin.qq.com/s/udKMuAfMVD4axulCR6Wgvw
这100道练习,带你玩转Numpy
https://mp.weixin.qq.com/s/2_q89PIfw43zivwHmTmY-A
在向量化NumPy数组上进行移动窗口操作
https://mp.weixin.qq.com/s/m-j1_2la-tg38NwNvDDSjw
Numpy中常用的10个矩阵操作示例
SciPy
SciPy提供了一些更高阶的数学运算库,比如:积分、插值、信号处理、傅立叶变换、矩阵特征值、统计计算等。
SciPy提供的功能主要仍局限于数学运算,而并未提升到算法的层面。这也是它和scikit-learn或其他高级库的差别所在。
http://www.scipy.org/
API参考:
https://docs.scipy.org/doc/scipy/reference/
- Gaussian filter
w = 2*int(truncate*sigma + 0.5) + 1
https://stackoverflow.com/questions/25216382/gaussian-filter-in-scipy
Gaussian filter in scipy
https://mp.weixin.qq.com/s/vGS4U3g4eaPuQwBWh-lTiA
机器学习核心:优化问题基于Scipy
https://mp.weixin.qq.com/s/xN0mX9XWvVUpi0p5Tc6vLA
利用SciPy求解非线性规划问题
https://mp.weixin.qq.com/s/44RjMdARJMSM1_seImaSbg
SciPy稀疏矩阵
https://mp.weixin.qq.com/s/5g1WgWEOkA-38MXbkKUtWg
Scipy使用大全
sklearn
Scikit-learn提供了常见的机器学习算法的实现。
http://scikit-learn.org/stable/index.html
http://scikit-learn.org/stable/user_guide.html
API参考:
http://scikit-learn.org/stable/tutorial/index.html
http://scikit-learn.org/stable/modules/classes.html
中文文档:
http://sklearn.apachecn.org
https://mp.weixin.qq.com/s/OHfQtJWq0wkF6BLkRWOAyw
sklearn与分类算法
https://mp.weixin.qq.com/s/OxNj9fWaEMh8SuQiK52HWg
sklearn中PCA库讲解与实战
https://mp.weixin.qq.com/s/JjJcyAccRc84U8C_qllf_Q
如何用sklearn创建机器学习分类器?
https://mp.weixin.qq.com/s/JkyJMKyDAaiX2M58PnWXaA
如何使用sklearn优雅地进行数据挖掘?
https://mp.weixin.qq.com/s/G5P0M-WGV_rMmHJE8lz6WQ
Scikit-Learn决策树算法类库使用小结
https://mp.weixin.qq.com/s/O1wPvi_aKK73yJcUpDf6EQ
开源sk-dist,超参数调优仅需3.4秒,sk-learn训练速度提升100倍
Matplotlib
Matplotlib是一个高阶的图形库,主要提供生成图表等数据可视化方面的功能。
http://matplotlib.org/
API参考:
http://matplotlib.org/1.5.3/api/index.html
https://github.com/antkillerfarm/antkillerfarm_crazy/blob/master/python/ml/plot/matplotlib_helloworld.py
https://mp.weixin.qq.com/s/mpj1QpWpnGm8117p3cEWZw
如何优雅而高效地使用Matplotlib实现数据可视化
https://mp.weixin.qq.com/s/LBrlXEhGYOx1aPFZzQcyTQ
5种快速易用的Python Matplotlib数据可视化方法
https://mp.weixin.qq.com/s/aBi1PTEumRs0frUpb_uYrA
用Python做图像处理(2)
https://mp.weixin.qq.com/s/3VgFKiUOFvtWmqg1BO9xGw
matplotlib–python的数据可视化
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK