如何做镜像别人网站,购物网站建设得背景,西安做网站的工资怎么样啊,服务器和域名大概需要多少钱目录 1. 作者介绍2. LDA降维算法2.1 基本概念2.2 算法流程 3. LDA算法实现3.1 数据集介绍3.2 代码实现3.3 结果展示 1. 作者介绍
唐杰#xff0c;男#xff0c;西安工程大学电子信息学院#xff0c;2022级研究生 研究方向#xff1a;机器视觉与人工智能 电子邮件#xff… 目录 1. 作者介绍2. LDA降维算法2.1 基本概念2.2 算法流程 3. LDA算法实现3.1 数据集介绍3.2 代码实现3.3 结果展示 1. 作者介绍
唐杰男西安工程大学电子信息学院2022级研究生 研究方向机器视觉与人工智能 电子邮件3225033259qq.com
陈梦丹女西安工程大学电子信息学院2022级硕士研究生张宏伟人工智能课题组 研究方向机器视觉与人工智能 电子邮件1169738496qq.com
2. LDA降维算法
2.1 基本概念
线性判别分析Linear Discriminant AnalysisLDA是一种经典的降维方法。和主成分分析PCA不考虑样本类别输出的无监督降维技术不同LDA是一种监督学习的降维技术数据集的每个样本有类别输出。
LDA分类思想多维空间中数据处理分类问题较为复杂LDA算法将多维空间中的数据投影到一条直线上将d维数据转化成1维数据进行处理。对于训练数据设法将多维数据投影到一条直线上同类数据的投影点尽可能接近异类数据点尽可能远离。对数据进行分类时将其投影到同样的这条直线上再根据投影点的位置来确定样本的类别。
如果用一句话概括LDA思想即“投影后类内方差最小类间方差最大”。
2.2 算法流程
LDA算法流程如下
3. LDA算法实现
3.1 数据集介绍
Iris数据集的中文名是安德森鸢尾花卉数据集英文全称是Anderson’s Iris data set。Iris包含150个样本对应数据集的每行数据。每行数据包含每个样本的四个特征和样本的类别信息所以Iris数据集是一个150行5列的二维表。
通俗地说Iris数据集是用来给花做分类的数据集每个样本包含了花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征前4列我们需要建立一个分类器分类器可以通过样本的四个特征来判断样本属于山鸢尾、变色鸢尾还是维吉尼亚鸢尾这三个名词都是花的品种。
Iris的每个样本都包含了品种信息即目标属性第5列也叫target或label。如下所示
3.2 代码实现
import numpy as np
from sklearn.datasets import load_iris
from sklearn.preprocessing import MinMaxScaler
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt2# 定义LDA类
class LDA:def __init__(self, n_components2, kernelrbf, gamma400):self.n_components n_componentsself.kernel kernelself.gamma gammadef fit(self, X, y):# 计算内部和外部类别散度矩阵X_mean np.mean(X, axis0)S_W np.zeros((X.shape[1], X.shape[1]))S_B np.zeros((X.shape[1], X.shape[1]))for i in range(3):X_class X[y i, :]X_class_mean np.mean(X_class, axis0)S_W np.dot((X_class - X_class_mean).T, (X_class - X_class_mean))S_B len(X_class) * np.dot((X_class_mean - X_mean).reshape(-1, 1), (X_class_mean - X_mean).reshape(1, -1))# 使用LDA算法计算投影矩阵Weig_val, eig_vec np.linalg.eig(np.dot(np.linalg.inv(S_W), S_B))idx np.argsort(-eig_val.real)self.W eig_vec[:, idx[:self.n_components]]# 归一化处理scaler MinMaxScaler()self.W scaler.fit_transform(self.W)def transform(self, X):# 投影到特征空间X_new np.dot(X, self.W)# 归一化处理scaler MinMaxScaler()X_new scaler.fit_transform(X_new)return X_new# 加载数据集
iris load_iris()
X iris.data
y iris.target# 模型训练
lda LDA(n_components2, kernelrbf)
lda.fit(X, y)# 数据转换
X_new lda.transform(X)# 可视化降维前的数据分布
plt.scatter(X[:, 0], X[:, 1], cy)
plt.show()# 可视化降维后的数据分布
plt2.scatter(X_new[:, 0], X_new[:, 1], cy)
plt2.show()3.3 结果展示
运行结果如下
图一 鸢尾花数据集前两维分布图 图二 降维后数据分布图