當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn LogisticRegression用法及代碼示例


本文簡要介紹python語言中 sklearn.linear_model.LogisticRegression 的用法。

用法:

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='lbfgs', max_iter=100, multi_class='auto', verbose=0, warm_start=False, n_jobs=None, l1_ratio=None)

邏輯回歸(又名 logit,MaxEnt)分類器。

在多類情況下,如果‘multi_class’ 選項設置為‘ovr’,則訓練算法使用one-vs-rest (OvR) 方案,如果‘multi_class’ 選項設置為‘multinomial’,則使用cross-entropy 損失。 (目前,‘multinomial’ 選項僅受 ‘lbfgs’, ‘sag’, ‘saga’ 和“newton-cg”求解器支持。)

該類使用‘liblinear’庫、‘newton-cg’、‘sag’, ‘saga’和‘lbfgs’求解器實現正則化邏輯回歸。請注意,默認情況下應用正則化。它可以處理密集和稀疏輸入。使用C-ordered數組或包含64位浮點的CSR矩陣以獲得最佳性能;任何其他輸入格式都將被轉換(和複製)。

‘newton-cg’、‘sag’ 和 ‘lbfgs’ 求解器僅支持具有原始公式的 L2 正則化,或不支持正則化。 ‘liblinear’ 求解器支持 L1 和 L2 正則化,僅針對 L2 懲罰使用對偶公式。僅 ‘saga’ 求解器支持 Elastic-Net 正則化。

在用戶指南中閱讀更多信息。

參數

penalty{‘l1’, ‘l2’,‘elasticnet’, ‘none’},默認='l2'

指定懲罰的範數:

  • 'none' : 不加罰分;
  • 'l2' : 添加L2懲罰項,默認選擇;
  • 'l1' : 添加 L1 懲罰項;
  • 'elasticnet' :添加了 L1 和 L2 懲罰項。

警告

某些懲罰可能不適用於某些求解器。請參閱下麵的參數solver,以了解懲罰和求解器之間的兼容性。

dual布爾,默認=假

雙重或原始配方。對偶公式僅適用於使用 liblinear 求解器的 l2 懲罰。當 n_samples > n_features 時首選 dual=False。

tol浮點數,默認=1e-4

停止標準的公差。

C浮點數,默認=1.0

正則化強度的倒數;必須是正浮點數。與支持向量機一樣,較小的值指定更強的正則化。

fit_intercept布爾,默認=真

指定是否應將常數(也稱為偏差或截距)添加到決策函數。

intercept_scaling浮點數,默認=1

僅當使用求解器 ‘liblinear’ 並且 self.fit_intercept 設置為 True 時才有用。在這種情況下,x 變為 [x, self.intercept_scaling],即,將常數值等於 intercept_scaling 的 “synthetic” 特征附加到實例向量。截距變為 intercept_scaling * synthetic_feature_weight

筆記!合成特征權重像所有其他特征一樣受到 l1/l2 正則化。為了減少正則化對合成特征權重(因此對截距)的影響,必須增加intercept_scaling。

class_weightdict或‘balanced’,默認=無

{class_label: weight} 形式的類關聯的權重。如果沒有給出,所有的類都應該有一個權重。

“balanced” 模式使用 y 的值自動調整與輸入數據中的類頻率成反比的權重,如 n_samples / (n_classes * np.bincount(y))

請注意,如果指定了 sample_weight,這些權重將乘以 sample_weight(通過 fit 方法傳遞)。

random_stateint,RandomState 實例,默認=無

solver == ‘sag’, ‘saga’ 或 ‘liblinear’ 時使用以打亂數據。詳細信息請參見術語表。

solver{'newton-cg',‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’},默認='lbfgs'

用於優化問題的算法。默認為‘lbfgs’。要選擇求解器,您可能需要考慮以下方麵:

  • 對於小型數據集,‘liblinear’是一個不錯的選擇,而‘sag’和‘saga’對於大型數據集更快;

  • 對於多類問題,隻有‘newton-cg’、‘sag’, ‘saga’和‘lbfgs’處理多項式損失;

  • ‘liblinear’ 僅限於 one-versus-rest 方案。

警告

算法的選擇取決於選擇的懲罰: 求解器支持的懲罰:

  • ‘newton-cg’ - [‘l2’, ‘none’]

  • ‘lbfgs’ - [‘l2’, ‘none’]

  • ‘liblinear’ - [‘l1’, ‘l2’]

  • ‘sag’ - [‘l2’, ‘none’]

  • ‘saga’ - [‘elasticnet’, ‘l1’,‘l2’, ‘none’]

注意

‘sag’ 和 ‘saga’ 的快速收斂僅在具有大致相同規模的特征上得到保證。您可以使用 sklearn.preprocessing 中的縮放器預處理數據。

也可以看看

有關 LogisticRegression 的更多信息,尤其是 Table 匯總求解器/懲罰支持的信息,請參閱用戶指南。

max_iter整數,默認=100

求解器收斂的最大迭代次數。

multi_class{‘auto’, ‘ovr’, ‘multinomial’},默認='自動'

如果選擇的選項是‘ovr’,那麽每個標簽都適合一個二元問題。對於‘multinomial’,最小化的損失是整個概率分布的多項損失擬合,即使數據是二進製的。 ‘multinomial’ 在solver='liblinear' 時不可用。 ‘auto’ 如果數據是二進製的,或者如果solver='liblinear',則選擇‘ovr’,否則選擇‘multinomial’。

verbose整數,默認=0

對於 liblinear 和 lbfgs 求解器,將詳細設置為任何正數以表示詳細程度。

warm_start布爾,默認=假

當設置為 True 時,重用之前調用的解決方案作為初始化,否則,隻需擦除之前的解決方案。對 liblinear 求解器無用。請參閱詞匯表。

n_jobs整數,默認=無

如果multi_class='ovr'”,則在類上並行化時使用的 CPU 內核數。當solver 設置為‘liblinear’ 時忽略此參數,無論是否指定‘multi_class’。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有處理器。有關詳細信息,請參閱詞匯表。

l1_ratio浮點數,默認=無

Elastic-Net 混合參數,帶有 0 <= l1_ratio <= 1 。僅在 penalty='elasticnet' 時使用。設置 l1_ratio=0 等效於使用 penalty='l2' ,而設置 l1_ratio=1 等效於使用 penalty='l1' 。對於 0 < l1_ratio <1 ,懲罰是 L1 和 L2 的組合。

屬性

classes_ndarray 形狀 (n_classes, )

分類器已知的類標簽列表。

coef_ndarray 形狀 (1, n_features) 或 (n_classes, n_features)

決策函數中特征的係數。

當給定問題是二進製時,coef_ 的形狀為 (1, n_features)。特別是,當 multi_class='multinomial' 時,coef_ 對應於結果 1(真),而 -coef_ 對應於結果 0(假)。

intercept_形狀為 (1,) 或 (n_classes,) 的 ndarray

攔截(又名偏差)添加到決策函數。

如果 fit_intercept 設置為 False,則截距設置為零。當給定問題是二進製時,intercept_ 的形狀為 (1,)。特別是,當 multi_class='multinomial' 時,intercept_ 對應於結果 1(真),而 -intercept_ 對應於結果 0(假)。

n_features_in_int

擬合期間看到的特征數。

feature_names_in_ndarray 形狀(n_features_in_,)

擬合期間看到的特征名稱。僅當 X 具有全為字符串的函數名稱時才定義。

n_iter_ndarray 形狀 (n_classes,) 或 (1, )

所有類的實際迭代次數。如果是二進製或多項式,則僅返回 1 個元素。對於 liblinear 求解器,僅給出所有類的最大迭代次數。

注意

底層 C 實現使用隨機數生成器在擬合模型時選擇特征。因此,對於相同的輸入數據,結果略有不同的情況並不少見。如果發生這種情況,請嘗試使用較小的 tol 參數。

在某些情況下,預測輸出可能與獨立 liblinear 的輸出不匹配。請參閱敘述文檔中與 liblinear 的區別。

參考

L-BFGS-B - 用於Large-scale Bound-constrained 優化的軟件

Ciyou Zhu, Richard Byrd, Jorge Nocedal and Jose Luis Morales.http://users.iems.northwestern.edu/~nocedal/lbfgsb.html

LIBLINEAR - 大型線性分類庫

https://www.csie.ntu.edu.tw/~cjlin/liblinear/

SAG - 馬克·施密特、尼古拉斯·勒魯和弗朗西斯·巴赫

使用隨機平均梯度最小化有限和 https://hal.inria.fr/hal-00860051/document

SAGA - Defazio, A., Bach F. & Lacoste-Julien S. (2014)。

SAGA:支持非強凸複合目標的快速增量梯度方法https://arxiv.org/abs/1407.0202

Hsiang-Fu於,Fang-Lan黃,Chih-Jen林(2011)。雙坐標下降

邏輯回歸和最大熵模型的方法。機器學習 85(1-2):41-75。https://www.csie.ntu.edu.tw/~cjlin/papers/maxent_dual.pdf

例子

>>> from sklearn.datasets import load_iris
>>> from sklearn.linear_model import LogisticRegression
>>> X, y = load_iris(return_X_y=True)
>>> clf = LogisticRegression(random_state=0).fit(X, y)
>>> clf.predict(X[:2, :])
array([0, 0])
>>> clf.predict_proba(X[:2, :])
array([[9.8...e-01, 1.8...e-02, 1.4...e-08],
       [9.7...e-01, 2.8...e-02, ...e-08]])
>>> clf.score(X, y)
0.97...

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.linear_model.LogisticRegression。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。