《Python机器学习基础教程》API 简介

  • Post author:
  • Post category:python



目录


前置条件


Python3 API


numpy API


Pandas API


plt API


机器学习初步入门,感觉和以前的数学建模那一套很像,回归,分类,聚类,效果的可视化。只是从MATLAB换成了Python。记录一下在书中用到的api,一是不想每次都去官网查, 二是希望能对pandas和numpy这些数据科学的包的api用法更熟悉一些,不只是机器学习,其他很多时候也会带来巨大的方便,例如从es拉取数据并导出,直接用pandas的DataFrame.to_csv就可以了。

前置条件

书中用到的包主要是numpy,pandas,matplotlib.pyplot这三种,在后文采用如下的简写:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

三者的官网api链接如下,需要查看非常详细的关键字说明请自行查阅:


numpy官方api


pandas官方api


pyplot官方api


Python内置函数

Python3 API


zip()

:zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。可迭代对象是为了优化内存使用。如果只有一个参数,不要使用zip,直接元组即可。例如用for i in (‘a’, ‘b’, ‘c’),而不是使用for i in zip([‘a’, ‘b’, ‘c’]),后者返回的是[(‘a’,), (‘b’,),(‘c’,)]。


repr()

:repr() 函数将对象转化为供解释器读取的形式。返回对象的string类型,repr()的输入对于Python解释器更为友好,可实现obj == eval(repr(obj))


enumerate()

: enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。Python 2.3. 以上版本可用,2.6 添加 start 参数。

>>>seasons = [‘Spring’, ‘Summer’, ‘Fall’, ‘Winter’]

>>> list(enumerate(seasons)) [(0, ‘Spring’), (1, ‘Summer’), (2, ‘Fall’), (3, ‘Winter’)]

>>> list(enumerate(seasons, start=1)) # 下标从 1 开始

[(1, ‘Spring’), (2, ‘Summer’), (3, ‘Fall’), (4, ‘Winter’)]

书中有这样的用法: a, _ = [1, 2] 此时a为1。

numpy API


np.bincount()

:计算非负的int数组中每个值的出现次数。容器的数量(大小为1)比x中的最大值大1。这个api需要看下官网,一两句说不清楚。

numpy.bincount详解



这里说的是每个bin,都给出了它的索引值在x(入参数组)中的出现次数。


这里的bin可以认为是箱子,在机器学习中也有binning(分箱)的模型。但从个人角度来看,bin可以认为是组,在plt.hist()里面用到的入参bins可以认为是


组界


,这个后面说到再提。

>>> np.bincount(np.arange(5))
array([1, 1, 1, 1, 1])
>>> np.bincount(np.array([0, 1, 1, 3, 2, 1, 7]))
array([1, 3, 1, 1, 0, 0, 0, 1])

因为容器的数量(大小为1)比x中的最大值大1。所以对于第一个例子的入参[0,1,2,3,4],这里有五个连续的数,bin的数量等于max(x)+1=5,即认为有五个bin,bin1的索引是0,bin2的索引是1,bin3的索引是2..以此类推。那么bin1的索引0在x中出现了一次,bin2的索引1在x中出现了一次…所以最后的out[]是[1,1,1,1,1]。或者不需要说的那么复杂,我的out就是想算出来,从0到max(x)的出现次数,对于第二个例子,0出现了一次,1出现了3次,2出现了一次,3出现了1,4 5 6均出现0次,7出现一次。所以,我的out就是[1, 3, 1, 1, 0, 0, 0, 1]。


np.astype(“int”)

:转换数组的数据类型为int类型。


np.shape

:返回np.array的维度大小。


np.reshape(-1, 1)

:将矩阵的列变为一列,行自动计算,这里的-1表示自适应。


np.argmin()

:返回沿轴的最小值的索引。


np中axis=0表示列,axis=1表示行。


np.argsort()

:返回能对数组进行排序的索引数组。


np.eye(n)

:生成大小为n的对角阵。


np.means()

:取均值。axis=0对列取均值,axis=1表示对行取均值。


np.unique(x)

:等于Python的sorted(set(x)),与Python不同的是 它改变了x的值。


np.ravel()

:返回一个连续的扁平数组。返回包含输入元素的一维数组。 只在需要时才制作源数组副本。


np.linspace()

:在指定的间隔内返回均匀间隔的数字。

>>> np.linspace(2.0, 3.0, num=5)
array([ 2.  ,  2.25,  2.5 ,  2.75,  3.  ])
>>> np.linspace(2.0, 3.0, num=5, endpoint=False)
array([ 2. ,  2.2,  2.4,  2.6,  2.8])


np.logspace()

:返回在对数刻度上均匀间隔的数字。

>>> np.logspace(2.0, 3.0, num=4)
array([  100.        ,   215.443469  ,   464.15888336,  1000.        ])
>>> np.logspace(2.0, 3.0, num=4, endpoint=False)
array([ 100.        ,  177.827941  ,  316.22776602,  562.34132519])


np.random.RandomState(0)

:生成伪随机数,随机种子为0。


np.random.RandomState.normal()

:从正态分布中随机抽取样本。


np.random.RandomState.poisson()

:从泊松分布中随机抽取样本。


np.hstack()

:按顺序堆叠数组(列式)。可以这么理解,这里的hstack是horizontally stack的缩写,语义上就是水平堆叠,也就是水平扩展数组,想要水平扩展,当然是按列增加。反之,vstack,vertical stack,垂直堆叠,即是增加行数。

>>> a = np.array((1,2,3))
>>> b = np.array((2,3,4))
>>> np.hstack((a,b))
array([1, 2, 3, 2, 3, 4])
>>> a = np.array([[1],[2],[3]])
>>> b = np.array([[2],[3],[4]])
>>> np.hstack((a,b))
array([[1, 2],
       [2, 3],
       [3, 4]])

Pandas API


pd.df.value_counts()

:词频统计


pd.df.to_csv()/read_csv()

:读写csv,


  • 是否保留列名

    header: Whether to write out the column names (default True)

  • 是否保留行索引

    index:  whether to write row (index) names (default True)



pandas.plotting.


scatter_matrix

(


frame

,

alpha=0.5

,

figsize=None

,

ax=None

,

grid=False

,

diagonal=’hist’

,

marker=’.’

,

density_kwds=None

,

hist_kwds=None

,

range_padding=0.05

,

**kwds


)

绘制散点图矩阵。

frame:DataFrame

alpha:float,可选应用的透明度

figsize 🙁 float,float),可选 以英寸为单位的元组(宽度,高度)

ax:Matplotlib轴对象,可选

grid:bool,可选,将此设置为True将显示网格

diagonal:{‘hist’,’kde’} 在’kde’和’hist’之间选择对角线中的核密度估计或直方图

marker:str,可选

Matplotlib标记类型,默认为’。’

hist_kwds:其他绘图关键字参数 要传递给hist函数

density_kwds:其他绘图关键字参数要传递给核密度估计图

range_padding:float,可选 x和y中轴范围相对于(x_max  –  x_min)或(y_max  –  y_min)的相对延伸,默认值为0.05

kwds:其他绘图关键字参数 要传递给scatter()函数

plt API


plt.hist(x, bins)

:计算并绘制x的直方图。对于bins,官方介绍如下:

可以很清楚的看到

bins is a sequence,gives bin edge

。bins给定了bin的边界,这里的bin就是直方图的一个个小的直条。n个直条会有n+1的边界,bins就是这n+1个数组成的序列。


plt.vlines(bins, -3, 3, linewidth=1, alpha=.2, c=’k’)

:绘制垂直线。绘制每个x处的从ymin到ymax的垂直线。这里的bins就是之前的组界,alpha为透明度。c代表颜色,k代表黑色。


plt.colorbar(x,ax=axes.tolist())

:绘制色彩条。提供ax这一参数较为重要,提供这一参数会调整原本的轴列表的大小,为色彩条提供对应的空间,显示图显得更加整齐美观。如下:

不提供ax参数:

提供ax参数的对比:


plt.legend()

:展示图例,这个只有一个loc参数需要注意一下:如果是数值表示,对应的含义列表如下。我一般会用loc=”best”。


plt.xticks()

:在x轴画刻度线,并给出注释,rotation表示旋转角度。


plt.hlines()

:画水平线。


plt.barh()

:画水平柱状图。



版权声明:本文为weixin_42348333原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。