如何利用scikit-learn从线性判别分析中获取特征向量

时间:2017-05-19 20:41:26

标签: scikit-learn

如何从scikit-learn线性判别分析对象中获得基础变换矩阵?

对于形状为Xm x p样本和m要素)和p类的数组N,缩放矩阵为p行和N-1列。该矩阵可用于将数据从原始空间转换为线性子空间。

在Arya回答之后编辑:

让我们考虑以下示例:

from sklearn.datasets import make_blobs
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA

X, label = make_blobs(n_samples=100, n_features=2, centers=5, cluster_std=0.10, random_state=0)
lda = LDA()
Xlda = lda.fit(X, label)
Xlda.scalings_
#array([[ 7.35157288,  6.76874473],
#       [-6.45391558,  7.97604449]])
Xlda.scalings_.shape
#(2, 2)

我希望scalings_矩阵形状为(2,4),因为我有2个特征,而LDA将提供5-1个组件。

1 个答案:

答案 0 :(得分:1)

让我们调用您的LinearDiscriminantAnalysis对象lda。您可以将缩放矩阵作为lda.scalings_进行访问。描述此文档的文档显示为here

import sklearn.datasets as ds
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA

iris = ds.load_iris()
iris.data.shape
# (150, 4)
len(iris.target_names)
# 3

lda = LDA()
lda.fit(iris.data, iris.target)
lda.scalings_
# array([[-0.81926852,  0.03285975],
#        [-1.5478732 ,  2.15471106],
#        [ 2.18494056, -0.93024679],
#        [ 2.85385002,  2.8060046 ]])
lda.scalings_.shape
# (4, 2)