线性判别分析是一种经典的线性分类方法,将高维空间投射到低维空间,如下图。
LDA 的目标就是简单累内距离变小,把类间的距离变大,这样就可以把相似的数据聚集在一起。
u1 和 u2 类间距离,S1、S2 为类内数据点之间的距离,目标是最大化上面公式。
本文将使用 Sklearn 实现 LDA。
数据准备
Iris 数据集
from sklearn import datasets
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_splitdata = datasets.load_iris()
X = data.data
y = data.target
print(X.shape, y.shape)
LDA 实现分类
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.metrics import accuracy_score
clf = LinearDiscriminantAnalysis()
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(accuracy)