- 浏览: 496251 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (502)
- Java (70)
- Linux (10)
- 数据库 (38)
- 网络 (10)
- WEB (13)
- JSP (4)
- 互联网 (71)
- JavaScript (30)
- Spring MVC (19)
- HTML (13)
- CSS (3)
- AngularJS (18)
- Redis (5)
- Bootstrap CSS (1)
- ZooKeeper (4)
- kafka (6)
- 服务器缓存 (4)
- Storm (1)
- MongoDB (9)
- Spring boot (16)
- log4j (2)
- maven (3)
- nginx (5)
- Tomcat (2)
- Eclipse (4)
- Swagger (2)
- Netty (5)
- Dubbo (1)
- Docker (7)
- Hadoop (12)
- OAuth (1)
- webSocket (4)
- 服务器性能 (7)
- Session共享 (1)
- tieye修改 (1)
- 工作 (1)
- 有用的语录 (0)
- https (2)
- common (5)
- 产品开发管理 (1)
- CDN 工作原理 (1)
- APNS、GCM (1)
- 架构图 (3)
- 功能实现分析 (1)
- JMX (1)
- 服务器相关操作命令 (1)
- img02 (0)
- 服务器环境搭建 (9)
- goodMenuBook (1)
- CEInstantPot (0)
- 有用数据 (1)
- 百度地图WEB API (2)
- 正则表达式 (1)
- 样式例子 (2)
- staticRecipePressureCooker.zip (1)
- jCanvas (1)
- 网站攻击方法原理 (1)
- 架构设计 (3)
- 物联网相关 (3)
- 研发管理 (7)
- 技术需求点 (1)
- 计划 (1)
- spring cloud (11)
- 服务器开发的一些实用工具和方法 (1)
- 每天学到的技术点 (4)
- Guava (1)
- ERP 技术注意要点 (2)
- 微信小程序 (1)
- FineRepor (1)
- 收藏夹 (1)
- temp (5)
- 服务架构 (4)
- 任职资格方案 (0)
- osno_test (1)
- jquery相关 (3)
- mybatis (4)
- ueditor (1)
- VueJS (7)
- python (10)
- Spring EL (1)
- shiro (1)
- 前端开发原理与使用 (7)
- YARN (1)
- Spark (1)
- Hbase (2)
- Pig (2)
- 机器学习 (30)
- matplotlib (1)
- OpenCV (17)
- Hystrix (1)
- 公司 (1)
- miniui (4)
- 前端功能实现 (3)
- 前端插件 (1)
- 钉钉开发 (2)
- Jenkins (1)
- elasticSearch使用 (2)
- 技术规范 (4)
- 技术实现原理 (0)
最新评论
LDA降维和分类
LDA可以降维和分类
LinearDiscriminantAnalysis(LDA):
就是将多维的样本数据集映射到一个坐标轴上(可以是多维的(以降维作为目的)),使得样本数据可以在这个坐标轴上就可以进行分类,和最小的类内距离,投影后使样本在新的子空间有最大的类间距离即样本在该空间中有最佳的可分离性。(即用这个坐标系就可以进行样本分类了,以达到计算简单,减小计算时间)
分类前的降维
LDA降维:是为了在坐标轴上的同类更集中,异类更分散
LDA可以降维和分类
LinearDiscriminantAnalysis(LDA):
就是将多维的样本数据集映射到一个坐标轴上(可以是多维的(以降维作为目的)),使得样本数据可以在这个坐标轴上就可以进行分类,和最小的类内距离,投影后使样本在新的子空间有最大的类间距离即样本在该空间中有最佳的可分离性。(即用这个坐标系就可以进行样本分类了,以达到计算简单,减小计算时间)
分类前的降维
LDA降维:是为了在坐标轴上的同类更集中,异类更分散
# coding=utf-8 import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn import datasets from sklearn.discriminant_analysis import LinearDiscriminantAnalysis import numpy as np def main(): np.random.seed(0) # 设置随机种子,不设置的话默认是按系统时间作为参数,因此每次调用随机模块时产生的随机数都不一样设置后每次产生的一样 iris = datasets.load_iris() # 导入鸢尾花的数据集,iris是一个类似于结构体的东西,内部有样本数据,如果是监督学习还有标签数据 iris_x = iris.data # 样本数据150*4二维数据,代表150个样本,每个样本4个属性分别为花瓣和花萼的长、宽 iris_y = iris.target # 长150的以为数组,样本数据的标签 indices = np.random.permutation(len(iris_x)) # permutation接收一个数作为参数(150),产生一个0-149一维数组,只不过是随机打乱的,当然她也可以接收一个一维数组作为参数,结果是直接对这个数组打乱 iris_x_train = iris_x[indices[:-10]] # 随机选取140个样本作为训练数据集 iris_y_train = iris_y[indices[:-10]] # 并且选取这140个样本的标签作为训练数据集的标签 iris_x_test = iris_x[indices[-10:]] # 剩下的10个样本作为测试数据集 iris_y_test = iris_y[indices[-10:]] # 降为2维进行分类 lda = LinearDiscriminantAnalysis(n_components=2) lda.fit(iris_x_train, iris_y_train) # 显示训练结果 print("lda.means_") print(lda.means_) # 中心点 print("score") print(lda.score(iris_x_test, iris_y_test)) # score是指分类的正确率 print("lda.scalings_") print(lda.scalings_) # score是指分类的正确率 X_2d_test = lda.transform(iris_x_test) print("X_2d_test") print(X_2d_test) # score是指分类的正确率 # 降维后进行训练 X_2d = lda.transform(iris_x_train) # 现在已经降到二维X_2d=np.dot(X-lda.xbar_,lda.scalings_) lda.fit(X_2d, iris_y_train) # 降维后预测 predict_y = lda.predict(X_2d_test) print("predict_y") print(predict_y) # # [1 2 1 0 0 0 2 1 2 0] print("iris_y_test") print(iris_y_test) # # [1 1 1 0 0 0 2 1 2 0] # # 对于二维数据,我们做个可视化 # # 区域划分 # # lda.fit(X_2d, iris_y_test) h = 0.02 # 得到最大值和最小值 x_min, x_max = X_2d[:, 0].min() - 1, X_2d[:, 0].max() + 1 y_min, y_max = X_2d[:, 1].min() - 1, X_2d[:, 1].max() + 1 # 网格数据 xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) predict_x = np.c_[xx.ravel(), yy.ravel()] print("predict_x") print(predict_x) # Z = lda.predict(predict_x) print("Z") print(Z) # # [2 2 2... 0 0 0] #变为与XX的维数相同 Z = Z.reshape(xx.shape) print("Z") print(Z) # # contour和contourf都是画三维等高线图的,不同点在于contourf会对等高线间的区域进行填充, plt.contourf(xx, yy, Z, cmap=plt.cm.Paired) # # 做出原来的散点图 class1_x = X_2d[iris_y_train == 0, 0]#得到iris_y_train == 0的数组X,布尔索引 class1_y = X_2d[iris_y_train == 0, 1]#得到iris_y_train == 0的数组Y l1 = plt.scatter(class1_x, class1_y, color='b', label=iris.target_names[0]) class1_x = X_2d[iris_y_train == 1, 0] class1_y = X_2d[iris_y_train == 1, 1] l2 = plt.scatter(class1_x, class1_y, color='y', label=iris.target_names[1]) class1_x = X_2d[iris_y_train == 2, 0] class1_y = X_2d[iris_y_train == 2, 1] l3 = plt.scatter(class1_x, class1_y, color='r', label=iris.target_names[2]) plt.legend(handles=[l1, l2, l3], loc='best') plt.grid(True) plt.show() if __name__ == '__main__': main()
# coding=utf-8 import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn import datasets from sklearn.discriminant_analysis import LinearDiscriminantAnalysis import numpy as np def main(): data=np.array([[1,1],[2,2],[1.5,1.5],[3,3],[2,3],[1,5]]) X = data[:, 0].reshape(-1, 1) # 将array转换成矩阵(变成n行1列) y = data[:, 1].reshape(-1, 1) print("X=", X) print("y=", y) # 画相关的点 plt.plot(X, y, "b.") plt.xlabel('X') plt.ylabel('y') plt.show() z_train = [0,0,0,1,1,1] lda = LinearDiscriminantAnalysis(n_components=2) lda.fit(data, z_train) predict_y = lda.predict([[2,1.5]]) print('predict_y', predict_y) # 中心点 train_lda_X = lda.transform(data) print("train_lda_X ", train_lda_X) print("截距: ", lda.intercept_) print("系数: ", lda.coef_) # 显示训练结果 # print(lda.means_) # 中心点 # print(lda.score(X_test, Y_test)) # score是指分类的正确率 # print(lda.scalings_) # score是指分类的正确率 # predict_y = lda.predict([2,1.5]) # print("predict_y: ", predict_y) if __name__ == '__main__': main()
发表评论
-
SVM 支持向量机
2018-11-02 17:28 355SVM 支持向量机(support vector machin ... -
Pandas 基础
2018-10-21 15:34 528Pandas 基础 Pandas处理 ... -
霍夫变换
2018-10-20 11:08 758霍夫变换 霍夫变换是一种特征检测(feature extra ... -
图像对比的方法和原理分析
2018-10-19 16:35 8657图像对比的方法和原理分析 https://blog.csdn ... -
识别手写数字 原理分析
2018-10-18 15:38 3452识别手写数字 原理分析 要识别0-9这10个数字 首先 ... -
Viola-Jones 人脸检测算法解析
2018-10-15 16:12 3221Viola-Jones 人脸检测算法解析 在计算机视觉领域中 ... -
灰度图像--形态学处理(腐蚀,膨胀,开、闭运算)
2018-10-12 17:31 8899灰度图像--形态学处理(腐蚀,膨胀,开、闭运算) http ... -
tesseract应用
2018-10-12 14:05 527tesseract应用 from PIL impo ... -
卷积神经网络(CNN)
2018-10-11 17:33 776卷积神经网络(CNN) CNN基本模块 CNN由输入和输出 ... -
python3光学字符识别模块tesserocr与pytesseract
2018-10-11 11:02 1510python3光学字符识别模块tesserocr与pytess ... -
LBP原理介绍以及算法实现(局部二值模式)
2018-10-10 17:54 2489LBP原理介绍以及算法实 ... -
sklearn 神经网络
2018-10-10 10:49 955sklearn 神经网络 https://blog.csdn ... -
神经网络学习 之 M-P模型
2018-10-09 16:58 2443神经网络学习 之 M-P模型 这种“阈值加权和”的神经元模 ... -
图片滤波
2018-10-09 11:37 779图片滤波,就是过滤去一些图片中的小点,或增强一些点,取决于滤波 ... -
灰度直方图均衡化与直方图规定化
2018-10-09 11:30 1197灰度直方图 灰度直方 ... -
图像的灰度化
2018-10-09 11:14 883图像的灰度化 而灰度图像是R、G、B三个分量相同的一种特殊的 ... -
决策树
2018-10-08 22:04 327决策树 树形模型是一个一个特征进行处理,之前线性模型是所有 ... -
人脸识别原理
2018-10-08 17:03 2085人脸识别原理 在检测 ... -
KNN 分类算法
2018-10-07 09:30 1901KNN 分类算法 KNN(K近邻) ... -
机器学习相关的库
2018-09-30 15:03 344机器学习相关的库 PIL:Python Imaging L ...
相关推荐
- **预处理步骤**:在分类和回归任务中作为预处理步骤,提高模型性能。 - **模式识别**:在图像识别、文本分类等任务中,LDA可以帮助提取关键特征。 **5. LDA与PCA(主成分分析)的对比** 虽然PCA也是常见的降维...
LDA降维的过程通常包括以下几个步骤: 1. **计算均值**:首先,我们需要计算每个类别的样本均值。 2. **计算协方差**:接着,计算总体协方差矩阵或类内协方差矩阵,这取决于我们是执行线性判别还是降维。 3. **求解...
- `Jonathan Huang`可能包含一个完整的LDA降维程序,包括数据读取、预处理、LDA算法实现以及结果可视化等步骤。具体代码细节需要查看文件内容才能了解。 - 通常,一个简单的LDA实现可能会包括以下结构: ```...
为了解决上述挑战,研究者们提出了降维后的LDA方法,即先通过主成分分析(Principal Component Analysis,简称PCA)进行降维,再在降维后的空间中应用LDA进行特征提取和分类。PCA是一种无监督的降维技术,它能够找到...
3.用处:用于PCA和LDA降维特征提取算法编程学习 4.指向人群:本硕博等教研学习使用 5.运行注意事项: 使用matlab2021a或者更高版本测试,运行里面的Runme_.m文件,不要直接运行子函数文件。运行时注意matlab左侧...
MATLAB平台下的这个工具包提供了一个便捷的接口,让用户能够轻松地实现PCA和LDA降维。它可能包括预处理函数(如数据标准化)、降维函数(PCA和LDA实现)、可视化工具(帮助理解降维结果)以及评估指标(如分类准确率...
综合来看,PCA适用于线性关系显著的数据,而LLE和LDA在处理非线性数据时更有优势,LLE尤其适用于保持数据的局部结构,LDA则更注重分类性能。在实际应用中,选择哪种降维方法应根据具体的数据特性和任务需求来决定。...
人脸表情/微表情识别,毕设作品。使用gabor滤波,pca+lda降维,svm分类。图形界面使用pyqt。libSVM经过重新编译,可通过设置全局变量OMP_NUM_THREADS来使用多线程训练模型。
本资源是机器学习常见方法LDA(线性判别分析)的源码,其主要功能类似于PCA,都属于降维算法。本次实现是依托于项目工程,裁剪掉了图像预处理特征提取部分,是降维算法在分类问题上的一次实现,为Matlab代码实现
- LDA处理:使用PCA得到的特征向量,进一步进行LDA降维,以增强类别间的区分度。 - 构建模型:基于TensorFlow创建分类模型,可能包括CNN或其他类型的神经网络。 - 训练与验证:使用PCA-LDA处理后的数据训练模型,...
2. LDA(线性判别分析):LDA是一种有监督的降维方法,主要应用于分类问题。与PCA不同,LDA的目标不是最大化方差,而是找到最佳的投影方向,使类间距离最大化,类内距离最小化,从而提高分类效果。LDA假设数据服从...
LDA,全称为Linear Discriminant Analysis,其主要目的是通过线性变换找到能够最大化类间距离同时最小化类内距离的特征空间,从而实现数据的有效降维和分类。 在人脸识别的应用中,2D-LDA通常用于处理二维图像数据...
在ORL人脸数据集上使用PCA和LDA降维后,可以有效地降低计算复杂度,同时保持识别率。在实际应用中,PCA通常用于初步降维,而LDA作为后续的分类器,以实现更好的人脸识别效果。文件名称“PCA人脸识别+ORL人脸数据”...
lda降维matlab代码硅Craft.io SiProcess是图像处理实验室存储库。 在这里,您会发现一些Matlab / Python算法可以对数据进行线性分类。 分类 分类代码导入您的数据(矢量化图像的矩阵),使用进行降维,并使用/分隔...
- **可视化**:可以使用MATLAB的散点图或者主成分分析(PCA)图来直观展示LDA降维后的效果。 3. **`corr_LDA`文件的作用** "corr_LDA"可能是一个MATLAB数据文件,其中包含了计算相关性的LDA结果。在MATLAB中,...
LDA降维后的维度受到类别数限制,最多为k-1维,而PCA没有此限制。此外,LDA不仅可以用于降维,还可用于分类任务,尤其在类别均值差异明显时,LDA的表现优于PCA。 总之,LDA是一种结合了监督信息的降维方法,特别...
在提供的文件"TwoD_LDA.m"中,我们可以预期看到的是一个MATLAB脚本,实现了上述2D LDA的流程,可能包括定义参数、加载ORL数据、执行2D LDA降维以及应用某种分类器进行测试。这个脚本是理解2D LDA如何在实际任务中...
LDA,全称为线性判别分析(Linear Discriminant Analysis),是一种统计方法,常用于特征降维和分类问题。在机器学习领域,LDA被广泛应用于预处理步骤,特别是当数据集具有高维特征时,它能帮助我们找到最优的低维...
pca+lda做特征降维snn分类器对数据进行分类,协同神经网络做模式识别,pca对整体原始数据进行降维处理,然后构造随机子空间分类器snn分类,效果不错
人脸表情/微表情识别,可用于毕设,使用gabor滤波,pca+lda降维,svm分类。图形界面使用pyqt。libSVM经过重新编译,可通过设置全局变量OMP_NUM_THREADS来使用多线程训练模型。 人脸表情/微表情识别,可用于毕设,...