資料預處理方法:
均值移除
範圍縮放
二值化歸一化
獨熱編碼
標籤編碼
直接呼叫api介面進行處理
輸入 輸出
0.5 5.0
0.6 5.5
0.8 6.0
1.1 6.8
1.4 7.0
...y = f(x)
**函式:y = w0+w1x
x: 輸入
y: 輸出
w0和w1: 模型引數
所謂模型訓練,就是根據已知的x和y,找到最佳的模型引數w0 和 w1,盡可能精確地描述出輸入和輸出的關係。
5.0 = w0 + w1 × 0.5
5.5 = w0 + w1 × 0.6
單樣本誤差:
根據**函式求出輸入為x時的**值:y』 = w0 + w1x,單樣本誤差為1/2(y』 - y)2。
總樣本誤差:
把所有單樣本誤差相加即是總樣本誤差:1/2 σ(y』 - y)2
損失函式:
loss = 1/2 σ(w0 + w1x - y)2
所以損失函式就是總樣本誤差關於模型引數的函式,該函式屬於三維數學模型,即需要找到一組w0 w1使得loss取極小值。
案例:畫圖模擬梯度下降的過程
整理訓練集資料,自定義梯度下降演算法規則,求出w0 , w1 ,繪製回歸線。
import numpy as np
import matplotlib.pyplot as mp
train_x = np.array(
[0.5
,0.6
,0.8
,1.1
,1.4])
train_y = np.array(
[5.0
,5.5
,6.0
,6.8
,7.0])
times =
1000
# 定義梯度下降次數
lrate =
0.01
# 記錄每次梯度下降引數變化率
w0, w1 =[1
],[1
]for i in
range(1
, times +1)
:# d0是損失函式在w0方向上的偏導數
d0 =
(w0[-1
]+ w1[-1
]* train_x - train_y)
.sum()
# d1是損失函式在w1方向上的偏導數
d1 =((
(w0[-1
]+ w1[-1
]* train_x)
- train_y)
* train_x)
.sum()
# 讓w0 w1不斷更新 -1
]- lrate * d0)-1
]- lrate * d1)
pred_train_y = w0[-1
]+ w1[-1
]* train_x
mp.figure(
'linear regression'
, facecolor=
'lightgray'
)mp.title(
'linear regression'
, fontsize=20)
mp.xlabel(
'x', fontsize=14)
mp.ylabel(
'y', fontsize=14)
mp.tick_params(labelsize=10)
mp.grid(linestyle=
':')
mp.scatter(train_x, train_y, marker=
's', c=
'dodgerblue'
, alpha=
0.5, s=
80, label=
'training'
)mp.plot(train_x, pred_train_y,
'--'
, c=
'limegreen'
, label=
'regression'
, linewidth=1)
mp.legend(
)mp.show(
)
機器學習之資料預處理
1.為什麼需要資料預處理?原始資料來自於現實場景,常常有以下幾個特徵 髒 亂 差 缺。髒體現在原始資料裡混雜許多雜訊資料,亂體現在原始資料各維度量綱不同一。差體現在資料錯誤 出現不尋常不一致,這和髒相似。缺體現在原始資料的某些資料段值的缺失。2.資料預處理的方法。歸一化 標準化和中心化是資料預處理中...
機器學習之資料預處理
from sklearn.preprocessing import standardscaler x scaler standardscaler y scaler standardscaler x train x scaler.fit transform x train y train y scal...
Python機器學習之資料預處理
coding utf 8 created on sat sep 29 22 39 26 2018 author lxiao217 email lxiao217 163.com 資料預處理 csv comma srpared values,以逗號為分隔符的數值 如果資料以csv檔案的形式儲存在硬碟上,...