视频地址:吴恩达机器学习

课件地址:本地自存

模型

线性回归

梯度下降法

repeat until convergence:  {  wj:=wjαJ(w,b)wj  for j = 0..n-1b  :=bαJ(w,b)b}\begin{align*} \text{repeat}&\text{ until convergence:} \; \lbrace \newline\; & w_j := w_j - \alpha \frac{\partial J(\mathbf{w},b)}{\partial w_j} \tag{1} \; & \text{for j = 0..n-1}\newline &b\ \ := b - \alpha \frac{\partial J(\mathbf{w},b)}{\partial b} \newline \rbrace \end{align*}

J(w,b)=12mi=0m1(fw,b(x(i))y(i))2(3)J(\mathbf{w},b) = \frac{1}{2m} \sum\limits_{i = 0}^{m-1} (f_{\mathbf{w},b}(\mathbf{x}^{(i)}) - y^{(i)})^2 \tag{3}

fw,b(x(i))=wx(i)+b(4)f_{\mathbf{w},b}(\mathbf{x}^{(i)}) = \mathbf{w} \cdot \mathbf{x}^{(i)} + b \tag{4}

J(w,b)wj=1mi=0m1(fw,b(x(i))y(i))xj(i)J(w,b)b=1mi=0m1(fw,b(x(i))y(i))\begin{align} \frac{\partial J(\mathbf{w},b)}{\partial w_j} &= \frac{1}{m} \sum\limits_{i = 0}^{m-1} (f_{\mathbf{w},b}(\mathbf{x}^{(i)}) - y^{(i)})x_{j}^{(i)} \tag{2} \\ \frac{\partial J(\mathbf{w},b)}{\partial b} &= \frac{1}{m} \sum\limits_{i = 0}^{m-1} (f_{\mathbf{w},b}(\mathbf{x}^{(i)}) - y^{(i)}) \tag{3} \end{align}

其中wj为自变量系数,b为常系数,α为学习率,J(w,b)为成本函数,fwb(x)为预测函数

逻辑(logistic)回归

numpy库

python的数据拓展库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import numpy as np  #通常缩写为np
np.set_printoptions(precision=2) #设置精确度为2

x = np.array([[2104, 5, 1, 45], [1416, 3, 2, 40], [852, 2, 1, 35]]) #生成一个3行4列的数组
print(x.shape)
#(3,4) 返回数组形状,为3行4列

x = np.array([[2104,1416,852]]) #生成一个1行3列的数组
print(x.shape)
#(1,3) 返回数组形状,为1行3列

x = np.array([2104,1416,852]) #生成一个3行0列的数组
print(x.shape)
#(3,) 返回数组形状,为3行0列,注意和上式的区别,少了一对中括号

x.reshape(a,b) #将x重新排位为a行b列,如果其中一个值为负数,则只看另一个值

matplotlib库

python的绘图库

Scikit-Learn库

python的一个机器学习库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from sklearn.linear_model import LinearRegression, SGDRegressor #线性回归
from sklearn.preprocessing import StandardScaler #标准化数据

#标准化自变量x
scaler = StandardScaler()
X_norm = scaler.fit_transform(X_train)

#SGDRegressor
sgdr = SGDRegressor(max_iter=1000)
sgdr.fit(X_norm, y_train) #拟合输入参数

#输出截断和系数
b_norm = sgdr.intercept_
w_norm = sgdr.coef_

#输出预测结果
y_pred_sgd = sgdr.predict(X_norm)