白话机器学习的数学 python 代码
时间: 2023-11-12 07:03:08 浏览: 189
机器学习中最常用的数学工具是线性代数、微积分和概率论。下面是一些基本的数学概念和 Python 代码示例:
1. 向量和矩阵
向量是一列数字,矩阵是一个二维数组。在 Python 中,可以使用 NumPy 库来创建和操作向量和矩阵。
```python
import numpy as np
# 创建向量
v = np.array([1, 2, 3])
# 创建矩阵
m = np.array([[1, 2], [3, 4], [5, 6]])
# 矩阵乘法
result = np.dot(m, v)
print(result)
```
2. 梯度下降
梯度下降是一种优化算法,用于最小化损失函数。在 Python 中,可以使用 NumPy 和 SciPy 库来实现梯度下降算法。
```python
import numpy as np
from scipy.optimize import minimize
# 定义损失函数
def loss_function(w, X, y):
y_hat = np.dot(X, w)
return np.mean((y_hat - y) ** 2)
# 定义梯度函数
def gradient(w, X, y):
y_hat = np.dot(X, w)
return np.dot(X.T, y_hat - y) / len(y)
# 使用梯度下降算法求解
X = np.array([[1, 2], [3, 4], [5, 6]])
y = np.array([1, 2, 3])
w0 = np.zeros(X.shape[1])
res = minimize(loss_function, w0, args=(X, y), jac=gradient)
print(res.x)
```
3. 偏导数和梯度
偏导数是多元函数中某个变量的导数,梯度是多元函数的导数向量。在 Python 中,可以使用 SymPy 库来计算偏导数和梯度。
```python
from sympy import symbols, diff
# 定义符号变量和函数
x, y = symbols('x y')
f = x ** 2 + y ** 3
# 计算偏导数
df_dx = diff(f, x)
df_dy = diff(f, y)
print(df_dx, df_dy)
# 计算梯度
grad = [diff(f, var) for var in [x, y]]
print(grad)
```
4. 概率分布和随机变量
概率分布是随机变量可能取值的概率分布。在 Python 中,可以使用 SciPy 库来计算概率分布和随机变量。
```python
from scipy.stats import norm
# 定义正态分布
mu, sigma = 0, 1
dist = norm(mu, sigma)
# 计算概率密度函数和累积分布函数
x = np.linspace(-3, 3, 1000)
pdf = dist.pdf(x)
cdf = dist.cdf(x)
# 生成随机变量
samples = dist.rvs(1000)
```
以上是一些基本的数学概念和 Python 代码示例。在机器学习中,还会涉及到更高级的数学工具,如矩阵分解、优化理论、贝叶斯统计等。
阅读全文