sklearn.discriminant_analysis.LinearDiscriminantAnalysis 笔记
(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) 转换后的数据 |
下面是四个该算法的实例