实现线性判别分析,计算投影向量 𝐰 和投影后数据 𝐙 python代码
时间: 2024-05-14 13:15:50 浏览: 21
好的,以下是实现线性判别分析,计算投影向量 𝐰 和投影后数据 𝐙 的 Python 代码:
```python
import numpy as np
# 构造数据集
X = np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]])
y = np.array([1, 1, -1, -1])
# 计算均值向量
mean_1 = X[y == 1].mean(axis=0)
mean_2 = X[y == -1].mean(axis=0)
# 计算类内散度矩阵
S_w = np.zeros((3, 3))
for xi in X[y == 1]:
S_w += (xi - mean_1).reshape(-1, 1) @ (xi - mean_1).reshape(1, -1)
for xi in X[y == -1]:
S_w += (xi - mean_2).reshape(-1, 1) @ (xi - mean_2).reshape(1, -1)
# 计算投影向量
w = np.linalg.inv(S_w) @ (mean_1 - mean_2)
# 投影后数据
Z = X @ w
```
在以上代码中,我们首先构造了一个 4x3 的数据集 X,其中每行表示一个样本,每列表示一个特征。同时,我们还构造了一个长度为 4 的标签向量 y,表示每个样本的类别,1 表示正类,-1 表示负类。
接下来,我们计算了两个类别的均值向量 mean\_1 和 mean\_2,以及类内散度矩阵 S\_w。最后,我们使用投影向量 w,将数据集 X 投影后得到了 Z。
希望能够满足您的需求,如果您还有其他问题,可以随时问我。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)