码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 算法金 | 再见,PCA 主成分分析!


    合集 - 机器学习(41)
    1.算法金 | 通透!!十大回归算法模型最强总结05-292.算法金 | 吴恩达:机器学习的六个核心算法!05-303.算法金 | 详解过拟合和欠拟合!性感妩媚 VS 大杀四方05-304.算法金 | 突破最强算法模型,决策树算法!!05-315.算法金 | 突破最强算法模型!!学会随机森林,你也能发表高水平SCI06-016.算法金 | 机器学习模型评价、模型与算法选择(综述)06-027.算法金 | 你真的完全理解 Logistic 回归算法了吗06-03
    8.算法金 | 再见,PCA 主成分分析!06-05
    9.算法金 | 一文读懂K均值(K-Means)聚类算法06-0510.算法金 | 再见!!!KNN06-0611.算法金 | 读者问了个关于深度学习卷积神经网络(CNN)核心概念的问题06-0612.算法金 | 不愧是腾讯,问基础巨细节 。。。06-0713.算法金 | LSTM 原作者带队,一个强大的算法模型杀回来了06-0814.算法金 | AI 基石,无处不在的朴素贝叶斯算法06-1015.算法金 | A - Z,115 个数据科学 机器学习 江湖黑话(全面)06-2416.算法金 | 一文彻底理解机器学习 ROC-AUC 指标06-1117.算法金 | 一个强大的算法模型,多项式回归!!06-1218.算法金 | 一个强大的算法模型,GP !!06-1319.算法金 | 再见!!!K-means06-1420.算法金 | 选择最佳机器学习模型的 10 步指南06-1521.算法金 | 一文看懂人工智能、机器学习、深度学习是什么、有什么区别!06-1622.李沐:用随机梯度下降来优化人生!06-1723.算法金 | 一个强大的算法模型:t-SNE !!06-1824.算法金 | 再见!!!梯度下降(多图)06-1925.审稿人:拜托,请把模型时间序列去趋势!!06-2026.算法金 | 奇奇怪怪的正则化06-2127.算法金 | 统计学的回归和机器学习中的回归有什么差别?06-2228.算法金 | K-均值、层次、DBSCAN聚类方法解析06-2329.算法金 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost 算法大全06-2530.资深博导:我以为数据预处理是常识,直到遇到自己的学生06-2631.算法金 | 必会的机器学习评估指标06-2832.算法金 | 协方差、方差、标准差、协方差矩阵06-2933.算法金 | 线性回归:不能忽视的五个问题06-3034.算法金 | 欧氏距离算法、余弦相似度、汉明、曼哈顿、切比雪夫、闵可夫斯基、雅卡尔指数、半正矢、Sørensen-Dice07-0235.算法金 | 我最常用的两个数据可视化软件,强烈推荐07-0436.算法金 | 平均数、众数、中位数、极差、方差,标准差、频数、频率 一“统”江湖07-0537.算法金 | 一个强大的算法模型,GPR !!07-0638.算法金 | 推导式、生成器、向量化、map、filter、reduce、itertools,再见 for 循环07-0739.算法金 | 时间序列预测真的需要深度学习模型吗?是的,我需要。不,你不需要?07-0840.算法金 | 最难的来了:超参数网格搜索、贝叶斯优化、遗传算法、模型特异化、Hyperopt、Optuna、多目标优化、异步并行优化07-0941.算法金 | 这绝对是不一样的,独一无二的逻辑回归算法体验07-16
    收起


    ​大侠幸会,在下全网同名[算法金] 0 基础转 AI 上岸,多个算法赛 Top [日更万日,让更多人享受智能乐趣]

    1. 概念:数据降维的数学方法

    定义

    • 主成分分析(PCA)是一种统计方法,通过正交变换将一组可能相关的变量转换为一组线性不相关的变量,这组新的变量称为主成分。
    • 大白话,PCA能够从数据中提取出最重要的特征,通过减少变量的数量来简化模型,同时保留原始数据集中的大部分信息。

    特点

    • PCA是最广泛使用的数据降维技术之一,能够有效地揭示数据的内部结构,减少分析问题的复杂度。

    应用领域

    • 图像处理:图像压缩和特征提取。
    • 金融数据分析:风险管理、股票市场分析。
    • 生物信息学:基因数据分析、疾病预测。
    • 社会科学研究:问卷数据分析、人口研究。

    2 核心原理:方差最大化

    • 方差最大化:
    • PCA通过找到数据方差最大的方向来确定主成分,然后找到次大方向,且这些方向必须是相互正交的。
    • 这样做的目的是保证降维后的数据能够保留最多的原始数据信息。

    • 计算步骤:
    1. 数据标准化:使得每个特征的平均值为0,方差为1。
    2. 计算协方差矩阵:反映变量之间的相关性。
    3. 计算协方差矩阵的特征值和特征向量:特征向量决定了PCA的方向,特征值决定了方向的重要性。
    4. 选择主成分:根据特征值的大小,选择最重要的几个特征向量,构成新的特征空间。

    3 优缺点分析

    • 优点:
    • 降维效果显著:能够有效地减少数据的维度,同时尽可能地保留原始数据的信息。
    • 揭示数据结构:有助于发现数据中的模式和结构,便于进一步分析。
    • 无需标签数据:PCA是一种无监督学习算法,不需要数据标签。
    • 缺点:
    • 线性限制:PCA只能捕捉到数据的线性关系和结构,对于非线性结构无能为力。
    • 方差并非信息量的唯一衡量:有时候数据的重要性并不仅仅体现在方差上,PCA可能会忽略掉一些重要信息。
    • 对异常值敏感:异常值可能会对PCA的结果产生较大影响。

    4 PCA 实战

    介绍一个用于主成分分析的 Python 库

    PCA的核心是构建在sklearn功能之上,以便在与其他包结合时实现最大的兼容性。

    除了常规的PCA外,它还可以执行SparsePCA和TruncatedSVD。

    其他功能包括:

    • 使用Biplot绘制载荷图
    • 确定解释的方差
    • 提取性能最佳的特征
    • 使用载荷绘制的散点图
    • 使用Hotelling T2和/或SPE/Dmodx进行异常值检测
    pip install pca
    
    
    from pca import pca  # 导入PCA模块
    import numpy as np
    import pandas as pd
    
    # Dataset
    from sklearn.datasets import load_iris  # 导入鸢尾花数据集
    
    # 从鸢尾花数据集中创建DataFrame对象
    X = pd.DataFrame(data=load_iris().data, columns=load_iris().feature_names, index=load_iris().target)
    
    # 初始化PCA模型,指定主成分数量为3,并进行数据标准化
    model = pca(n_components=3, normalize=True)
    
    # 拟合并转换数据
    out = model.fit_transform(X)
    
    # 创建只包含方向的图
    fig, ax = model.biplot(textlabel=True, legend=False, figsize=(10, 6))
    

    下面我们使用 sklearn 里面的 PCA 工具,在一组人脸数据上直观感受下,

    
    # 导入必要的库
    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.datasets import fetch_olivetti_faces
    from sklearn.decomposition import PCA
    
    # 加载Olivetti人脸数据集
    faces_data = fetch_olivetti_faces()
    X = faces_data.data
    
    # 可视化原始图像和对应的主成分
    n_images = 4  # 每行显示的图像数量
    n_rows = 4    # 总共的行数
    
    fig, axes = plt.subplots(n_rows, 2*n_images, figsize=(16, 10), subplot_kw={'xticks':[], 'yticks':[]})
    
    # 使用PCA降维
    n_components = 50  # 设置PCA保留的主成分数量
    pca = PCA(n_components=n_components, whiten=True, random_state=42)
    X_pca = pca.fit_transform(X)
    
    for r in range(n_rows):
        for i in range(n_images):
            index = r * n_images + i
            
            axes[r, 2*i].imshow(X[index].reshape(64, 64), cmap='gray')
            axes[r, 2*i].set_title(f'大侠 {index+1} 图像', fontproperties='SimHei')  # 手动设置字体
    
            axes[r, 2*i+1].imshow(pca.inverse_transform(X_pca[index]).reshape(64, 64), cmap='bone')
            axes[r, 2*i+1].set_title(f'大侠 {index+1} 主成分', fontproperties='SimHei')  # 手动设置字体
    
    plt.tight_layout()
    plt.show()
    

    我们保留了前 50 个主成分

    通过可视化对比图直观感受下,信息保留了多多少,损失了多少

    通过对比图可以看到,某一张人脸的基本信息都保留了下来

    如果保留 前 100 个主成分,那就更接近原始图片了

    你也可以试下,保留 1 个主成分会怎样?通过保留的信息你还认得出来哪过大侠是哪过吗

    [ 算法金,碎碎念 ]

    • 最近 【不上班】 这个词频繁出现在朋友圈,貌似很火
    • 不上班,站着把钱赚了,大概率不可能的
    • 不上班,躺着把钱赚了(别想歪了),更是绝大概率不可能的
    • 有些圈子,天然就是靠博眼球来筛选用户,真的很可怕
    • 想到了一句话【当大家都有病时,你就不觉得这是病了】
    • 在这种圈子呆久了,大概率会沦陷的,别以外自己不会,咱都是普通人
    • 大部分人都是普通人,普通人通常都不信概率,而概率恰恰是反映常态 分布的
    • 悲剧,卒~

    全网同名,日更万日,让更多人享受智能乐趣

    烦请大侠多多 分享、在看、点赞,助力算法金又猛又持久、很黄很 BL 的日更下去;我们一起,让更多人享受智能乐趣

    同时邀请大侠 关注、星标 算法金,围观日更万日,助你功力大增、笑傲江湖

  • 相关阅读:
    前端工程化之小白眼中的前端开发 vs 实际的前端开发
    CSS——过渡、形变、动画
    协议(网络协议)
    Anacode+YOLO识别图片
    C# 自定义控件
    Android开发之应用更新或软件下载
    Vue 3.3 发布
    高性能服务器之Reactor设计
    cos文件上传demo (精简版通用)
    【大数据】Kafka 入门简介
  • 原文地址:https://www.cnblogs.com/suanfajin/p/18230769
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号