本文簡要介紹python語言中 sklearn.linear_model.LogisticRegressionCV
的用法。
用法:
class sklearn.linear_model.LogisticRegressionCV(*, Cs=10, fit_intercept=True, cv=None, dual=False, penalty='l2', scoring=None, solver='lbfgs', tol=0.0001, max_iter=100, class_weight=None, n_jobs=None, verbose=0, refit=True, intercept_scaling=1.0, multi_class='auto', random_state=None, l1_ratios=None)
Logistic Regression CV(又名 logit,MaxEnt)分類器。
請參閱交叉驗證估計器的詞匯表條目。
此類使用 liblinear,newton-cg,lbfgs 優化器的 sag 實現邏輯回歸。 newton-cg、sag 和 lbfgs 求解器僅支持原始公式的 L2 正則化。 liblinear 求解器同時支持 L1 和 L2 正則化,對偶公式僅用於 L2 懲罰。 Elastic-Net 懲罰僅由 saga 求解器支持。
對於
Cs
值和l1_ratios
值的網格,最佳超參數由 cross-validatorStratifiedKFold
選擇,但可以使用 cv 參數進行更改。 ‘newton-cg’、‘sag’, ‘saga’ 和 ‘lbfgs’ 求解器可以熱啟動係數(請參閱術語表)。在用戶指南中閱讀更多信息。
- Cs:int 或浮點數列表,默認=10
Cs 中的每個值都說明了正則化強度的倒數。如果 Cs 為 int,則 Cs 值的網格以 1e-4 和 1e4 之間的對數刻度選擇。與支持向量機一樣,較小的值指定更強的正則化。
- fit_intercept:布爾,默認=真
指定是否應將常數(也稱為偏差或截距)添加到決策函數。
- cv:int 或交叉驗證生成器,默認=None
使用的默認交叉驗證生成器是 Stratified K-Folds。如果提供了一個整數,那麽它就是使用的折疊數。有關可能的交叉驗證對象的列表,請參閱模塊
sklearn.model_selection
模塊。- dual:布爾,默認=假
雙重或原始配方。對偶公式僅適用於使用 liblinear 求解器的 l2 懲罰。當 n_samples > n_features 時首選 dual=False。
- penalty:{‘l1’, ‘l2’,‘elasticnet’},默認='l2'
指定懲罰的範數:
'l2'
: 添加 L2 懲罰項(默認使用);'l1'
: 添加 L1 懲罰項;'elasticnet'
:添加了 L1 和 L2 懲罰項。
警告
某些懲罰可能不適用於某些求解器。請參閱下麵的參數
solver
,以了解懲罰和求解器之間的兼容性。- scoring:str 或可調用,默認=無
一個字符串(參見模型評估文檔)或帶有簽名
scorer(estimator, X, y)
的記分器可調用對象/函數。有關可以使用的評分函數列表,請查看sklearn.metrics
。使用的默認評分選項是‘accuracy’。- solver:{'newton-cg',‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’},默認='lbfgs'
用於優化問題的算法。默認為‘lbfgs’。要選擇求解器,您可能需要考慮以下方麵:
對於小型數據集,‘liblinear’是一個不錯的選擇,而‘sag’和‘saga’對於大型數據集更快;
對於多類問題,隻有‘newton-cg’、‘sag’, ‘saga’和‘lbfgs’處理多項式損失;
‘liblinear’ 在
LogisticRegressionCV
中可能會更慢,因為它不處理熱啟動。 ‘liblinear’ 僅限於one-versus-rest 方案。
警告
算法的選擇取決於選擇的懲罰:
‘newton-cg’ - [‘l2’]
‘lbfgs’ - [‘l2’]
‘liblinear’ - [‘l1’, ‘l2’]
‘sag’ - [‘l2’]
‘saga’ - [‘elasticnet’, ‘l1’,‘l2’]
注意
‘sag’ 和 ‘saga’ 的快速收斂僅在具有大致相同規模的特征上得到保證。您可以使用
sklearn.preprocessing
中的縮放器預處理數據。- tol:浮點數,默認=1e-4
停止標準的公差。
- max_iter:整數,默認=100
優化算法的最大迭代次數。
- class_weight:dict或‘balanced’,默認=無
與
{class_label: weight}
形式的類關聯的權重。如果沒有給出,所有的類都應該有一個權重。“balanced” 模式使用 y 的值自動調整與輸入數據中的類頻率成反比的權重,如
n_samples / (n_classes * np.bincount(y))
。請注意,如果指定了 sample_weight,這些權重將乘以 sample_weight(通過 fit 方法傳遞)。
- n_jobs:整數,默認=無
交叉驗證循環期間使用的 CPU 內核數。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有處理器。有關詳細信息,請參閱詞匯表。- verbose:整數,默認=0
對於 ‘liblinear’, ‘sag’ 和 ‘lbfgs’ 求解器,將 verbose 設置為任何正數以表示詳細程度。
- refit:布爾,默認=真
如果設置為 True,則將所有折疊的分數取平均值,並采用與最佳分數相對應的係數和 C,並使用這些參數進行最終調整。否則,對應於跨折疊的最佳分數的係數、截距和 C 被平均。
- 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。
- multi_class:{'自動,‘ovr’, ‘multinomial’},默認='自動'
如果選擇的選項是‘ovr’,那麽每個標簽都適合一個二元問題。對於‘multinomial’,最小化的損失是整個概率分布的多項損失擬合,即使數據是二進製的。 ‘multinomial’ 在solver='liblinear' 時不可用。 ‘auto’ 如果數據是二進製的,或者如果solver='liblinear',則選擇‘ovr’,否則選擇‘multinomial’。
- random_state:int,RandomState 實例,默認=無
當
solver='sag'
、 ‘saga’ 或 ‘liblinear’ 打亂數據時使用。請注意,這僅適用於求解器,不適用於交叉驗證生成器。詳細信息請參見術語表。- l1_ratios:浮點數列表,默認=無
Elastic-Net 混合參數列表,帶有
0 <= l1_ratio <= 1
。僅在penalty='elasticnet'
時使用。值 0 等效於使用penalty='l2'
,而 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)。- intercept_:形狀為 (1,) 或 (n_classes,) 的 ndarray
攔截(又名偏差)添加到決策函數。
如果
fit_intercept
設置為 False,則截距設置為零。當問題是二進製時,intercept_
的形狀為 (1,)。- Cs_:ndarray 形狀 (n_cs)
C 數組,即用於交叉驗證的正則化參數值的倒數。
- l1_ratios_:ndarray 形狀 (n_l1_ratios)
用於交叉驗證的 l1_ratio 數組。如果沒有使用 l1_ratio(即懲罰不是‘elasticnet’),則設置為
[None]
- coefs_paths_:ndarray 形狀 (n_folds, n_cs, n_features) 或 (n_folds, n_cs, n_features + 1)
dict 以類為鍵,在 cross-validating 期間獲得的係數路徑跨越每個折疊,然後在對相應的類執行 OvR 作為值之後跨越每個 Cs。如果‘multi_class’選項設置為‘multinomial’,那麽coefs_paths就是每個類對應的係數。每個 dict 值的形狀為
(n_folds, n_cs, n_features)
或(n_folds, n_cs, n_features + 1)
,具體取決於截距是否合適。如果penalty='elasticnet'
,則形狀為(n_folds, n_cs, n_l1_ratios_, n_features)
或(n_folds, n_cs, n_l1_ratios_, n_features + 1)
。- scores_:dict
在為相應的類執行 OvR 之後,以類作為鍵,將值作為在 cross-validating 每次折疊期間獲得的分數網格的字典。如果給定的‘multi_class’ 選項是‘multinomial’,那麽在所有類中重複相同的分數,因為這是多項類。每個 dict 值的形狀為
(n_folds, n_cs
或(n_folds, n_cs, n_l1_ratios)
如果penalty='elasticnet'
。- C_:ndarray 形狀 (n_classes,) 或 (n_classes - 1,)
映射到每個類的最佳分數的 C 數組。如果 refit 設置為 False,那麽對於每個類,最好的 C 是對應於每個折疊的最佳分數的 C 的平均值。當問題是二進製時,
C_
是 shape(n_classes,)。- l1_ratio_:ndarray 形狀 (n_classes,) 或 (n_classes - 1,)
l1_ratio 數組,映射到每個類的最佳分數。如果 refit 設置為 False,那麽對於每個類,最佳 l1_ratio 是對應於每個折疊的最佳分數的 l1_ratio 的平均值。當問題是二進製時,
l1_ratio_
是 shape(n_classes,)。- n_iter_:ndarray 形狀 (n_classes, n_folds, n_cs) 或 (1, n_folds, n_cs)
所有類、折疊和 Cs 的實際迭代次數。在二進製或多項式情況下,第一個維度等於 1。如果
penalty='elasticnet'
,則形狀為(n_classes, n_folds, n_cs, n_l1_ratios)
或(1, n_folds, n_cs, n_l1_ratios)
。- n_features_in_:int
擬合期間看到的特征數。
- feature_names_in_:ndarray 形狀(
n_features_in_
,) 擬合期間看到的特征名稱。僅當
X
具有全為字符串的函數名稱時才定義。
參數:
屬性:
例子:
>>> from sklearn.datasets import load_iris >>> from sklearn.linear_model import LogisticRegressionCV >>> X, y = load_iris(return_X_y=True) >>> clf = LogisticRegressionCV(cv=5, random_state=0).fit(X, y) >>> clf.predict(X[:2, :]) array([0, 0]) >>> clf.predict_proba(X[:2, :]).shape (2, 3) >>> clf.score(X, y) 0.98...
相關用法
- Python sklearn LogisticRegression用法及代碼示例
- 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.LogisticRegressionCV。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。