邏輯回歸實際上是利用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...