Python3入門機器學習 模型泛化

2021-08-26 09:36:43 字數 1675 閱讀 5786

模型正則化

在多項式回歸中如果degree過大,會造成過擬合的情況,導致模型**方差極大,因此,我們可以使用模型正則化的方式來減小過擬合導致的**方差極大的問題

即在我們訓練模型時,不僅僅需要將**的y和訓練集的y的均方誤差達到最小,還要使引數向量最小。(即上圖公式。)

使用嶺回歸達到最小方差

from sklearn.linear_model import ridge

def ridgeregression(degree,alpha):

return pipeline([

("poly",polynomialfeatures(degree=degree)),

("scaler",standardscaler()),

("ridge",ridge(alpha=alpha))

])ridge_reg = ridgeregression(20,0.01)

ridge_reg.fit(x_train,y_train)

mean_squared_error(ridge_reg.predict(x_test),y_test) #在degree=20的過擬合情況下,本來達到170的方差在模型正則化之後僅有一點幾。

模型正則化的引數alpha即為公式中的α,即α越大,就代表訓練過程中模型係數影響程度越大使用lasso回歸達到最小方差

如上圖可見,ridge在a很大時,所得**曲線依然是曲線,但lasso在a較大時,更傾向於變為一條直線,如果用梯度下降法的思想來考慮,這是因為在計算更優解時,ridge的theta的斜率向量會讓theta一直以乙個比較平緩的梯度下降,然而lasso的斜率向量則不然。而lasso的這種特性會讓更多的特徵值的係數theta變為0,因此我們可以使用lasso來進行特徵值的過濾,即變為0的特徵值是對模型影響較小的特徵值。

Python3入門機器學習 整合學習

整合學習是使用一系列學習器進行學習,並使用某種規則把各個學習結果進行整合從而獲得比單個學習器更好的學習效果的一種機器學習方法。準備資料 x,y datasets.make moons noise 0.3,n samples 500,random state 42 from sklearn.model...

Python3入門機器學習 numpy篇

numpy是python的乙個支援矩陣 向量運算的庫,由於python自帶的list不僅效率低,也不會將陣列看作矩陣或者向量,因此在機器學習中,使用numpy來作為運算元組及矩陣的工具 x numpy.arange 10,3,5 x.ndim x的維度 x.shape x的各維度長度 x.size ...

Python3 入門學習

最近專案中使用到了 演算法,為了找到合適的引數,以及清楚地了解 d的運 況.因此想要將pid的資料 用上位機畫出來 以前都是使用串列埠來做的,但是現在的專案中,只有使用網口比較方便,這樣合適的上位機就 只好由自己來寫了 需求比較簡單只要將下位機傳送上來的特定資料,實時在電腦上繪製成曲線就可以了,不同...