版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://mp.csdn.net/mdeditor/100577083
目录
绪言
我最近开始入门机器学习,使用的书是《机器学习实战》(Peter Harrington 著),为了巩固学习成果,决定写一系列日志,内容是总结性的,会做一些思维导图,写一些我学习时不懂的模块,函数语法等,但不涉及具体算法的实现(不具备教程性质)。
本文是系列日志的第七篇 – LinearRegression。
Xmind
模块语法
NumPy
linalg.det()
linalg.det()的作用是矩阵求行列式。
举个栗子:
import numpy as np
mat1 = np.mat(np.array([[4, 2], [4, 9]]))
det1 = np.linalg.det(mat1)
print(det1)
结果:
27.999999999999996
linalg.inv()
linalg.inv()的作用是矩阵求逆。
举个栗子:
import numpy as np
mat1 = np.mat(np.array([[4, 2], [4, 9]]))
mat2 = np.linalg.inv(mat1)
print(mat2)
结果:
[[ 0.32142857 -0.07142857]
[-0.14285714 0.14285714]]
另外,也可以用.I来求逆,例如:
import numpy as np
mat1 = np.mat(np.array([[4, 2], [4, 9]]))
mat2 = mat1.I
print(mat2)
结果:
[[ 0.32142857 -0.07142857]
[-0.14285714 0.14285714]]
corrcoef()
ccorrcoef()用来计算相关系数,输出结果为一个矩阵,
r
e
s
u
l
t
s
[
i
]
[
j
]
results[i][j]
results[i][j]表示第i个变量与第j个变量的相关系数.
举个栗子:
import numpy as np
mat1 = np.mat(np.array([4, 2, 4, 9]))
mat2 = np.mat(np.array([3, 2, 4, 8]))
print(np.corrcoef(mat1, mat2))
结果:
[[1. 0.98685197]
[0.98685197 1. ]]
flatten()
flatten()将多维数组转换为一维数组的功能,返回源数据的副本。但是该函数只能适用于numpy对象,即array或者mat,普通的list列表是不行的。
举个栗子:
import numpy as np
mat1 = np.mat(np.array([[4, 2], [4, 9]]))
mat2 = mat1.flatten()
print(mat2)
结果:
[[4 2 4 9]]
eye()
eye()可以生成一个单位矩阵。
调用语法为:
numpy.eye(N,M=None,k=0,dtype=<class 'float'>,order='C)
N:int型,表示的是输出的行数
M:int型,可选项,输出的列数,如果没有就默认为N
k:int型,可选项,对角线的下标,默认为0表示的是主对角线,负数表示的是低对角,正数表示的是高对角。
dtype:数据的类型,可选项,返回的数据的数据类型
order:{‘C’,‘F’},可选项,也就是输出的数组的形式是按照C语言的行优先’C’,还是按照Fortran形式的列优先‘F’存储在内存中
举个栗子:
import numpy as np
mat1 = np.eye(4)
print(mat1)
结果:
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
mean()
mean()可以求出array或mat按轴向的均值。
调用方法为:
mean(data, axis=0)
其中:
data为需要求均值的数组;
axis表示轴向,不指定轴时将所有值求平均。
举个栗子:
import numpy as np
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array1 = np.mean(array, axis=0)
print(array1)
array2 = np.mean(array, axis=1)
print(array2)
array3 = np.mean(array)
print(array3)
结果:
[4. 5. 6.]
[2. 5. 8.]
5.0
var()
var()可以求一组数据的方差。
举个栗子:
import numpy as np
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array1 = np.var(array, axis=0)
print(array1)
array2 = np.var(array, axis=1)
print(array2)
array3 = np.var(array)
print(array3)
结果:
[6. 6. 6.]
[0.66666667 0.66666667 0.66666667]
6.666666666666667
random
shuffle
shuffle()将序列的所有元素随机排序。
举个栗子:
import random
list1 = list(range(10))
print('list1:', list1)
random.shuffle(list1)
print('list1:', list1)
结果:
list1: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list1: [7, 3, 4, 2, 5, 8, 6, 0, 9, 1]
sklearn
sklearn.linear_model可以直接用来训练线性回归。
一些函数
len()
利用open(filename).readline().split(’\t’)处理文件之后,再用len()函数求长度,求出来的值是数据的列数。
文章推荐
学习SVM的过程中,除了《机器学习实战》,原理部分主要看了下面几篇文章,写得都非常好。
Python3《机器学习实战》学习笔记(十一):线性回归基础篇之预测鲍鱼年龄
Python3《机器学习实战》学习笔记(十二):线性回归提高篇之乐高玩具套件二手价预测
PS: 如果觉得本篇本章对您有所帮助,欢迎关注、评论、赞!