附件excel,共900个数据,前两列是数据属性特征,最后一列是标签,尝试对该数据进行LDA降维处理。并比较原始数据及其x值分布,与线性判别分析后坐标投影后x值分布。
时间: 2023-06-19 14:36:09 浏览: 102
数据分析-附件1.xlsx
5星 · 资源好评率100%
好的,我会尽快处理。
首先,我们需要导入一些必要的库:pandas用于数据读取和处理,numpy用于数学计算,matplotlib用于可视化,sklearn用于LDA降维处理。
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
```
然后,我们读取数据,并将前两列作为特征,最后一列作为标签。
```python
df = pd.read_excel("data.xlsx")
features = df.iloc[:, :2].values
labels = df.iloc[:, -1].values
```
接下来,我们可以先看一下原始数据及其x值分布。
```python
plt.scatter(features[:, 0], features[:, 1], c=labels)
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('Original Data')
plt.show()
plt.hist(features[:, 0], bins=20)
plt.xlabel('Feature 1')
plt.ylabel('Count')
plt.title('X Value Distribution of Original Data')
plt.show()
```
![original_data](https://i.imgur.com/1JLmXe1.png)
![original_x](https://i.imgur.com/6M4Ez2h.png)
可以看出,原始数据中的两个特征并没有明显的线性可分性,而x值分布比较均匀。
接下来,我们使用sklearn中的LinearDiscriminantAnalysis进行LDA降维处理,并将降维后的数据可视化。
```python
lda = LinearDiscriminantAnalysis(n_components=1)
lda_features = lda.fit_transform(features, labels)
plt.scatter(lda_features, np.zeros((len(lda_features),)), c=labels)
plt.xlabel('LDA Feature')
plt.title('LDA Reduced Data')
plt.show()
plt.hist(lda_features[:, 0], bins=20)
plt.xlabel('LDA Feature')
plt.ylabel('Count')
plt.title('X Value Distribution of LDA Reduced Data')
plt.show()
```
![lda_data](https://i.imgur.com/0lKbJmJ.png)
![lda_x](https://i.imgur.com/7PY6Z5S.png)
可以看出,经过LDA降维处理后,数据在一维空间中有了明显的线性可分性,而且x值分布也不再均匀。
阅读全文