本文簡要介紹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_weight:dict或‘balanced’,默認=無
與
{class_label: weight}
形式的類關聯的權重。如果沒有給出,所有的類都應該有一個權重。“balanced” 模式使用 y 的值自動調整與輸入數據中的類頻率成反比的權重,如
n_samples / (n_classes * np.bincount(y))
。請注意,如果指定了 sample_weight,這些權重將乘以 sample_weight(通過 fit 方法傳遞)。
- random_state:int,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 - 大型線性分類庫
- 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...
相關用法
- Python sklearn LogisticRegressionCV用法及代碼示例
- Python sklearn LocalOutlierFactor.kneighbors_graph用法及代碼示例
- Python sklearn LocallyLinearEmbedding用法及代碼示例
- Python sklearn LocalOutlierFactor.kneighbors用法及代碼示例
- Python sklearn LocalOutlierFactor用法及代碼示例
- Python sklearn LarsCV用法及代碼示例
- Python sklearn Lars用法及代碼示例
- Python sklearn LeavePOut用法及代碼示例
- Python sklearn Lasso用法及代碼示例
- Python sklearn LabelPropagation用法及代碼示例
- Python sklearn LassoLars用法及代碼示例
- Python sklearn LeaveOneOut用法及代碼示例
- Python sklearn LassoLarsIC用法及代碼示例
- Python sklearn LedoitWolf用法及代碼示例
- Python sklearn LassoCV.path用法及代碼示例
- Python sklearn LinearDiscriminantAnalysis用法及代碼示例
- Python sklearn LassoCV用法及代碼示例
- Python sklearn LabelSpreading用法及代碼示例
- Python sklearn LabelEncoder用法及代碼示例
- Python sklearn LinearRegression用法及代碼示例
- Python sklearn LabelBinarizer用法及代碼示例
- Python sklearn LinearSVR用法及代碼示例
- Python sklearn LinearSVC用法及代碼示例
- Python sklearn LassoLarsCV用法及代碼示例
- Python sklearn LatentDirichletAllocation用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.linear_model.LogisticRegression。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。