sklearn.discriminant_analysis.LinearDiscriminantAnalysis 笔记

(2018第一篇随笔)

承接上个博客,这次来读sklearnpython代码说明以及源码

/*******************************************************代码说明*************************************************************/

   

class sklearn.discriminant_analysis.LinearDiscriminantAnalysis(solver='svd', shrinkage=None, priors=None, n_components=None, store_covariance=False, tol=0.0001)

[source code]

   

  • 类的参数

       

    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] 

     

     


       

       

  • 类的方法

       

decision_function(X)

预测样本的置信度分数

fit(X, y)

根据给定的训练数据和参数拟合线性判别分析模型

fit_transform(X[, y])

拟合数据,然后转换

get_params([deep])

得到该估计器的参数

predict(X)

预测X的类标

predict_log_proba(X)

估计对数概率值

predict_proba(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]

参数

Xarray-like数组,大小(样本数,特征数)

训练数据

Y:数组,大小(样本数,)

目标值

   

fit_transform(X, y=None, **fit_params)[source]

Xy拟合转换模型(可选参数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]

参数

Xarray-like数组,大小=(样本数,特征数)

输入的数据

返回值

C:数组,大小=(样本数,类别数)

估计的对数概率

   

predict_proba(X)[source]

   

参数

Xarray-like数组,大小=(样本数,特征数)

输入的数据

返回值

C:数组,大小=(样本数,类别数)

估计的概率

   

score(X, y, sample_weight=None)[source]

在多类标分类问题中,这是一个苛刻度量标准的子集准确率,因为对于每个样本你都要求标签集被正确预测

参数

Xarray-like,大小=(样本数,特征数)

测试样本

yarray-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]

参数值

Xarray-like,大小(样本数,特征数)

输入数据

返回值

X_new:array,大小(样本数,n_components

转换后的数据

   

   

下面是四个该算法的实例

 

posted @ 2018-01-02 14:46  从菜鸟开始  阅读(3732)  评论(0编辑  收藏  举报