Python&机器学习总结(一)

① numpy中np.c_和np.r_

np.r_是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等,类似于pandas中的concat()。

np.c_是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等,类似于pandas中的merge()。

下面看一个例子:

import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.c_[a,b]

print(np.r_[a,b])
print(c)
print(np.c_[c,a])

输出结果:

1 [1 2 3 4 5 6]
2 
3 [[1 4]
4  [2 5]
5  [3 6]]
6 
7 [[1 4 1]
8  [2 5 2]
9  [3 6 3]]

注意:在numpy中,一个列表虽然是横着表示的,但它是列向量。

 

②numpy.random.randn()  以及类似函数

numpy.random.rand(d0,d1,…,dn)——and函数根据给定维度生成[0,1)之间的数据,包含0,不包含1,例如:

 np.random.rand(4,2) 

输出:

 array([[ 0.02173903,  0.44376568],

   [ 0.25309942,  0.85259262],

   [ 0.56465709,  0.95135013],

   [ 0.14145746,  0.55389458]])

 np.random.rand(4,3,2) # shape: 4*3*2 

输出:

array([[[ 0.08256277,  0.11408276],
        [ 0.11182496,  0.51452019],
        [ 0.09731856,  0.18279204]],
 
       [[ 0.74637005,  0.76065562],
        [ 0.32060311,  0.69410458],
        [ 0.28890543,  0.68532579]],
 
       [[ 0.72110169,  0.52517524],
        [ 0.32876607,  0.66632414],
        [ 0.45762399,  0.49176764]],
 
       [[ 0.73886671,  0.81877121],
        [ 0.03984658,  0.99454548],
        [ 0.18205926,  0.99637823]]])

numpy.random.randn(d0,d1,…,dn)——randn函数返回一个或一组样本,具有标准正态分布。

 np.random.randn() # 当没有参数时,返回单个数据 

输出:

 -1.1241580894939212 

 

 np.random.randn(2,4) 

输出:

array([[ 0.27795239, -2.57882503,  0.3817649 ,  1.42367345],
       [-1.16724625, -0.22408299,  0.63006614, -0.41714538]])

注:标准正态分布又称为u分布,是以0为均值、以1为标准差的正态分布,记为N(0,1)

转载自:https://blog.csdn.net/u012149181/article/details/78913167

 

③numpy.linspace

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

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

返回num均匀分布的样本,在[start, stop]。

这个区间的端点可以任意的被排除在外。

参数解释:

start:序列起始点

stop:序列结束点(endpoint为真时包括stop,为假时不包括)

(以下是可选参数)

num:生成的样本数,默认50

endpoint:为真时包括stop,为假时不包括

restep:为真时输出带有步长,为假时输出只有一个ndarry

例如:

In [4]: np.linspace(1, 10, 10, endpoint = False, retstep= True)
Out[4]: (array([ 1. ,  1.9,  2.8,  3.7,  4.6,  5.5,  6.4,  7.3,  8.2,  9.1]), 0.9)

dtype:输出的数组的类型

 

④numpy.zeros

zeros(shape, dtype=float, order='C')

返回来一个给定形状和类型的用0填充的数组;

参数解释:

shape:形状

dtype:数据类型,可选参数,默认numpy.float64

order:可选参数,c代表与c语言类似,行优先;F代表列优先

例如:

np.zeros(5)
array([ 0.,  0.,  0.,  0.,  0.])

np.zeros((5,), dtype=np.int)
array([0, 0, 0, 0, 0])

 

⑥matplotlib.pyplot里contour与contourf

contour和contourf都是画三维等高线图的,不同点在于contourf会对等高线间的区域进行填充,例如:(左:contour;右:contourf)

Python&机器学习总结(一)_第1张图片Python&机器学习总结(一)_第2张图片

无论contour还是contourf,都是绘制三维图,其中前两个参数x和y为两个等长一维数组,第三个参数z为二维数组(表示平面点xi,yi映射的函数值)。
正是由于contourf可以填充等高线之间的空隙颜色,呈现出区域的分划状,所以很多分类机器学习模型的可视化常会借助其展现。
 
⑦plt.rcParams[]
pylot使用rc配置文件来自定义图形的各种默认属性,称之为rc配置或rc参数。通过rc参数可以修改默认的属性,包括窗体大小、每英寸的点数、线条宽度、颜色、样式、坐标轴、坐标和网络属性、文本、字体等。rc参数存储在字典变量中,通过字典的方式进行访问,例如:
plt.rcParams['savefig.dpi'] = 300 #图片像素
plt.rcParams['figure.dpi'] = 300 #分辨率
plt.rcParams['figure.figsize'] = (10, 10)        # 图像显示大小
plt.rcParams['image.interpolation'] = 'nearest'  # 最近邻差值: 像素为正方形
#Interpolation/resampling即插值,是一种图像处理方法,它可以为数码图像增加或减少象素的数目。
#某些数码相机运用插值的方法创造出象素比传感器实际能产生象素多的图像,或创造数码变焦产生的图像。实际上,几乎所有的图像处理软件支持一种或以上插值方法。图像放大后锯齿现象的强弱直接反映了图像处理器插值运算的成熟程度
plt.rcParams['image.cmap'] = 'gray'  # 使用灰度输出而不是彩色输出
plt.axis('off')    #打印图片的时候不显示坐标轴

 

⑧np.random.seed(0)

作用:使得随机数可预测

具体来讲:当我们设置相同的seed,每次生成的随机数相同。如果不设置seed,则每次会生成不同的随机数

例如:

 >>>> numpy.random.seed(0) ; numpy.random.rand(4)
array([ 0.55,  0.72,  0.6 ,  0.54])
>>> numpy.random.seed(0) ; numpy.random.rand(4)
array([ 0.55,  0.72,  0.6 ,  0.54])
 >>> numpy.random.rand(4)
array([ 0.42,  0.65,  0.44,  0.89])
>>> numpy.random.rand(4)
array([ 0.96,  0.38,  0.79,  0.53])

 

⑨plt.cm.Spectral

例如:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1) # 产生相同的随机数

X = np.random.randn(1, 10)
Y = np.random.randn(1, 10)
label = np.array([1,1,0,0,0,0,0,1,1,1])#####两种颜色

plt.scatter(X, Y, c = label, s = 180, cmap = plt.cm.Spectral);
这句代码plt.scatter(X, Y, c = label, s = 40, cmap = plt.cm.Spectral);中的cmap = plt.cm.Spectral是什么意思?
cmap = plt.cm.Spectral实现的功能是给label为1的点一种颜色,给label为0的点另一种颜色。
这里贴一篇博客: https://blog.csdn.net/robin_xu_shuai/article/details/79178857
 
⑩ pandas dataframe添加列:
df=pd.DataFrame(columns=['A','B'],data=[[1,2],[3,4]])

#df
#  A B
#0 1 2
#1 3 4

df['C']=None

#df
#  A B  C
#0 1 2 None 
#1 3 4 None

 

你可能感兴趣的:(Python&机器学习总结(一))