python机器学习常用库及相关函数

numpy库

求和相关

使用求和函数sum([axis=0|1]),根据参数不同可实现不同求和方式。

矩阵整体数据的求和运算

使用无参求和函数,可实现对矩阵整体数据的求和运算。

from numpy import mat
sample = mat([[1, 2], [3, 4]]
sample.sum()

执行结果: 10 10 10

矩阵按列求和运算

求和函数参数axis=0时,可实现矩阵按列求和运算。

from numpy import mat
sample = mat([[1, 2], [3, 4]]
sample.sum(axis=0)

执行结果,返回求和结果的行向量 [ 4 , 6 ] \begin{bmatrix}4, 6\end{bmatrix} [4,6]

矩阵按行求和运算

求和函数参数为axis=1时,可实现矩阵按行求和运算。

from numpy import mat
sample = mat[[1, 2], [3, 4]]
sample.sum(axis=1)

执行结果,返回求和结果的列向量 [ 3 7 ] \begin{bmatrix} 3\\ 7\end{bmatrix} [37]

求取最大/最小值

使用求取值最大函数max([axis=0|1])/最小值函数min([axis=0|1]),可求取矩阵中/行中/列中最大元素,参数意义参照求和函数,不再赘述。

求取矩阵特征值、特征向量

from numpy import mat, linalg
a = mat([[2, 3], [2, 1]])
c, d = linalg.eig(a)
print('特征值:' + c)
print('特征向量:' + d)

执行结果: 特 征 值 : [ 4 − 1 ] 特征值:\begin{bmatrix}4&-1\end{bmatrix} [41]
特 征 向 量 : [ [ 0.83205029 , − 0.70710678 ] , [ 0.5547002 , 0.70710678 ] ] , 即 : [ 0.83205029 − 0.70710678 0.5547002 0.70710678 ] 特征向量:[[0.83205029,-0.70710678],[0.5547002,0.70710678]],即: \begin{bmatrix}0.83205029&-0.70710678 \\ 0.5547002&0.70710678\end{bmatrix} [[0.83205029,0.70710678],[0.5547002,0.70710678]][0.832050290.55470020.707106780.70710678]
特征值 4 4 4的特征向量为 [ 0.83205029 0.5547002 ] \begin{bmatrix}0.83205029 \\ 0.5547002\end{bmatrix} [0.832050290.5547002]

元素复制

tile函数可以将原数据向不同维度方向复制。

import numpy as np
a = np.mat([1, 2], [3, 4])
b = np.tile(a, (3, 2))
print(b)

执行结果: [ 1 2 1 2 3 4 3 4 1 2 1 2 3 4 3 4 1 2 1 2 3 4 3 4 ] \begin{bmatrix} 1&2&1&2 \\ 3&4&3&4 \\ 1&2&1&2 \\ 3&4&3&4 \\1&2&1&2 \\ 3&4&3&4 \end{bmatrix} 131313242424131313242424
将原始数据 [ 1 2 3 4 ] \begin{bmatrix} 1&2 \\ 3&4 \end{bmatrix} [1324]的第一维度数据复制3次,将第二维度数据复制2次得到。

统计矩阵中某元素出现次数

通过numpy.sum()函数添加相关判断条件可实现。

import numpy as np
a = np.ones((4, 4))
a[1: 3, 1: 3] = 0
print(np.sum(a == 0))

上述所构造矩阵为 [ 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 ] \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & 0 & 0 & 1 \\ 1 & 0 & 0 & 1 \\ 1 & 1 & 1 & 1 \end{bmatrix} 1111100110011111,执行结果为: 4 4 4

检索矩阵中某元素及其索引

import numpy as np
a = np.ones((4, 4))
a[1: 3, 1: 3] = 0

上述所构造矩阵为 [ 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 ] \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & 0 & 0 & 1 \\ 1 & 0 & 0 & 1 \\ 1 & 1 & 1 & 1 \end{bmatrix} 1111100110011111,下面使用不同的方法检索该矩阵中的元素。

1.numpy.where()

numpy.where()函数可分别获取在各个维度上,符合标准的相关元素的索引。该函数的返回结果出发点为数据的维度。
该函数返回结果为 n n n个一维行向量, n n n为查询矩阵的维度,每个向量中的值代表在该维度下的索引。比如在第一维度下有向量 [ 2 3 5 7 ] \begin{bmatrix} 2 & 3 & 5 & 7 \end{bmatrix} [2357],则代表查询到4个符合条件的值,这4个元素在第一维度下的索引分别为 2 , 3 , 5 , 7 2,3,5,7 2357

np.where(a == 0)

在本例中构造了一个二维矩阵,因此运行结果返回 2 2 2个一维向量,运行结果: [ 1 1 2 2 ] [ 1 2 1 2 ] \begin{matrix} \begin{bmatrix} 1 & 1 & 2 & 2 \end{bmatrix} \\ \begin{bmatrix} 1 & 2 & 1 & 2 \end{bmatrix} \end{matrix} [1122][1212],分别提取数据在各个维度的索引,即可定位数据的索引。由此可知公有 4 4 4个符合条件的数据,其索引(坐标)分别为 [ 1 1 ] \begin{bmatrix}1 \\ 1\end{bmatrix} [11] [ 1 2 ] [ 2 1 ] \begin{bmatrix}1 \\ 2\end{bmatrix} \begin{bmatrix}2 \\ 1\end{bmatrix} [12][21] [ 2 2 ] \begin{bmatrix}2 \\ 2\end{bmatrix} [22]

2.numpy.argwhere()

与上述方法不同的是,numpy.argwhere()函数返回为符合条件的元素在各个维度上的索引。该函数的返回结果出发点为元素。
该函数返回结果为 m m m n n n维行向量, m m m为符号条件的元素个数, n n n为查询矩阵的维度。比如当前返回结果为 [ 1 2 3 ] [ 4 5 6 ] \begin{bmatrix}1 & 2 & 3\end{bmatrix} \begin{bmatrix} 4 & 5 & 6 \end{bmatrix} [123][456],返回两个3维行向量,则表示符合标准的有2个元素,其中第一个元素在各个维度的索引(即坐标)为 ( 1 , 2 , 3 ) (1,2,3) (1,2,3),第二个元素在各个维度上的索引为 ( 4 , 5 , 6 ) (4,5,6) (4,5,6)

np.argwhere(a == 0)

本例中构造了一个二维矩阵,符合条件的有 4 4 4个元素,因此运行结果返回 4 4 4个二维行向量,运行结果: [ 1 1 ] [ 1 2 ] [ 2 1 ] [ 2 2 ] \begin{matrix} \begin{bmatrix} 1 & 1 \end{bmatrix} \\ \begin{bmatrix} 1 & 2 \end{bmatrix} \\ \begin{bmatrix} 2 & 1 \end{bmatrix} \\ \begin{bmatrix} 2 & 2 \end{bmatrix} \end{matrix} [11][12][21][22],每一个行向量都是一个符合要求的元素在各个维度上的索引(坐标)。

获取矩阵非零元素索引

numpy.nonzero(x)返回非零元素在各个维度上的索引,等价于numpy.where(x == 0)

import numpy as np
a = np.mat([[1, 2], [0, 4]])
indices_nonzero = np.nonzero(a)
print(indices_nonzero)

所构造矩阵为 [ 1 2 0 4 ] \begin{bmatrix} 1 & 2 \\ 0 & 4 \end{bmatrix} [1024]
执行结果: [ 0 0 1 ] [ 0 1 1 ] \begin{matrix}\begin{bmatrix}0 & 0 & 1\end{bmatrix}\\ \begin{bmatrix}0 & 1 & 1\end{bmatrix}\end{matrix} [001][011],则可知有在矩阵 a a a中有3个非零元素,其坐标索引分别为 [ 0 0 ] [ 0 1 ] [ 1 1 ] \begin{matrix} \begin{bmatrix} 0 \\ 0\end{bmatrix} \begin{bmatrix} 0 \\ 1 \end{bmatrix} \begin{bmatrix} 1 \\ 1 \end{bmatrix} \end{matrix} [00][01][11]

sklearn库

官方API文档:https://scikit-learn.org/stable/modules/classes.html

数据预处理

sklearn.preprocessing包含数据缩放、归一化、二值化等方法。

归一化

MinMaxScaler([feature_range=(m, n), copy=true])
fearete_range描述转化数据的范围,默认值(0, 1)
copy是否复制原数据,默认值true

from numpy import mat
from sklearn.preprossing import MinMaxScaler
data = mat([[1, 2], [3, 4], [5, 6]])
scaler = MinMaxScaler(feature_range=(0, 1)).fit(data)
newData = scaler.transform(data)
print(newData)

执行结果,返回归一化后矩阵: [ 0 0 0.5 0.5 1 1 ] \begin{bmatrix}0&0\\0.5&0.5\\1&1\end{bmatrix} 00.5100.51

svm分类器

sklearn.svm模块包含支持向量机算法。

from sklearn.svm import SVC
svm = SVC(kernel='rbf', C=1.0, random_state=0, gamma='auto')
svm.fit(traingData, traingLabel)
svm.predict(testData)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值