逻辑回归实验
邏輯回歸實(shí)驗(yàn)
文章目錄
- 邏輯回歸實(shí)驗(yàn)
- 實(shí)驗(yàn)說(shuō)明
- 實(shí)驗(yàn)步驟
- 參數(shù)優(yōu)化
實(shí)驗(yàn)說(shuō)明
雖然模型名字叫做邏輯回歸,實(shí)際上我們經(jīng)常用它來(lái)做分類任務(wù)。這次的數(shù)據(jù)集我們使用的是 sklearn 包中自帶的紅酒數(shù)據(jù)集。
- 實(shí)驗(yàn)環(huán)境:Pycharm
- Python版本:3.6
- 需要的第三方庫(kù):sklearn
實(shí)驗(yàn)步驟
一個(gè)簡(jiǎn)單的機(jī)器學(xué)習(xí)實(shí)驗(yàn)基本就是那六個(gè)步驟,這里不再提及了。
關(guān)于訓(xùn)練集和測(cè)試集的劃分我們使用的是留出法,最后的結(jié)果我們使用準(zhǔn)確率來(lái)進(jìn)行評(píng)估。
代碼如下:
# 邏輯回歸,紅酒數(shù)據(jù)集from sklearn.datasets import load_wine from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score# 加載數(shù)據(jù)集 wind_data = load_wine() x = wind_data.data y = wind_data.target # 拆分?jǐn)?shù)據(jù)集 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=10)# 創(chuàng)建模型 lr = LogisticRegression(solver='saga',multi_class='ovr',penalty='l2',max_iter=10000,random_state=10 ) # 訓(xùn)練模型 lr.fit(x_train, y_train)# 模型預(yù)測(cè) lr_predict = lr.predict(x_test) # 模型評(píng)價(jià) a_score = accuracy_score(y_test, lr_predict) print("accuracy_score: ", a_score)此時(shí)的模型預(yù)測(cè)準(zhǔn)確率為0.89
參數(shù)優(yōu)化
雖然模型的準(zhǔn)確率已經(jīng)很不錯(cuò)了,但是我們?nèi)匀豢梢詫?duì)其進(jìn)行優(yōu)化。
正則化選擇參數(shù) penalty 我們考慮使用 L1 正則化,優(yōu)化算法選擇參數(shù) solver 使用 liblinear,分類方式選擇參數(shù) multi_class 使用 ovr,類型權(quán)重參數(shù) class_weight 使用 balanced,隨機(jī)種子為200。
如果想要知道具體怎么進(jìn)行優(yōu)化,可以參考這一篇博客 sklearn邏輯回歸(Logistic Regression,LR)類庫(kù)使用小結(jié)
# 邏輯回歸,紅酒數(shù)據(jù)集from sklearn.datasets import load_wine from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score# 加載數(shù)據(jù)集 wind_data = load_wine() x = wind_data.data y = wind_data.target # 拆分?jǐn)?shù)據(jù)集 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=200)# 創(chuàng)建模型 lr = LogisticRegression(solver='liblinear',multi_class='ovr',penalty='l1',max_iter=10000,class_weight='balanced',random_state=200 ) # 訓(xùn)練模型 lr.fit(x_train, y_train)# 模型預(yù)測(cè) lr_predict = lr.predict(x_test) # 模型評(píng)價(jià) a_score = accuracy_score(y_test, lr_predict) print("accuracy_score: ", a_score)可以看到,模型預(yù)測(cè)的準(zhǔn)確率達(dá)到了 0.97,非常棒了。
總結(jié)
- 上一篇: Lasso回归实验
- 下一篇: 用SVR模型完成对Boston房价的回归