天天看點

sklearn調包俠之邏輯回歸

本文來自雲栖社群官方釘群“ Python技術進階 ”,了解相關資訊可以關注“ ”。

本系列教程為《機器學習實戰》的讀書筆記。首先,講講寫本系列教程的原因:

第一,《機器學習實戰》的代碼由Python2編寫,有些代碼在Python3上運作已會報錯,本教程基于Python3進行代碼的修訂.

第二:之前看了一些機器學習的書籍,沒有進行記錄,很快就忘記掉了,通過編寫教程也是一種複習的過程.

第三,機器學習相對于爬蟲和資料分析而言,學習難度更大,希望通過本系列文字教程,讓讀者在學習機器學習的路上少走彎路。

算法原理

傳送門:機器學習實戰之Logistic回歸(

https://www.jianshu.com/p/96566542b07a

正則化

這裡補充下正則化的知識。當一個模型太複雜時,就容易過拟合,解決的辦法是減少輸入特征的個數,或者擷取更多的訓練樣本。正則化也是用來解決模型過拟合的一種方法。常用的有L1和L2範數做為正則化項。

L1範數 L1範數作為正則化項,會讓模型參數θ稀疏話,就是讓模型參數向量裡為0的元素盡量多。L1就是在成本函數後加入:

sklearn調包俠之邏輯回歸

L2範數 而L2範數作為正則化項,則是讓模型參數盡量小,但不會為0,即盡量讓每個特征對預測值都有一些小的貢獻。L2就是在成本函數後加入:

sklearn調包俠之邏輯回歸

實戰——乳腺癌檢測

資料導入

本次實戰依舊是使用sklearn中的資料集,如圖所示。

from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
print(cancer.DESCR)
           
sklearn調包俠之邏輯回歸

切分資料集

X = cancer.data
y = cancer.target

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state
           

模型訓練與評估

邏輯回歸算法使用sklearn.linear_model 子產品中的LogisticRegression方法。常用的參數如下:

penalty:設定正則化項,其取值為'l1'或'l2',預設為'l2'。

C:正則化強度,C越大,權重越小。

from sklearn.linear_model import LogisticRegression

model = LogisticRegression()
model.fit(X_train, y_train)
model.score(X_test, y_test)

# result
# 0.94736842105263153
           

我們換為L1範數:

model2 = LogisticRegression(penalty='l1')
   model2.fit(X_train, y_train)
   model2.score(X_test, y_test)

   # result
   # 0.95614035087719296
           

這裡檢視模型的參數,發現确實有很多特征的參數為0。

sklearn調包俠之邏輯回歸

原文釋出時間為:2018-07-04

本文作者:羅羅攀

Python技術進階交流群

sklearn調包俠之邏輯回歸