模型原型
class sklearn.linear_model.logisticregression(penalty=』l2』,dual=false,tol=0.0001,c=1.0,fit_intercept=true,intercept_scaling=1, class_weight=none,random_state=none,solver=』liblinear』,max_iter=100,multi_class=』ovr』,verbose=0,warm_start=false,n_jobs=1)
引數
l1:優化目標函式:12
||w→
||22
+cl(
w→),
c>0,
l(w)
為極大似
然函式 12|
|w→|
|22+
cl(w
→),c
>0,
l(w)
為極大似
然函
數l2:優化目標函式:||
w→||
1+cl
(w→)
,c>0,
l(w)
為極大似
然函式 ||w
→||1
+cl(
w→),
c>0,
l(w)
為極大似
然函
數tol
c:指定了罰項係數的倒數,值越小則正則化項越大
fit_intercept
intercept_scaling:降低人造特徵的影響(當solver=』liblinear』時才有意義)
class_weight:
random_state:
solver:小規模資料集使用』liblinear』;大規模資料集使用』sag』;』newton-cg』,』lbfgs』,』sag』只處理penalty=』l2』的情況
max_iter:
multi_class:指定處理多分類問題的策略
verbose:開啟/關閉迭代中間輸出日誌功能
warm_start
n_jobs
屬性
coef_f:權重向量
intercept_:b值
方法
fit(x,y[,sample_weight])
predict(x)
predict_log_proba(x):陣列的元素依次是x**為各個類別的概率的對數值
predict_proba(x):陣列的元素依次是x**為各個類別的概率值
score(x,y[,sample_weight])
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets,linear_model,discriminant_analysis,cross_validation
載入資料
def
load_data
(): iris=datasets.load_iris()
x_train=iris.data
y_train=iris.target
return cross_validation.train_test_split(x_train,y_train,test_size=0.25,random_state=0,stratify=y_train)
使用logisticregression
def
test_logisticregression
(*data):
x_train,x_test,y_train,y_test=data
regr=linear_model.logisticregression()
regr.fit(x_train,y_train)
print('coefficients:%s,\nintercept %s'%(regr.coef_,regr.intercept_))
print('score:%.2f'%regr.score(x_test,y_test))
x_train,x_test,y_train,y_test=load_data()
test_logisticregression(x_train,x_test,y_train,y_test)
multi_class引數的影響
def
test_logisticregression_multinomial
(*data):
x_train,x_test,y_train,y_test=data
regr=linear_model.logisticregression()
regr.fit(x_train,y_train)
print('cofficients:%s,\nintercept %s'%(regr.coef_,regr.intercept_))
print('score:%.2f'%regr.score(x_test,y_test))
x_train,x_test,y_train,y_test=load_data()
test_logisticregression_multinomial(x_train,x_test,y_train,y_test)
引數c(正則化項係數的倒數)的影響
def
test_logisticregression_c
(*data):
x_train,x_test,y_train,y_test=data
cs=np.logspace(-2,4,num=100)
scores=
for c in cs:
regr=linear_model.logisticregression(c=c)
regr.fit(x_train,y_train)
#繪圖fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.plot(cs,scores)
ax.set_xlabel(r"c")
ax.set_ylabel(r"score")
ax.set_xscale('log')
ax.set_title("logisticregression")
plt.show()
test_logisticregression_c(x_train,x_test,y_train,y_test)
01 線性模型 線性回歸與邏輯回歸
線性模型 試圖學得乙個屬性的線性組合來進行 的函式 f x w 1x 1 w 2x 2 w dx d b 向量模式 f x w tx b 簡單 基本 可解釋性好 可看出每部分屬性所做的貢獻 可用於分類和回歸 多個特徵 h x sum theta ix i theta tx 損失函式mse j the...
線性模型 對數機率回歸 邏輯回歸 演算法
又常常稱為邏輯回歸,邏輯斯諦回歸 如果是分類任務,如何使用線性回歸模型呢?答案在廣義線性模型的公式中,只需要找到乙個單調可微函式將分類任務的真實標記y 與線性回歸模型的 值聯絡起來。考慮二分類任務,輸出 y y in y 線性回歸的 值 z w tx b z w tx b z wtx b 是實值,需...
線性回歸模型 線性回歸模型
回歸的思想和分類有所不一樣,分類輸出的結果為離散的值,回歸輸出的是乙個連續型的值。線性回歸的思想就是試圖找到乙個多元的線性函式 當輸入一組特徵 也就是變數x 的時候,模型輸出乙個 值y h x 我們要求這個 值盡可能的準確,那麼怎麼樣才能做到盡可能準確呢?其中 表示實際值,表示 值 其中 表示實際值...