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


Python sklearn LogisticRegressionCV用法及代碼示例

本文簡要介紹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-validator StratifiedKFold 選擇,但可以使用 cv 參數進行更改。 ‘newton-cg’、‘sag’, ‘saga’ 和 ‘lbfgs’ 求解器可以熱啟動係數(請參閱術語表)。

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

參數

Csint 或浮點數列表,默認=10

Cs 中的每個值都說明了正則化強度的倒數。如果 Cs 為 int,則 Cs 值的網格以 1e-4 和 1e4 之間的對數刻度選擇。與支持向量機一樣,較小的值指定更強的正則化。

fit_intercept布爾,默認=真

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

cvint 或交叉驗證生成器,默認=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,以了解懲罰和求解器之間的兼容性。

scoringstr 或可調用,默認=無

一個字符串(參見模型評估文檔)或帶有簽名 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_weightdict或‘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_stateint,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...

相關用法


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