class sklearn.discriminant_analysis.LinearDiscriminantAnalysis(solver='svd', shrinkage=None, priors=None, n_components=None, store_covariance=False, tol=0.0001, covariance_estimator=None)
参数 | 说明 |
---|---|
solver | 使用的求解器。‘svd’(默认):奇异值分解,不用计算协方差矩阵,因此该解决方案提倡在特征量较大时使用;‘lsqr’:最小二乘解,可与收缩或自定义协方差估计器结合使用;‘eigen’:特征值分解,可与收缩或自定义协方差估计器结合使用。 |
shrinkage | 缩放参数。None(默认):无缩放;‘auto’:使用Ledoit-Wolf引理来进行自动缩放;0和1之间的浮点数值:固定的缩放参数。如果使用covariance_estimator,则应该设置为None。缩放只在求解器设置为‘lsqr’和‘eigen’时才起作用。 |
priors | 类先验概率。形状为(1_class, 2_class, ..., n_class)的数组,默认为None。默认情况下,类比例是从训练数据推断出来的。 |
n_components | int,用于降维的组件数量(<=min(n_class-1, n_features))。 默认值为None。如果为None,则参数被设置为min(n_class-1, n_features)。该参数仅影响transform方法。 |
store_covariance | bool,默认为False。如果为True,则在求解器为‘svd’时显式计算加权类内协方差矩阵。始终为其他求解器计算和存储矩阵。 |
tol | float,默认为1.0e-4。判断X的奇异值是显著性时的绝对阈值,用于估计X的秩。将丢弃奇异值为非显著性的维度。仅当求解器为‘svd’时才使用。 |
covariance_estimator | 协方差估计器,默认为None。如果不是 None,则使用covariance_estimator来估计协方差矩阵,而不是依赖于经验协方差估计器(具有潜在的收缩)。对象应具有fit方法和covariance_属性,如sklearn.covariance中的估计器。如果为None,则收缩参数驱动估计值。如果使用收缩,则应将其设置为None。请注意,covariance_estimator仅适用于"lsqr"和"特征"求解器。 |
属性 | 说明 |
---|---|
coef_ | 权重向量。形如(n_features,)或(n_classes, n_features)的数组。 |
intercept_ | 截距项。形如(n_classes,)的数组。 |
covariance_ | 加权类内协方差矩阵。形如(n_features, n_features)的数组。其对应 |
explained_variance_ratio_ | 由每个选定组件解释的方差百分比。形如(n_components,)的数组。如果未设置n_components,则存储所有组件,且解释方差的总和等于1.0。仅当使用eigen或svd求解器时才可用。 |
means_ | 类间均值。形如(n_classes, n_features)的数组。 |
priors_ | 类先验(总和为1)。形如(n_classes,)的数组。 |
scalings_ | 在由类质心所张成的空间中缩放特征。形如(rank, n_classes - 1)的数组。仅适用于使用‘svd‘或’eigen‘求解器时。 |
xbar_ | 总均值。形如(n_features,)的数组。 |
classes_ | 唯一的类标记。形如(n_classes,)的数组。 |
n_features_in_ | 在fit中看到的特征数量。int |
feature_names_in_ | 在fit中看到的特征名称。形如(feature_names_in_,)。仅当X具有全部为字符串的特征名称时才定义。 |
方法 | 说明 |
---|---|
decision_function(X) | 应用决定函数(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) | 映射数据以最大化类分隔。| |
代码
代码展示了LDA被用作降维手段。
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
iris = datasets.load_iris()
X = iris.data
y = iris.target
target_names = iris.target_names
lda = LinearDiscriminantAnalysis(n_components=2)
X_r = lda.fit(X, y).transform(X)
colors = ["navy", "turquoise", "darkorange"]
plt.figure()
for color, i, target_name in zip(colors, [0, 1, 2], target_names):
plt.scatter(
X_r[y == i, 0], X_r[y == i, 1], alpha=0.8, color=color, label=target_name
)
plt.legend(loc="best", shadow=False, scatterpoints=1)
plt.title("LDA of IRIS dataset")
plt.show()
结果展示
output.png