用鸢尾花数据实现线性判别分析,将数据投影到2维,画图展示数据分布·
时间: 2024-10-14 20:06:02 浏览: 43
在Python中,我们可以使用scikit-learn库中的Iris数据集来实现线性判别分析(Linear Discriminant Analysis,LDA)。首先,我们需要导入所需的库并加载数据:
```python
from sklearn.datasets import load_iris
import numpy as np
import matplotlib.pyplot as plt
# 加载鸢尾花数据
iris = load_iris()
X = iris.data
y = iris.target
# 将分类变量转换为数值以便处理
le = preprocessing.LabelEncoder()
y = le.fit_transform(y)
# 对数据进行预处理,例如归一化
X = StandardScaler().fit_transform(X)
```
然后,我们使用`sklearn.decomposition.LinearDiscriminantAnalysis`进行二维投影,并对数据进行分类:
```python
lda = LinearDiscriminantAnalysis(n_components=2)
X_projected = lda.fit_transform(X, y)
# 创建一个新的DataFrame,包含降维后的特征和类别标签
df = pd.DataFrame(np.c_[X_projected, y], columns=['Dimension1', 'Dimension2', 'Species'])
# 绘制散点图,颜色表示不同的鸢尾花种类
plt.figure(figsize=(8,6))
plt.scatter(df['Dimension1'], df['Dimension2'], c=df['Species'])
plt.xlabel('Dimension 1')
plt.ylabel('Dimension 2')
plt.title('LDA Projection of Iris Data')
plt.legend(iris.target_names)
plt.show()
```
通过这个步骤,你就得到了一个2D的图形,其中每个点代表一朵鸢尾花,颜色代表其所属的类别。线性判别分析试图找到最大化类别间差异、最小化类别内差异的方向,使得不同类别的样本尽可能地分开。
阅读全文
相关推荐

















