写一个线性判别分析(Linear Discriminant Analysis的python代码
时间: 2024-01-21 22:01:52 浏览: 162
linear-discriminant-analysis-python:在python中进行线性判别分析
好的,下面是一个简单的线性判别分析的 Python 代码:
```python
import numpy as np
class LinearDiscriminantAnalysis():
def __init__(self):
self.w = None
def fit(self, X, y):
n_features = X.shape[1]
class_labels = np.unique(y)
mean_overall = np.mean(X, axis=0)
Sw = np.zeros((n_features, n_features))
Sb = np.zeros((n_features, n_features))
for c in class_labels:
X_c = X[y == c]
mean_c = np.mean(X_c, axis=0)
Sw += (X_c - mean_c).T.dot(X_c - mean_c)
n_c = X_c.shape[0]
mean_diff = (mean_c - mean_overall).reshape(n_features, 1)
Sb += n_c * (mean_diff).dot(mean_diff.T)
self.w = np.linalg.inv(Sw).dot(Sb).dot(mean_diff)
def predict(self, X):
projection = X.dot(self.w)
return projection
```
其中,fit 函数用于训练模型,传入的参数 X 是一个二维的 numpy 数组,表示特征矩阵;y 是一个一维的 numpy 数组,表示每个样本对应的标签。predict 函数用于预测,传入的参数 X 是一个二维的 numpy 数组,表示特征矩阵,返回的是一个一维的 numpy 数组,表示每个样本的预测结果。
阅读全文