7 邏輯回歸實踐

2022-07-09 19:00:16 字數 3245 閱讀 3156

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("

./機器學習/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)])

view code

接下來進行資料集的拆分:
#

拆分資料集

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,...