机器学习LDA降维实现
solver:选择求解器类型,影响计算效率和适用场景。shrinkage:是否使用 shrinkage 方法,有助于改善协方差矩阵的估计。priors:设置类别的先验概率,影响模型的分类决策。:降维后的特征数量,控制降维的程度。:是否存储协方差矩阵,影响内存使用。tol:收敛阈值,仅在时使用,控制最小二乘法的收敛条件。
线性判别分析(Linear Discriminant Analysis, LDA)是一种有监督的线性降维方法,主要用于分类问题。LDA 的目标是最大化类间距离(between-class variance)同时最小化类内距离(within-class variance),从而提高分类效果。与 PCA 不同,LDA 考虑了类别标签信息,这使得 LDA 在分类任务中通常表现更好.


2.1使用 sklearn 实现 LDA
当然可以!LinearDiscriminantAnalysis 是 scikit-learn 库中的一个类,用于执行线性判别分析(LDA)。以下是 LinearDiscriminantAnalysis 类的参数列表及其解释:
2.1.1参数列表
LinearDiscriminantAnalysis(solver='svd', shrinkage=None, priors=None, n_components=None, store_covariance=False, tol=0.0001)
2.1.2参数解释
-
solver:字符串,默认为
'svd'-
选择求解器类型。
-
可选值:
-
'svd':奇异值分解(SVD),不计算协方差矩阵,适用于高维数据。 -
'lsqr':最小二乘法,可以使用 shrinkage。 -
'eigen':特征值分解,可以使用 shrinkage。
-
-
-
shrinkage:字符串或浮点数,默认为
None-
选择是否使用 shrinkage 方法来改进协方差矩阵的估计。
-
可选值:
-
None:不使用 shrinkage。 -
'auto':自动选择最优的 shrinkage 参数。 -
浮点数:手动指定 shrinkage 参数的值。
-
-
-
priors:数组,默认为
None-
各类别的先验概率。
-
如果为
None,则使用类别的经验频率作为先验概率。
-
-
n_components:整数,默认为
None-
降维后的特征数量。
-
如果为
None,则不进行降维。 -
必须小于等于类别数减一。
-
-
store_covariance:布尔值,默认为
False-
是否存储每个类别的协方差矩阵。
-
如果为
True,则会在fit方法后存储每个类别的协方差矩阵。
-
-
tol:浮点数,默认为
0.0001-
收敛阈值,仅在
solver='lsqr'时使用。 -
控制最小二乘法的收敛条件。
-
2.1.3示例代码
以下是一个使用 LinearDiscriminantAnalysis 的示例代码,展示了如何设置这些参数:
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
# 加载数据集
data = load_iris()
X = data.data
y = data.target
# 标准化数据
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42)
# 创建 LDA 模型
lda = LinearDiscriminantAnalysis(
solver='svd', # 使用奇异值分解求解器
shrinkage=None, # 不使用 shrinkage
priors=None, # 使用默认先验概率
n_components=2, # 降维到 2 维
store_covariance=False, # 不存储协方差矩阵
tol=0.0001 # 收敛阈值
)
# 拟合模型
X_train_lda = lda.fit_transform(X_train, y_train)
# 变换测试集
X_test_lda = lda.transform(X_test)
# 可视化结果
plt.figure()
colors = ['navy', 'turquoise', 'darkorange']
lw = 2
for color, i, target_name in zip(colors, [0, 1, 2], data.target_names):
plt.scatter(X_train_lda[y_train == i, 0], X_train_lda[y_train == i, 1], color=color, alpha=.8, lw=lw,
label=target_name)
plt.legend(loc='best', shadow=False, scatterpoints=1)
plt.title('LDA of IRIS dataset')
plt.xlabel('LDA1')
plt.ylabel('LDA2')
plt.show()
2.1.4参数解释总结
-
solver:选择求解器类型,影响计算效率和适用场景。
-
shrinkage:是否使用 shrinkage 方法,有助于改善协方差矩阵的估计。
-
priors:设置类别的先验概率,影响模型的分类决策。
-
n_components:降维后的特征数量,控制降维的程度。
-
store_covariance:是否存储协方差矩阵,影响内存使用。
-
tol:收敛阈值,仅在
solver='lsqr'时使用,控制最小二乘法的收敛条件。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)