(2018第一篇隨筆)
承接上個博客,這次來讀sklearn的python代碼說明以及源碼
/*******************************************************代碼說明*************************************************************/
class sklearn.discriminant_analysis.LinearDiscriminantAnalysis(solver='svd', shrinkage=None, priors=None, n_components=None, store_covariance=False, tol=0.0001)
-
類的參數
Solver:string,可選
有三種參數值:
'svd':奇異值分解(默認設置)。不計算協方差矩陣,推薦在數據維數較大時使用
'lsqr':最小平方解,可以進行shrinkage
'eigen':特征值分解,可以進行shrinkage
Shrinkage:string/float,可選
收縮參數,有三種可能:
None:不進行收縮(默認設置)
'auto':根據Ledoit-Wolf lemma自動選擇收縮
0-1之間的浮點數:固定的收縮參數
(注意收縮只在'lsqr'和'eigen'時才有效)
Priors:array數組(大小為類別數),可選。類先驗概率
n_components:整形,可選
維數約減的維數(<類別數-1)
Store_covariance:bool,可選
計算類協方差矩陣(默認為false),只用於'svd'的情況
Tol:浮點數,可選(默認1.0e-4)
秩估計的閾值在'svd'中
-
類的屬性
Coef_:array數組,大小為(#features)或(#classes,#features)
(多個)權值向量
Intercept:array數組,大小(#features)
截距
Covariance_:array-like? 大小(#features*#features)
所有類的協方差矩陣
Explained_variance_ratio_:array數組,大小(n_components,)
每個選定components解釋的方差比。若n_components未設定,那么所有的components組件被存儲而且被解釋的方差之和為1。只在'svd'or'eigen'時可用
Means_:arrray-like,大小(#類別,#特征)
類均值
Priors_:array-like,大小(#類別)
類的先驗,和為1
Scalings_:array-like,大小(rank秩,類別數-1)
由類質心張成空間中特征的規模scaling?
(Scaling of the features in the space spanned by the class centroids.)
Xbar_:array-like,大小(#features)
所有樣本的均值
Classes_:array-like,大小(#classes)
唯一的類標
Examples:
1 >>> import numpy as np 2 >>> from sklearn.discriminant_analysis import LinearDiscriminantAnalysis 3 >>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]) 4 >>> y = np.array([1, 1, 1, 2, 2, 2]) 5 >>> clf = LinearDiscriminantAnalysis() 6 >>> clf.fit(X, y) 7 LinearDiscriminantAnalysis(n_components=None, priors=None, shrinkage=None, 8 solver='svd', store_covariance=False, tol=0.0001) 9 >>> print(clf.predict([[-0.8, -1]])) 10 [1]
-
類的方法
預測樣本的置信度分數 |
|
fit(X, y) |
根據給定的訓練數據和參數擬合線性判別分析模型 |
fit_transform(X[, y]) |
擬合數據,然后轉換 |
get_params([deep]) |
得到該估計器的參數 |
predict(X) |
預測X的類標 |
估計對數概率值 |
|
估計概率 |
|
score(X, y[, sample_weight]) |
返回對於訓練集的平均分類准確率(給定類標) |
set_params(**params) |
給該估計器設置參數 |
transform(X) |
投影數據使得最大化類間隔 |
__init__(solver='svd', shrinkage=None, priors=None, n_components=None, store_covariance=False, tol=0.0001)[source]
該類的析構函數。設定參數的默認值
decision_function(X)[source]
樣本的置信度分數是該樣本到(分類)超平面的有符號距離
參數 |
X:{array-like數組,稀疏矩陣},大小=(樣本數,特征維數) 樣本 |
返回值 |
數組;在兩類的情況下大小=(樣本數,)否則(樣本數,類別數) 返回的數組是對於每一個(樣本,類別)的置信度分數。在兩類的情況下,self.classes_[1]的置信度分數>0意味着這個類將被預測
|
fit(X, y)[source]
參數 |
X:array-like數組,大小(樣本數,特征數) 訓練數據 Y:數組,大小(樣本數,) 目標值 |
fit_transform(X, y=None, **fit_params)[source]
對X和y擬合轉換模型(可選參數fit_para),返回X的轉換后的版本
參數 |
X:ndarray,大小[樣本數,特征數] 訓練集 y:ndarray,大小[樣本數] 目標值 |
返回值 |
X_new:ndarray大小[樣本數,新的特征數] 轉換后的數組 |
get_params(deep=True)[source]
參數 |
Deep:布爾型,可選 若為真,將會返回該估計器的參數,而且包含子對象,子對象是估計器 |
返回值 |
Params:字符串到任何事的映射 對應於他們的值的參數名 |
predict(X)[source]
參數 |
X:{array-like數組,稀疏矩陣},大小=[樣本數,特征數] 樣本 |
返回值 |
C:數組,大小=[樣本數] 每個樣本的類標 |
predict_log_proba(X)[source]
參數 |
X:array-like數組,大小=(樣本數,特征數) 輸入的數據 |
返回值 |
C:數組,大小=(樣本數,類別數) 估計的對數概率 |
predict_proba(X)[source]
參數 |
X:array-like數組,大小=(樣本數,特征數) 輸入的數據 |
返回值 |
C:數組,大小=(樣本數,類別數) 估計的概率 |
score(X, y, sample_weight=None)[source]
在多類標分類問題中,這是一個苛刻度量標准的子集准確率,因為對於每個樣本你都要求標簽集被正確預測
參數 |
X:array-like,大小=(樣本數,特征數) 測試樣本 y:array-like,大小=(樣本數)或(樣本數,n_outputs) X的真實類標 Sample_weight:array-like,大小=[樣本數],該參數可選 樣本的權值? |
返回值 |
Score:浮點型 預測函數self.predict(X) wrt. y.的平均准確率 |
set_params(**params)[source]
該方法既工作於簡單的估計器,也在嵌套的對象(比如pipelines)。后者有參數,其形式:
<component>__<parameter>。他可能會更新嵌套對象的每個component。
返回:self:
transform(X)[source]
參數值 |
X:array-like,大小(樣本數,特征數) 輸入數據 |
返回值 |
X_new:array,大小(樣本數,n_components) 轉換后的數據 |
下面是四個該算法的實例