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回歸CV(又名logit,MaxEnt)分類器。

有關交叉驗證估算器,請參閱詞匯表條目。

此類使用liblinear,newton-cg,sag,lbfgs優化器實現邏輯回歸。newton-cg, sag 和lbfgs求解器僅支持具有原始公式的L2正則化。liblinear求解器支持L1和L2正則化,僅對L2懲罰采用對偶公式。saga求解器僅支持Elastic-Net懲罰。

對于Cs值和l1_ratios值的網格,最好由交叉驗證器StratifiedKFold選擇最佳超參數 ,但可以使用cv參數進行更改。'newton-cg','sag','saga'和'lbfgs'求解器可以對系數進行熱啟動(請參閱詞匯表)。

用戶指南中閱讀更多內容。

參數 說明
Cs int or list of floats, default=10
Cs中的每個值都表示了正則強度的倒數。如果Cs作為整數,則以1e-4和1e4之間的對數比例選擇Cs值的網格。與支持向量機一樣,較小的值指定更強的正則化。
fit_intercept bool, default=True
是否將常量(aka偏置或截距)添加到決策函數。
cv int or cross-validation generator, default=None
使用的默認交叉驗證生成器是“分層K折”。如果提供整數,則為使用的折數。可能的交叉驗證對象的列表,請參見sklearn.model_selection模塊。

在版本0.22中更改:cv如果為“None”,則默認值從3倍更改為5倍。
dual bool, default=False
是否對偶化。僅對liblinear求解器使用L2懲罰時進行對偶化。當n_samples> n_features時,首選dual = False。
penalty {‘l1’, ‘l2’, ‘elasticnet’}, default=’l2’
用于指定處罰中使用的規范。'newton-cg','sag'和'lbfgs'求解器僅支持L2懲罰。僅“ saga”求解器支持“ elasticnet”。
scoring str or callable, default=None
字符串(請參閱模型評估文檔)或具有scorer(estimator, X, y)簽名的評分器可調用對象或函數 。有關可以使用的評分功能的列表,請參見sklearn.metrics。使用的默認評分選項是“準確度”。
solver {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’}, default=’lbfgs’
用于優化問題的算法。

對于小型數據集,“ liblinear”是一個不錯的選擇,而對于大型數據集,“ sag”和“ saga”更快。
- 對于多類分類問題,只有'newton-cg' ,'sag','saga' 和 'lbfgs' 處理多項式損失。“ liblinear”僅限于“一站式”計劃。
- 'newton-cg','lbfgs'和'sag'僅處理L2懲罰,而'liblinear' 和'saga'處理L1懲罰。
- 'liblinear'在LogisticRegressionCV中可能較慢,因為它不處理熱啟動。

請注意,只有在比例大致相同的要素上才能保證“ sag”和“ saga”快速收斂。你可以使用sklearn.preprocessing中的縮放器對數據進行預處理。

版本0.17中的新功能:隨機平均梯度下降求解器。

0.19版中的新功能: SAGA求解器。
tol float, default=1e-4
停止標準的容差。
max_iter int, default=100
優化算法的最大迭代次數。
class_weight dict or ‘balanced’, default=None
{class_label: weight}的形式與類別關聯的權重。如果沒有給出,所有類別的權重都應該是1。

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

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

*0.17版中的新功能:*class_weight ='balanced'
n_jobs int, default=None
交叉驗證循環中使用的CPU內核數。除非設置了joblib.parallel_backend 參數,否則None表示1 。 -1表示使用所有處理器。有關更多詳細信息,請參見詞匯表
verbose int, default=0
對于liblinear,sag和lbfgs求解器,將verbose設置為任何正數以表示輸出日志的詳細程度。求解器,將verbose設置為任何正數以表示輸出日志的詳細程度。
refit ool, default=True
如果設置為“True”,則將所有折疊的分數平均,并獲取最佳分數對應的系數和C,并使用這些參數進行最終的調整。否則,折疊的最佳分數對應的系數,截距和C取平均值。
intercept_scaling float, default=1
僅在使用求解器“ liblinear”并將self.fit_intercept設置為True時有用。在這種情況下,x變為[x,self.intercept_scaling],即將常量值等于intercept_scaling的“合成”特征附加到實例矢量。截距變為intercept_scaling * synthetic_feature_weight

注意!與所有其他特征一樣,合成特征權重也要經過L1 / L2正則化。為了減輕正則化對合成特征權重(以及因此對截距)的影響,必須增加intercept_scaling。
multi_class {‘auto, ‘ovr’, ‘multinomial’}, default=’auto’
如果選擇的選項是“ ovr”,則每個標簽都看做二分類問題。對于“multinomial”,即使數據是二分類的,損失最小是多項式損失擬合整個概率分布。當solver ='liblinear' 時, 'multinomial' 不可用。如果數據是二分類的,或者如果Solver ='liblinear',則'auto'選擇'ovr',否則選擇'multinomial'。

*版本0.18中的新功能:*用于“多項式”情況的隨機平均梯度下降求解器。

*在版本0.22中更改:在版本0.22中,*默認值從'ovr'更改為'auto'。
random_state int, RandomState instance, default=None
solver='sag','saga'或'liblinear'時,用于隨機整理數據。有關詳細信息,請參見詞匯表
l1_ratios list of float, default=None
Elastic-Net混合參數列表,取值范圍0 <= l1_ratio <= 1。僅在penalty='elasticnet'時使用。取值為0等同于使用penalty='l2',而取值為1等同于使用penalty='l1'。對于0 < l1_ratio <1,懲罰是L1和L2的組合。
屬性 說明
classes_ ndarray of shape (n_classes, )
分類器已知的類別標簽列表。
coef_ ndarray of shape (1, n_features) or (n_classes, n_features)
決策函數中特征的系數。

coef_ 當給定問題為二分類時,其形狀為(1,n_features)。
intercept_ ndarray of shape (1,) or (n_classes,)
添加到決策函數的截距(也稱為偏差)。

如果fit_intercept設置為False,則截距設置為零。 intercept_當給定問題為二分類時,其形狀為(1,)。
Cs_ ndarray of shape (n_cs)
C參數(即用于交叉驗證的正則化參數值的倒數)列表。
l1_ratios_ ndarray of shape (n_l1_ratios)
用于交叉驗證的l1_ratios數組。如果不使用l1_ratio(即懲罰不是“ elasticnet”),則將其設置為[None]
coefs_paths_ ndarray of shape (n_folds, n_cs, n_features) or (n_folds, n_cs, n_features + 1)
dict以類為鍵,對相應的類進行OvR后,在交叉驗證過程中通過每折中每個Cs得到的組合為值。如果將“ multi_class”選項設置為“ multinomial”,則coefs_paths是與每個類別相對應的系數。每個字典值都具有(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之后,將類別作為鍵,將值作為交叉驗證每次折疊時獲得的分數網格。如果給出的“ multi_class”選項為“multinomial”,則在所有類別中重復相同的分數,因為這是多項類。如果penalty='elasticnet',每個dict值的形狀為 (n_folds, n_cs(n_folds, n_cs, n_l1_ratios)
C_ ndarray of shape (n_classes,) or (n_classes - 1,)
C的數組,映射到每個類的最好分數。如果refit被設置為False,那么對于每個類,最佳的C是對應于每個折疊的最好分數的C的平均值。當問題是二分類時,C_的形狀為(n_classes,)。
l1_ratio_ ndarray of shape (n_classes,) or (n_classes - 1,)
l1_ratio數組,它映射到每個類的最高分數。如果將refit設置為False,則對于每個類別,最佳的l1_ratio對應與每個折疊的最佳分數的l1_ratio的平均值。問題為二分類時,l1_ratio_的形狀為(n_classes,)。
n_iter_ ndarray of shape (n_classes, n_folds, n_cs) or (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).

另見

LogisticRegression

示例

>>> 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([00])
>>> clf.predict_proba(X[:2, :]).shape
(23)
>>> clf.score(X, y)
0.98...

方法

方法 說明
decision_function(self, X) 預測樣本的置信度得分。
densify(self) 將系數矩陣轉換為密集數組格式。
fit(self, X, y[, sample_weight]) 根據給定的訓練數據擬合模型。
get_params(self[, deep]) 獲取此估計器的參數。
predict(self, X) 預測X中樣本的類別標簽。
predict_log_proba(self, X) 預測概率估計的對數。
predict_proba(self, X) 概率估計。
score(self, X, y[, sample_weight]) 使用給定測試數據和標簽上的scoring選項返回分數。
set_params(self, **params) 設置此估計器的參數。
sparsify(self) 將系數矩陣轉換為稀疏格式。
__init__(self, *, 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)

[源碼]

初始化self, 請參閱help(type(self))以獲得準確的說明。

decision_function(self, X)

[源碼]

預測樣本的置信度得分。

樣本的置信度分數是該樣本到超平面的符號距離。

參數 說明
X array_like or sparse matrix, shape (n_samples, n_features)
樣本數據。
返回值 說明
array, shape=(n_samples,) if n_classes == 2 else (n_samples, n_classes)
每個(樣本,類別)組合的置信度得分。在二進制情況下,self.classes_ [1]的置信度得分> 0表示將預測該類。
densify(self)

[源碼]

將系數矩陣轉換為密集數組格式。

coef_數值(返回)轉換為numpy.ndarray。這是coef_的默認格式,并且是擬合模型所需的格式,因此僅在之前被稀疏化的模型上才需要調用此方法。否則,它是無操作的。

返回值 說明
self 擬合估計器。
fit(self,X,y,sample_weight = None )

[源碼]

根據給定的訓練數據擬合模型。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
訓練數據,其中n_samples是樣本數,n_features是特征數。
y array-like of shape (n_samples,)
對應于X的目標向量。
sample_weight array-like of shape (n_samples,) default=None
分配給各個樣本的權重數組。如果未設置,則為每個樣本的權重都為1。
返回值 說明
self object
get_params(self,deep = True )

[源碼]

獲取此估計器的參數。

參數 說明
deep bool, default=True
如果為True,返回此估計器和所包含子對象的參數。
返回值 說明
params mapping of string to any
參數名稱映射到其值。
predict(self, X)

[源碼]

預測X中樣本的類別標簽。

參數 說明
X array_like or sparse matrix, shape (n_samples, n_features)
樣本數據
返回值 說明
C array, shape [n_samples]
每個樣本的預測類別標簽。
predict_log_proba(self, X)

[源碼]

預測概率估計的對數。

返回按類別標簽排序的所有類別的估計值。

參數 說明
X array-like of shape (n_samples, n_features)
要預測的數據,其中n_samples是樣本數, n_features是特征數。
返回值 說明
T array-like of shape (n_samples, n_classes)
返回模型中每個類別的樣本的對數概率,類按self.classes_中的順序排序。
predict_proba(self, X)

[源碼]

概率估計。

返回按類別標簽排序的所有類別的估計值。

對于multi_class問題,如果將multi_class設置為“multinomial”,則使用softmax函數查找每個類別的預測概率。否則使用one vs-rest方法,即使用logistic函數計算每個類別為正的概率。并在所有類別中標準化這些值。

參數 說明
X array-like of shape (n_samples, n_features)
要預測的數據,其中n_samples是樣本數, n_features是特征數。
返回值 說明
T array-like of shape (n_samples, n_classes)
返回模型中每個類別的樣本概率,按self.classes_中的類別順序排序。
score(self, X, y, sample_weight=None)

[源碼]

使用給定測試數據和標簽上的scoring選項返回分數。

參數 說明
X array-like of shape (n_samples, n_features)
測試樣本。
y array-like of shape (n_samples,) or (n_samples, n_outputs)
X的真實標簽。
sample_weight array-like of shape (n_samples,), default=None
樣本權重。
返回值 說明
score float
預測標簽與真實標簽的平均準確度
set_params(self, **params)

[源碼]

設置此估算器的參數。

該方法適用于簡單的估計器以及嵌套對象(例如管道)。后者具有形式參數 <component>__<parameter>,以便可以更新嵌套對象的每個組件。

參數 說明
**params dict
估計器參數。
返回值 說明
self object
估計器實例。
sparsify(self)

[源碼]

將系數矩陣轉換為稀疏格式。

coef_數值轉換為scipy.sparse矩陣,對于L1正規化的模型,該矩陣比通常的numpy.ndarray具有更高的內存和存儲效率。

intercept_數值未轉換。

返回值 說明
self 擬合估計器。

對于非稀疏模型,即當coef_中零的個數不多時,這實際上可能會增加內存使用量,因此請謹慎使用此方法。經驗法則是,可以使用(coef_ == 0).sum()計算得到的零元素的數量必須大于50%,這時的效果是顯著的。

在調用densify之前,調用此方法將無法進一步使用partial_fit方法(如果有)。