机器学习数学基础
矩阵
同型矩阵
行数、列数分别相同的矩阵
负矩阵
矩阵元素互为相反数关系的矩阵
矩阵的加法
矩阵元素分别相加(互为同型矩阵才能相加)
矩阵的加法满足分配律、结合律
矩阵的减法=加负矩阵
数乘
数与矩阵元素分别相乘
满足交换律、结合律、分配律
矩阵的乘法
行列元素依次相乘并求和(第一个矩阵的列数应与第二个矩阵的行数相等,所得结果行数为A的行数,列数为B的列数)
不满足交换律,满足结合律、分配律
向量(特殊矩阵)
行向量、列向量
只有一行的矩阵称作行向量,只有一列的矩阵称为列向量。
机器学习中的矩阵运算
Python实现矩阵运算
import numpy as np #导入numpy模块
A = np.array([[1,2,3],[4,5,6],[7,8,9]]) # 创建numpy数组
print(A.shape) #输出数组的行数、列数
B = A
C = A - B #矩阵减法
D = np.dot(A,B) #矩阵乘法
微积分
极限与导数
极限
导数
梯度下降法
积分
用python实现函数微分与积分
import sympy as sp #导入sympy模块
x = sp.Symbol('x') #定义变量x
y1 = 3*x
f1 = sp.diff(y1) #求导
F1 = sp.integrate(f1,x) #求积分,结果不带常数
L1 = sp.limit(y1,x,0)
L2 = sp.limit(y1,x,sp.oo) #求极限,sp.oo为无穷
概率分析
概率
条件概率与全概率
条件概率
全概率
贝叶斯公式
朴素贝叶斯
使用朴素贝叶斯判断客户消费意愿
1.读入数据
import pandas as pd
import numpy as np
#pandas包用于读入数据,numpy包用于处理数组
data = pd.read_csv(r'C:\Users\asus\Desktop\train.csv')
data.head() #读入数据并显示
输出:
2.划分输入、输出集
X = data.drop(['y'],axis=1)
print(X) #获取输入集并显示,axis = 0时代表行,axis = 1时代表列
输出:
y = data.loc[:,'y']
print(y) #获取输出集并显示
输出:
3.训练模型
from sklearn.naive_bayes import CategoricalNB #导入相应模块
model = CategoricalNB() #建立模型
model.fit(X,y) #训练模型
4.预测结果
y_predict_prob = model.predict_proba(X)
print(y_predict_prob) #预测y为0、1的概率
y_predict = model.predict(X)
print(y_predict) #预测y的结果
输出:
5.判断精确度
from sklearn.metrics import accuracy_score #导入相关模块
accuracy = accuracy_score(y,y_predict)
print(accuracy) #计算准确度并输出
输出:0.7272727272727273
6.测试新的数据集
X_test = np.array([[0,0,0,1,1,0]])
y_test_proba = model.predict_proba(X_test)
print(y_test_proba)
y_test = model.predict(X_test)
print(y_test)
输出:
[[0.48480565 0.51519435]]
[1]
结论:预测新用户可能进行消费,但消费欲望不强烈。
结论
数学基础包括矩阵运算(线性代数)、微积分和概率分析。
·矩阵运算主要能够在获取数据后,帮助我们快速建立样本数据输入与输出之间的关系,应用python的numpy模块
·微积分主要在通过输入输出关系反推模型参数时,应用梯度下降法求出损失函数的最小值,从而确定相应参数,应用python的sympy模块
·概率分析主要用来判断y的取值概率,从而判断y的取值,例子是朴素贝叶斯模型,调用python的sklearn朴素贝叶斯模块