机器学习测试笔记(18)——降维(下)

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 机器学习测试笔记(18)——降维(下)

3.非负矩阵分解


3.1 概念

非负矩阵分解(Non-Negative Matrix Factorization : NMF)

矩阵分解:一个矩阵A分解为A=B1*B2**Bn

非负矩阵分解:矩阵分解,矩阵A B1Bn中元素均为非负。

image.png


3.2 代码

通过fromsklearn.decomposition.NMF方法来实现。

from sklearn.decomposition import NMF
def nmf_for_face():
        faces =datasets.fetch_lfw_people(min_faces_per_person=20,resize=0.8)
#用NMF模型进行模拟
       X_train,X_test,y_train,y_test =train_test_split(faces.data/255,faces.target,random_state=62)
        mlp =MLPClassifier(hidden_layer_sizes=[100,100],random_state=62,max_iter=400)
        nmf = NMF(n_components=105,random_state=62).fit(X_train)#NMF中n_components不支持浮点数
        X_train_nmf =nmf.transform(X_train)
        X_test_nmf =nmf.transform(X_test)
        print("NMF处理后数据形态:{}".format(X_train_nmf.shape))
#用神经网络模型进行训练
       mlp.fit(X_train_nmf,y_train)
        print("NMF训练后模型识别准确率:{:.2%}".format(mlp.score(X_test_nmf,y_test)))


输出

NMF处理后数据形态:(2267,105)
NMF训练后模型识别准确率:56.22%


NMF的效果比PCA略差


4. 线性判别分析


4.1 概念

线性判别分析(Linear DiscriminantAnalysis: LDA)。是有监督降维,寻找降维矩阵,投影后同类数据尽可能聚集在一起,不同类分开明显。这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”


image.png


4.2 代码

通过sklearn.discriminant_analysis.LinearDiscriminantAnalysis方法来实现。


from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.neighbors import KNeighborsClassifier,NeighborhoodComponentsAnalysis
from sklearn.pipeline import make_pipeline
def my_LinearDiscriminantAnalysis():
n_neighbors = 3
random_state = 0
    # 加载数字数据集
X, y =datasets.load_digits(return_X_y=True)
    # 分离测试/训练集
X_train, X_test, y_train,y_test =
train_test_split(X, y,test_size=0.5, stratify=y,random_state=random_state)
dim = len(X[0])
n_classes =len(np.unique(y))
    #用PCA将维数降为2
pca = make_pipeline(StandardScaler(),PCA(n_components=2,random_state=random_state)
# 使用线性判别分析将维度缩减为2
lda =make_pipeline(StandardScaler(),LinearDiscriminantAnalysis(n_components=2)
# 使用最近邻分类器来评估这些方法
knn =KNeighborsClassifier(n_neighbors=n_neighbors)
    # 列出要比较的方法
dim_reduction_methods =[('PCA', pca), ('LDA', lda)]
for i, (name, model) inenumerate(dim_reduction_methods):
plt.figure()
       # 拟合方法的模型
model.fit(X_train,y_train)
       # 在嵌入的训练集上拟合最近邻分类器
knn.fit(model.transform(X_train), y_train)
       # 计算嵌入测试集的最近邻精度
acc_knn =knn.score(model.transform(X_test), y_test)
       # 使用拟合模型在二维中嵌入数据集
X_embedded =model.transform(X)
       # 绘制投影点并显示评估分数
plt.scatter(X_embedded[:, 0], X_embedded[:, 1], c=y, s=30, cmap='Set1')
plt.title("{}, KNN(k={})\nTest accuracy = {:.2f}".format(name, n_neighbors,acc_knn))
plt.show()

image.png


5. LDA与PCA比较


5.1 LDA与PCA比较


思考方向

PCA

LDA

思想

从协方差角度出发

从分类标签角度出发

学习模型

无监督

有监督

降维后可用维度

最大可选择全部维度

C-1维,C表示标签数。与原始维度无关


5.2LDAPCA选择

image.png


5.3图形比较

image.png

—————————————————————————————————


软件安全测试

https://study.163.com/course/courseMain.htm?courseId=1209779852&share=2&shareId=480000002205486

接口自动化测试

https://study.163.com/course/courseMain.htm?courseId=1209794815&share=2&shareId=480000002205486

DevOps 和Jenkins之DevOps

https://study.163.com/course/courseMain.htm?courseId=1209817844&share=2&shareId=480000002205486

DevOps与Jenkins 2.0之Jenkins

https://study.163.com/course/courseMain.htm?courseId=1209819843&share=2&shareId=480000002205486

Selenium自动化测试

https://study.163.com/course/courseMain.htm?courseId=1209835807&share=2&shareId=480000002205486

性能测试第1季:性能测试基础知识

https://study.163.com/course/courseMain.htm?courseId=1209852815&share=2&shareId=480000002205486

性能测试第2季:LoadRunner12使用

https://study.163.com/course/courseMain.htm?courseId=1209980013&share=2&shareId=480000002205486

性能测试第3季:JMeter工具使用

https://study.163.com/course/courseMain.htm?courseId=1209903814&share=2&shareId=480000002205486

性能测试第4季:监控与调优

https://study.163.com/course/courseMain.htm?courseId=1209959801&share=2&shareId=480000002205486

Django入门

https://study.163.com/course/courseMain.htm?courseId=1210020806&share=2&shareId=480000002205486

啄木鸟顾老师漫谈软件测试

https://study.163.com/course/courseMain.htm?courseId=1209958326&share=2&shareId=480000002205486


相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
打赏
0
0
0
0
310
分享
相关文章
一个测试工程师的实战笔记:我是如何在Postman和Apipost之间做出选择的?
优秀的API测试工具应该具备: 分层设计:既有可视化操作,也开放代码层深度定制 场景感知:自动识别加密需求推荐处理方案 协议包容:不强迫开发者为了不同协议切换工具 数据主权:允许自主选择数据存储位置
22 7
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
76 6
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
54 1
自动化测试的未来:AI与机器学习的融合之路
【10月更文挑战第41天】随着技术的快速发展,软件测试领域正经历一场由人工智能和机器学习驱动的革命。本文将探讨这一趋势如何改变测试流程、提高测试效率以及未来可能带来的挑战和机遇。我们将通过具体案例分析,揭示AI和ML在自动化测试中的应用现状及其潜力。
85 0
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
241 1
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
114 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
282 0
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
207 6
基于机器学习的人脸识别算法matlab仿真,对比GRNN,PNN,DNN以及BP四种网络
本项目展示了人脸识别算法的运行效果(无水印),基于MATLAB2022A开发。核心程序包含详细中文注释及操作视频。理论部分介绍了广义回归神经网络(GRNN)、概率神经网络(PNN)、深度神经网络(DNN)和反向传播(BP)神经网络在人脸识别中的应用,涵盖各算法的结构特点与性能比较。
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
352 13
机器学习算法的优化与改进:提升模型性能的策略与方法

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等