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

简介: 机器学习测试笔记(18)——降维(上)

1.降维解决能问题


降维解决能问题:

  1. 缓解维度灾难问题;
  2. 压缩数据的同时让信息损失最小化;
  3. 理解低维度更容易。

有些特征的意义不大,可以通过降维来解决

2. 主生成分析


2.1 概念

主生成分析(Principal CpmponentAnalysis:PCA)。无监督线性降维,用于数据压缩、消除冗余和消除噪音。


image.png


对图书价格关注程度不是很重要,可以通过成分1——成分2进行降维。

image.png


映射到蓝色后方差最小。


2.2数学意义

X= [[x11x12 x13…x1p],

   [x21 x22 x23…x2p],

    …

   [xn1 xn2 xn3…xnp]]

 = [x1 x2 x3…xp]

其中xj=[x1j x2j…xnj] ( j=1,2,3,…,p)

主成分分析就是将P个观测变量综合成为P个新的变量(综合变量),即:

F1 =a11x1+a12x2+…+a1pxp

F2 =a21x1+a22x2+…+a2pxp

Fp =ap1x1+ap2x2+…+appxp

简写

Fj =aj1x1+aj2x2+…+ajpxp(j=1,2,3,…,p )

Fi Fj互不相关(i                             j,i,j= 1,2,3,…,p )

F1的方差 > F2的方差> … > Fp的方差

称为第一主成分F1,为第二主成分F2p主成分Fp

2.3代码

通过from sklearn.decomposition.PCA方法来实现。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn import datasets
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
#对红酒降维PCA可视化
def dimension_reduction_for_wine_pca():
        scaler =StandardScaler()
        wine =datasets.load_wine()
        X = wine.data
        y = wine.target
#由于是无监督学习,所以尽对X进行拟合
        X_scaled =scaler.fit_transform(X)
# 打印处理后的数据形态
        print("处理后的数据形态:",X_scaled.shape)


输出


处理后的数据形态: (178, 13)


降维前有178个样本13个特征。

 

# 进行PCA处理
    pca = PCA(n_components=2)#降到2类
    pca.fit(X_scaled)
    X_pca =pca.transform(X_scaled)
# 打印主成分提取后的数据形态
print("主成分提取后的数据形态:", X_pca.shape)


输出


主成分提取后的数据形态: (178, 2)


降维前13个特征减少到2个。


# 将3个分类主成分提取出来
x0 = x_pca[wine.target==0]
    x1 = x_pca[wine.target==1]
    x2 = x_pca[wine.target==2]
#绘制散点图
   plt.scatter(x0[:,0],x0[:,1],c='r',s=60,edgecolor='k')
   plt.scatter(x1[:,0],x1[:,1],c='g',s=60,edgecolor='k')
   plt.scatter(x2[:,0],x2[:,1],c='b',s=60,edgecolor='k')
#设置图注
   plt.legend(wine.target_names,loc='best')
    plt.xlabel('component 1')
    plt.ylabel('component 2')
    plt.show()

image.png


#使用主成分绘制热度图
   plt.matshow(pca.components_,cmap='plasma')
#纵轴为主成分
   plt.yticks([0,1],['component 1','component 2'])
    plt.colorbar()
#横轴为原始特征向量
   plt.xticks(range(len(wine.feature_names)),wine.feature_names,rotation=60,ha='left')
    plt.show()

image.png

-0.5~0.4,设计到13个特性,数字为正数,与主特征正相关;否则负相关。


2.4特征提取

from sklearn.neural_network import MLPClassifier
#特征提取
def pca_for_face():
        faces = datasets.fetch_lfw_people(min_faces_per_person=20,resize=0.8)
        image_shape =faces.images[0].shape
#把照片打印出来
        fig, axes =plt.subplots(3,4,figsize=(12,9),subplot_kw={'xticks':(),'yticks':()})
for target,image,ax inzip(faces.target,faces.images,axes.ravel()):
                ax.imshow(image,cmap=plt.cm.gray)
               ax.set_title(faces.target_names[target])
        plt.show()


注意:第一次运行前,可以从第三方网站下载到C:\Users\\scikit_learn_data\lfw_home。可以加快速度。

image.png


#用神经网络模型进行训练
       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)
       mlp.fit(X_train,y_train)
print("模型识别准确率:{:.2%}".format(mlp.score(X_test,y_test)))
#使用白化功能处理人脸数据
        pca =PCA(whiten=True,n_components=0.9,random_state=62).fit(X_train)
        X_train_whiten =pca.transform(X_train)
        X_test_whiten =pca.transform(X_test)
print("白化后数据形态:{}".format(X_train_whiten.shape))
#使用白化后的神经网络训练
       mlp.fit(X_train_whiten,y_train)
print("白化后模型识别准确率:{:.2%}".format(mlp.score(X_test_whiten,y_test)))


输出

模型识别准确率:53.84%
白化后数据形态:(2267, 105)
白化后模型识别准确率:57.14%


如此快的时间内,准确率达到53.84%已经很不错了。

目录
打赏
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
机器学习算法的优化与改进:提升模型性能的策略与方法

热门文章

最新文章

  • 1
    小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
    136763
  • 2
    3天功能开发→3小时:通义灵码2.0+DEEPSEEK实测报告,单元测试生成准确率92%的秘密
    73
  • 3
    Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
    21
  • 4
    基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
    9
  • 5
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    70
  • 6
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
    22
  • 7
    「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
    10
  • 8
    用户说 | 通义灵码2.0,跨语言编码+自动生成单元测试+集成DeepSeek模型且免费使用
    59
  • 9
    以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
    12
  • 10
    AxBench:斯坦福大学推出评估语言模型控制方法的基准测试框架
    2
  • AI助理

    你好,我是AI助理

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