機器學習sklearn實戰 (二)邏輯回歸器

2021-10-01 09:24:42 字數 4323 閱讀 1843

邏輯回歸實際上是利用sigmoid函式線性回歸進行了歸一化,把輸出值壓縮到了 0-1之間,這個值代表的是事件發生的概率。

邏輯回歸其實通常是用來做分類器的,基礎概念可以參考:

線性回歸 邏輯回歸(logistic)

使用sklearn中的庫,一般使用邏輯回歸器,但是這畢竟是乙個起源於線性回歸器,所以導包的時候還是線性模型中的乙個模型。

參考部落格

自己完整的**以及解析:

import pandas as pd

import numpy as np

'''邏輯回歸是分類模型

邏輯回歸實際上是利用sigmoid函式將線性回歸進行了歸一化,把輸出值壓縮到了0-1之間,這個值代表的是事件發生的概率

邏輯回歸:有引數介紹很詳細,有具體的例子。

'''column_names =

['sample code number'

,'clump thickness'

,'uniformity of cell size'

,'uniformity of cell shape'

,'marginal adhesion'

,'single epithelial cell size'

,'bare nuclei'

,'bland chromatin'

,'normal nucleoli'

,'mitoses'

,'class'

]# 一共11列

data=pd.read_csv(

'', names=column_names)

# 讀取資料 shape是(699, 11)

# print(data.shape) # (699, 11)

# print(data.head())

data = data.replace(to_replace=

"?",value=np.nan)

# 把字串中的 old(舊字串) 替換成 new(新字串)

# 非法字元的替代

data=data.dropna(how=

'any'

)# 去掉空值,any:出現空值行則刪除

# print(data.head())

# 劃分資料

from sklearn.model_selection import train_test_split

x_train,x_test,y_train,y_test = train_test_split(data[column_names[1:

10]],data[column_names[10]

],test_size=

0.25

,random_state=5)

# 前10列為特徵,按照隨機種子5以及比例0.25切分為x_train,x_test

# 最後的一列為分類結果,按照隨機種子5以及比例0.25切分為y_train,y_test

# 隨機種子表示切分結果每次一樣

# 使用邏輯回歸**

from sklearn.preprocessing import standardscaler

from sklearn.linear_model import logisticregression

# 特徵縮放:

# 特徵縮放兩種方式:調節比例以及標準化。邏輯回歸以及svm中常用標準化的方式。減去均值,除以方差

ss = standardscaler(

)# 標準化資料,保證每個維度的特徵方差為1,均值為0 ,

# 使得**結果不會被某些維度過大的特徵主導

# 作用:去均值和方差歸一化 ,standardscaler對每列分別標準化

x_train = ss.fit_transform(x_train)

x_test = ss.fit_transform(x_test)

lr = logisticregression(c=

1.0, penalty=

'l2'

, tol=

0.1)

lr.fit(x_train, y_train)

# 使用標準化之後的資料來訓練 讓回歸器去擬合資料

lr_predict = lr.predict(x_test)

# **結果

# 結果分析

from sklearn.metrics import accuracy_score

print

("**結果為:{}"

.format

(lr.score(x_test, y_test)))

# 可以使用自帶的score計算分數

# lr.score(x_test,y_test)為啥裡面是測試資料,而不是**資料???lr是已經建立的模型,我們需要用測試資料檢驗這個模型好不好。

print

("**結果為:{}"

.format

(accuracy_score(y_test, lr_predict)))

# 也可以使用accuary_score來計算準確度

'''結果:

使用l1正則化:

**結果為:0.9766081871345029

**結果為:0.9766081871345029

使用l2正則化:

**結果為:0.9883040935672515

**結果為:0.9883040935672515

'''

邏輯回歸往往需要先對特徵進行縮放,防止你的某個特徵的值過大,影響最終的結果。特徵縮放往往有兩終方式:調節比例和標準化,這裡標準化直接呼叫函式就可以了:

導包:from sklearn.preprocessing import standardscaler

呼叫函式:ss = standardscaler()

x_train = ss.fit_transform(x_train)

另外介紹了兩種,計算準確率的方法。具體看**,以及**後面的備註。

參考部落格

直接看**吧…和上乙個例子很像。

import numpy as np

from sklearn.model_selection import train_test_split

from sklearn import linear_model, datasets

# 載入資料

iris = datasets.load_iris(

)# print(iris.shape) # 報錯,因為這只是載入資料,不僅載入資料還載入了特徵名字等等,所以沒有shape

# print(iris.descr) # describe描述資料,資料一共150個,每個類別50個,一共3個類別,特徵有4個,最後一列是分類

# 無論任何資料總是有兩部分,特徵部分data,以及目標結果部分target

x = iris.data[:,

:2]# 使用前兩個特徵 shape(150, 2)

y = iris.target # (150,)

# print(x.shape) # 取走資料以後,才會有shape

# print(y.shape)

# 切分資料

x_train ,x_test, y_train, y_test = train_test_split(x, y, test_size=

0.3, random_state=0)

# 標準化

from sklearn.preprocessing import standardscaler

ss = standardscaler(

)x_train = ss.fit_transform(x_train)

x_test = ss.fit_transform(x_test)

# 訓練邏輯回歸

lr = linear_model.logisticregression(c=

1e4)

lr.fit(x_train,y_train)

# **

lr_pred = lr.predict(x_test)

# 計算損失

acc = lr.score(x_test,y_test)

print

(acc)

'''結果:

0.7111111111111111

'''

機器學習sklearn實戰筆記 一

寫在開始的話 什麼是sklearn?tensorflow又是什麼?sklearn是python的乙個非常流行的機器學習庫.tensorflow是google研發的非常流行的深度學習庫.簡單講,深度學習是機器學習的乙個分類,這裡不再贅述.通過本系列文章你將懂得 了解監督學習,非監督學習,資料處理等在s...

sklearn機器學習 PCA

pca使用的資訊量衡量指標,就是樣本方差,又稱可解釋性方差,方差越大,特徵所帶的資訊量越多 原理推導 class sklearn decomposition.pca n components none,copy true whiten false svd solver auto tol 0.0,it...

sklearn 機器學習庫

pipeline parameters steps 步驟 列表 list 被連線的 名稱,變換 元組 實現擬合 變換 的列表,按照它們被連線的順序,最後乙個物件是估計器 estimator memory 記憶體引數,instance of sklearn.external.joblib.memory...