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) . |
另見
示例
>>> 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...
方法
方法 | 說明 |
---|---|
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方法(如果有)。