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

标签 scikit-learn

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

对于形状为 m x p 的数组 X(m 样本和 p 特征)和 N 类,缩放矩阵有 p 行和 N-1 列。该矩阵可用于将数据从原始空间变换到线性子空间。


艾莉亚回答后编辑:

让我们考虑以下示例:

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个分量。

最佳答案

让我们将您的 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)

关于scikit-learn - 如何使用 scikit-learn 从线性判别分析中获取特征向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44078682/

相关文章:

python-3.x - 类型错误 : only integer scalar arrays can be converted to a scalar index while in KFold

python - 在没有所有可能标签的情况下训练 sklearn LogisticRegression 分类器

python - 如何在 scikit-learn 的 LogisticRegressionCV 调用中将参数传递给评分函数

python - 如何在 scikit 学习中对具有多个文本列的数据框进行矢量化而不丢失对原始列的跟踪

python - 将 OpenCV 图像加载到 Scikit Learn

python - scikit-learn 中的 "ValueError: could not convert string to float"错误

python - 时间序列数据的分层交叉验证

python - 实现 scikit-learn 机器学习算法

machine-learning - 随机梯度下降是分类器还是优化器?

python - 如何在 Google Colab 中更新 scikit-learn?