目录

前置条件

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(framealpha=0.5figsize=Noneax=Nonegrid=Falsediagonal='hist'marker='.'density_kwds=Nonehist_kwds=Nonerange_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():画水平柱状图。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐