1.邏輯回歸是怎麼防止過擬合的?為什麼正則化可以防止過擬合?(大家用自己的話介紹下)
(1)通過正則化來防止過擬合(2)如圖,過擬合後,得到的方程很擬合訓練的資料,但是用測試集去測試時,則可能認為其不是那一類的,以至於無法**新樣本的標籤。
保留所有的特徵變數,但是減少特徵變數的數量級。正則化是控制模型空間的一種辦法,通過收縮,限制模型變得越來越大,犧牲樣本內誤差,降低模型的誤差。假設我們使θ6,θ7.......,θn
很小,那麼引數x的影響就會很小,這時過擬合的公式結果就很接近好的情況。
2.用logistic回歸來進行實踐操作,資料不限。從阿里雲-天池-資料集裡面拿到的信用卡評估資料(需要匯入以下庫:
from sklearn.linear_model import logisticregression #然後讀取資料並且進行清洗:從機器學習中匯入邏輯回歸
from sklearn.model_selection import train_test_split #
拆分為訓練集合測試集
from sklearn.preprocessing import standardscaler #
標準化from sklearn.metrics import classification_report #
可以得到召回率
import matplotlib.pyplot as plt #
畫圖import
pandas as pd
import numpy as np
data = pd.read_csv("view code./機器學習/credit.csv
", engine="
python
")#讀取資料
data = data.iloc[:, 1:] #
刪去第一列
data.describe().t #
統計學描述
#從統計性描述可以看到,資料中有空值,好壞使用者即使用者的信用好壞,平均值為0.06,所以為0時,使用者信用好,為1是使用者信用不好
data.isnull().sum() #
檢視每列的空值數
#資料清洗ing
#滿了18歲才可以貸款,所以檢視是否有18歲以下的貸款使用者,若有則刪除
data[data['
貸款時年齡
'] < 18]
data = data[data['
貸款時年齡
'] > 18]
data[
'月收入
'] = data['
月收入'].fillna(data['
月收入'
].mean())
data[
'受撫養人數
'] = data['
受撫養人數
'].fillna(0)
data.describe().t
data = data.drop_duplicates() #
刪除重複項
#利用點圖可以檢視每個資料有無異常資料,然後進行清洗
#plt.scatter(data['60-89天逾期次數'],data['60-89天逾期次數'])
data = data[data['
30-59天逾期次數
'] < 6]
data = data[data['
負債率'] < 1]
data = data[data['
月收入'] < 500000]
data = data[data['
抵押貸款和不動產貸款數量
'] < 20]
data = data[data['
60-89天逾期次數
'] < 8]
data = data[data['
受撫養人數
'] < 8]
plt.bar([1, 0], [sum(data['
好壞使用者
'] == 1), sum(data['
好壞使用者
'] == 0)])
接下來進行資料集的拆分:#資料集準備好了以後,進行模型的建立、訓練、**:拆分資料集
x = data.iloc[:, 0:10]
y = data.iloc[:, -1]
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2) #
拆分資料集
#標準化處理
std =standardscaler()
x_train =std.fit_transform(x_train)
x_test = std.transform(x_test)
#最後進行模型的評估:邏輯回歸模型的建立、訓練、**
lg_model =logisticregression()
lg_model.fit(x_train, y_train)
y_pre = lg_model.predict(x_test)
train_score =lg_model.score(x_train, y_train)test_score =lg_model.score(x_test, y_test)
print("
訓練資料集的準確率:
", train_score, "
測試資料集的準確率:
", test_score)
print("
召回率:
", classification_report(y_test, y_pre))
print("
測試樣本中**正確的個數: /
7 邏輯回歸實踐
1.邏輯回歸是怎麼防止過擬合的?為什麼正則化可以防止過擬合?1 首先什麼是過擬合?過擬合是指訓練模型時過於嚴格,學習能力太強,導致訓練出的模型過於複雜,學習到了很多無關緊要的特徵,過度擬合的問題通常發生在變數 特徵 過多的時候。這種情況下訓練出的方程總是能很好的擬合訓練資料,此時的代價函式可能非常接...
7 邏輯回歸實踐
1.邏輯回歸是怎麼防止過擬合的?為什麼正則化可以防止過擬合?大家用自己的話介紹下 是通過正則化來防止的。過擬合的時候,擬合函式的係數往往非常大,而正則化是通過約束引數的範數使其不要太大,所以可以在一定程度上減少過擬合情況。如下圖所示,過擬合,就是擬合函式需要顧忌每乙個點,最終形成的擬合函式波動很大。...
7 邏輯回歸實踐
1.邏輯回歸是怎麼防止過擬合的?為什麼正則化可以防止過擬合?大家用自己的話介紹下 邏輯回歸通過正則化來防止過擬合 正則化可以防止過擬合是因為過擬合的時候,擬合函式的係數往往非常大,而正則化是 通過約束引數的範數使其不要太大,所以可以在一定程度上減少過擬合情況,以l2正則化為例,正則項會使權重趨於0,...