1 encoder = OneHotEncoder()
独热编码问题,例如一个长方体,具有三个属性,长宽高,长1宽2高3,如果编码为[1,2,3]及为标签编码,如果为[100][,010][001]及为独热编码,每一个单元中只能有一个1其余全是0.
2 Y = encoder.fit_transform(Y.reshape(Y.shape[0], 1))
fit(): Method calculates the parameters μ and σ and saves them as internal objects.
解释:简单来说,就是求得训练集X的均值,方差,最大值,最小值,这些训练集X固有的属性。
transform(): Method using these calculated parameters apply the transformation to a particular dataset.
解释:在fit的基础上,进行标准化,降维,归一化等操作(看具体用的是哪个工具,如PCA,StandardScaler等)。
fit_transform(): joins the fit() and transform() method for transformation of dataset.
解释:fit_transform是fit和transform的组合,既包括了训练又包含了转换。
transform()和fit_transform()二者的功能都是对数据进行某种统一处理(比如标准化~N(0,1),将数据缩放(映射)到某个固定区间,归一化,正则化等)
fit_transform(trainData)对部分数据先拟合fit,找到该part的整体指标,如均值、方差、最大值最小值等等(根据具体转换的目的),然后对该trainData进行转换transform,从而实现数据的标准化、归一化等等。
3 Y = encoder.fit_transform(Y.reshape(Y.shape[0], 1))
Y.shape(),结果为(参数,)形式
reshape()函数用于在不更改数据的情况下为数组赋予新形状。
形式:numpy.reshape(a, newshape, order=‘C’)
import numpy as np
import pandas as pd
c=np.array([[1,2,3],[4,5,6]])
c=c.reshape(2,-2)
pritn(c)
#结果:([1,2,3][4,5,6])
c=c.reshape(3,2)
pritn(c)
#结果:([1,2][3,4],[5,6])
如果其中一个是负数,会自动按照另一个参数进行匹配,比如c=c.reshape(2,-2),变成2行的数组,但是总共只有6个数据,自然只能形成2行3列的矩阵数据。
4 Y = Y.toarray().T
toarray()标志转换,将列表转换为数组
A.T:将矩阵A转置
5 Y = Y.astype('uint8')
astype实现变量类型转换.
Python中与数据类型相关函数及属性有如下三个:type/dtype/astype
type() 返回参数的数据类型
dtype 返回数组中元素的数据类型
astype() 对数据类型进行转换
你可以使用 .astype() 方法在不同的数值类型之间相互转换。a.astype(int).dtype # 将 a 的数值类型从 float64 转换为 int,
在 Python 内建对象中,数组有三种形式:
-
列表:[1, 2, 3]
-
元组:(1, 2, 3, 4, 5)
-
字典:{A:1, B:2}
uint8:表示8进制无符号数
int是带符号的,表示范围是:-2147483648到2147483648,即-2^31到2^31次方。
uint则是不带符号的,表示范围是:2^32即0到4294967295。
uint可以使用十进制,二进制,十六进制。
6 start_time = datetime.datetime.now()
utcnow():读取的时间一直都是系统的“世界标准时间”
now():读取的时间是系统的本地时间
7 z1 = np.dot(w1, X) + b1
dot函数是np中的矩阵乘法,假设 a,b为矩阵,a.dot(b) 等价于 np.dot(a,b) 。
8 Y = iris['species'].values
返回一个字典中所有的值
9 a1 = np.tanh(z1)
numpy.tanh(x [,out])= ufunc'tanh'):此数学函数可帮助用户计算所有x(作为数组元素)的双曲正切值。
就是使用双曲正切作为激活函数使用
常见的有:
1 sigmoid
2 tanh
3 Relu
4. Leaky Relu激活函数
5. P-Relu(Parametric ReLU)激活函数
6. Elu激活函数
7. Gelu激活函数
8. Swich激活函数
9. Selu激活函数
10 logprobs = np.multiply(np.log(a2), Y) + np.multiply((1 - Y), np.log(1 - a2))
由于multiply是ufunc函数,ufunc函数会对这两个数组的对应元素进行计算,因此它要求这两个数组有相同的大小(shape相同),相同则是计算内积。如果shape不同的话,会将小规格的矩阵延展成与另一矩阵一样大小,再求两者内积。(矩阵对应位置相乘,矩阵尺寸同的话,会把小的扩展成一样的尺寸)
np.log() 默认是以e为底的,
np.log10() 以10为底
11 代价函数(损失函数),交叉熵
交叉熵是对「出乎意料」(译者注:原文使用suprise)的度量。神经元的目标是去计算函数y, 且y=y(x)。但是我们让它取而代之计算函数a, 且a=a(x)。假设我们把a当作y等于1的概率,1−a是y等于0的概率。那么,交叉熵衡量的是我们在知道y的真实值时的平均「出乎意料」程度。当输出是我们期望的值,我们的「出乎意料」程度比较低;当输出不是我们期望的,我们的「出乎意料」程度就比较高。
12 output = output.flatten()
flatten()是对多维数据的降维函数。
flatten(),默认缺省参数为0,也就是说flatten()和flatte(0)效果一样。
矩阵
a=([1,2,3][4,5,6][7,8,9])
b=a.flatten()
b=(1,2,3,4,5,6,7,8,9)
b=a.flatten(1)
b=([1,2,3],[4,5,6,7,8,9])
b=a.flatten(2)
b=([1,2,3][4,5,6][7,8,9])
13 real = np.column_stack((x_test.T, y))
将2个矩阵按列合并
np.cow_stack(x1,x2)是按照行合并