机器学习PCA实现

【machine learning】徒手实现PCA——训练篇 最近在休假,没事儿写写总结。年龄大了,本来以前用的很熟,理解很到位的东西,现在一时半会儿却想不出来了。索性有时间做做总结,方便自己,也惠及大家~ 这篇文章主要介绍PCA的训练。在百度文库、百科里看到许多相关的词条,但是有些方法细节写的并不是很清楚,如果读者需要代码实现,要走很多弯路。结合我的理解,以及在CMU的课程学习和实践,把一些细节详细记述一下。这里主要使用了矩阵的描述,其实是将很长很长的公 阅读详情

代码链接:


from numpy import *


def loadDataSet(fileName, delim='\t'):
    fr = open(fileName)
    stringArr = [line.strip().split(delim) for line in fr.readlines()]
    datArr = []
    for line in stringArr:
        curLine = [float(val) for val in line]
        datArr.append(curLine)
    return mat(datArr)


def pca(dataMat, topNfeat=9999999):
    meanVals = mean(dataMat, axis=0)  # 求列的平均值
    meanRemoved = dataMat - meanVals  # 去平均值
    covMat = cov(meanRemoved, rowvar=0)  # 协方差矩阵
    eigVals, eigVects = linalg.eig(mat(covMat))  # 计算特征值和特征向量
    eigValInd = argsort(eigVals)  # 升序排序
    # seq[start:end:step]
    eigValInd = eigValInd[: - (topNfeat + 1):-1]  # 对N个值升序排序1
    redEigVects = eigVects[:, eigValInd]  # 对N个值升序排序2
    lowDDataMat = meanRemoved * redEigVects  # 将数据转换到新空间
    reconMat = (lowDDataMat * redEigVects.T) + meanVals
    return lowDDataMat, reconMat


def replaceNanWithMean():
    datMat = loadDataSet('secom.data', ' ')
    numFeat = shape(datMat)[1]
    for i in range(numFeat):
        # datMat[con1, col]:con1为条件.
        # 这里datMat[:,i].A是取出第i列的元素,
        # 通过~isnan()取得数字元素的引用,
        # nonzero()构造非零矩阵,所有数值元素集中在第一行,
        # datMat[nonzero(~isnan(datMat[:, i].A))[0], i]
        # 代表取得第i列中对应非零矩阵第一行中的元素
        meanVal = mean(datMat[nonzero(~isnan(datMat[:, i].A))[0], i])  # 计算平均值
        datMat[nonzero(isnan(datMat[:, i].A))[0], i] = meanVal  # 对NAN元素赋予平均值
    return datMat


Sklearn 机器学习 数据降维PCA 自己实现PCA降维算法 PCA(主成分分析)的原理与实现方法。 阅读详情

相关推荐

python实现PCA算法,参考机器学习实战

python实现PCA算法 def pca(dataMat, topNfeat=9999999): meanVals = mean(dataMat, axis=0)#求每一维特征的平均值 meanRemoved = dataMat - meanVals #中心化 covMat = cov(meanRemoved, rowvar=0)#求特征间的协方差矩阵 eigVa...

Laurel1115的博客 1540

Python格式化输出

关于字符串,列表,元组元素的取出: a[x::y]若y大于0表示步长且是从头向尾取,首位为x位,若x缺省,则从0开始,若为-1,则只能取最后一位,即使y大于0,跑出迭代对象的尾端也没影响;若y小于0表示,从后往前取,y的绝对值表示步长,x仍然表示第一个元素位置。若a[::-1]则表示原来的。。。取反。Python转义字符在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符。如下表:转义...

Modern_Times的博客 854

机器学习算法——PCA算法介绍以及Java实现

PCA算法 一、算法概述 主成分分析(PCA)是多元统计分析中用来分析数据的一种方法,PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。 PCA方法最著名的应用应该是在人脸识别中特征提取及数据维,我们知道输入200*200大小的人脸图像,单单提取它的灰度值作为原始特征,则这个原始特征将达到40000维,这给后面分类器的处理将带来极

XiaoXiao_Yang77的博客 6606

1.10 字符串的替换(replace()、replaceFirst()和replaceAll())

在 Java 中,String 类提供了 3 种字符串替换方法,分别是 replace()、replaceFirst() 和 replaceAll(),本文将详细介绍它们的使用方法。 replace() 方法 replace() 方法用于将目标字符串中的指定字符(串)替换成新的字符(串),其语法格式如下: 字符串.replace(String oldChar, String newChar) 其中,oldChar 表示被替换的字符串; newChar 表示用于替换的字符串。 replace() 方法会将字

you can you up up up的博客 686

【机器学习】PCA案例的python实现

虽然可以通过更改优化算法来加快机器学习算法的拟合速度,但加快算法速度的更常用方法是使用主成分分析 (PCA)。如果您的学习算法由于输入维度太高而太慢,那么使用 PCA 加速它可能是一个合理的选择。这可能是PCA最常见的应用。PCA 的另一个常见应用是数据可视化。

gongdiwudu的专栏 8847

【Python】line.strip().split(‘,‘)含义

line.strip().split(‘,‘)含义: strip()表示删除掉数据中的换行符,split(‘,’)则是数据中遇到‘,’ 就隔开。

Roaddd的博客 2万+

HR效率翻倍!用Dify+飞书AI表格打造自动化简历处理流水线(附完整代码)

本文详细介绍了如何利用Dify工作流和飞书多维表格构建自动化简历处理系统,实现简历上传、AI智能解析与结构化数据入库的全流程自动化。通过整合大语言模型进行信息抽取,该系统能显著提升HR处理简历的效率与准确性,将HR从重复劳动中解放出来。

1a2s3d4f5g的博客 1025

PCA降维--代码实现

1.PCA降维 from numpy import * def loadDataSet(fileName, delim='\t'): fr = open(fileName) stringArr = [line.strip().split(delim) for line in fr.readlines()] datArr = [map(float,line) for li

仗剑天涯 7922

SikuliX实战:5分钟搞定游戏挂机脚本(附防检测思路与Python集成技巧)

本文详细介绍了如何使用SikuliX快速开发游戏挂机脚本,包括环境配置、基础原理、防检测策略及Python集成技巧。通过实战案例展示如何实现自动化任务、高级防检测方案,并结合Python提升脚本性能与智能度,帮助玩家高效完成重复性游戏操作。

weixin_33228769的博客 335

回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证

回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证 目录回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证基本介绍划分原理留一划分交叉验证K折交叉数据下载程序设计参考资料致谢 基本介绍 在机器学习里,通常来说我们不能将全部用于数据训练模型,否则我们将没有数据集对该模型进行验证,从而评估我们的模型的预测效果。为了解决这一问题,有如下常用的方法: 第一种是最简单的,也是很容易就想到的。我们可以把整个数据集分成两部分,一部分用于训练,一部分用于验证,这也就是我们经常提到的训练集

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 6375

机器学习实战第二课(PCA)

    PCA作为一种无监督的特征提取方法,在很多场合都能见到其应用,其主要功能是降低数据维度,减少数据冗余。关于PCA的理论知识这里不作太多讲解,大致流程:(1)求数据的每一个维度的均值(2)数据去均值处理(3)构造协方差矩阵(4)求特征值和特征向量(5)取特征值较大的部分以及其对应的特征向量(6)将原始数据映射到新的空间具体实现:import numpy as np import matplo...

仰望星空 692

金融监管压力测试场景生成

压力测试是一种评估金融资产或机构在极端市场条件下的表现和风险承受能力的方法。它通过模拟各种不利的市场情景,测试金融机构在这些情景下的财务状况和运营能力。压力测试的作用在于帮助金融机构识别潜在风险,评估应对策略,并制定应急预案。总结压力测试场景生成系统的开发过程和实现效果,强调其在金融监管中的重要性和应用价值。随着金融市场的发展,实时压力测试将越来越重要。未来,压力测试需要更加注重实时性和动态性,及时反映市场的变化。本文详细介绍了金融监管压力测试的重要性、核心概念、算法原理、系统架构以及实战案例。

AI天才研究院 1208

【机器学习】——PCA算法的实现

PCA是一种数据维度压缩和特征选择的方法,它通过将高维数据映射到低维数据,保留数据的主要特征,从而实现数据的降维。PCA算法的核心思想是将n维特征映射到k维上(k

qq_73559660的博客 1695

如何用Python编程实现算术割圆术?

第10章 割圆术 Python编程要点 from … import …语句 math模块的sqrt()函数 round()函数 10.1 图解九章 {:–}觚( gū ):正多边形。“六觚”即正六边形,“十二觚”即正十二边形。 图10-1 六觚、十二觚、二十四觚 提示 图10-1所示由图解九章源码中的“图解割圆术.py”自动绘制而成,我们可运行脚本文件,查看动态的绘制过程。 割六觚以...

人邮异步社区 3237

【OpenFOAM】-olaFlow-算例10-wavemakerTank

采用 Flap和Piston两种方式的动网格进行造波

ou_no的博客 2167

机器学习-PCA降维原理与实现

一、为什么要进行数据降维 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据映射到低维度的空间中。之所以要进行数据降维,是因为在原始的高维数据中,存在很多冗余以及噪声信息,通过数据降维,我们可以减少冗余信息,提高识别的精度,同时降低维度也可以提升机器学习的速度。 二、原理 PCA 全称为主成分分析方法(Principal Component Analysis),它的目标是通过某种...

hustanding 1253

【以太网硬件一】802.3xx标准怎么这么多?它们有什么关系?

IEEE 802.3标准发展历史简介

highman110的博客 5017

《机器学习实战》--PCA降维以及代码实现

1、PCA 在机器学习的领域中,我们需要提取原始数据的特征,得到的特征向量有时是高维数据,并且高维数据中存在噪声和冗余。降维是从高维数据中找出一些重要的特征,去除冗余和噪声,寻找出其内部的特性,提升其特征表达能力,降低训练复杂度。 主成分分析(Principal Component Analysis, PCA)作为降维算法中最经典和常用的方法,它是一种线性、非监督、全局的降维算法。在PCA中,数据...

Miao的博客 1025

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

机器学习(8)--PCA算法及python中sklearn模块实现

吴恩达ML课程课后总结,以供复习、总结、温故知新,也欢迎诸位评论讨论分享,一起探讨一起进步: 上一篇:机器学习(7)--K均值算法及python实现(附练习数据资源文件百度云)https://blog.csdn.net/qq_36187544/article/details/88381370 下一篇:机器学习(9)--异常检测(多元高斯分布等)https://blog.csdn.net/qq_...

执契的博客 1056

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

主成分分析(PCA)入门:用Coursera-ML-Py实现数据可视化

主成分分析(PCA)是机器学习中一种强大的降维技术,能够将高维数据压缩到低维空间,同时保留数据的关键特征。本文将通过Coursera-ML-Py项目中的Python实现,带你快速掌握PCA的核心概念和应用方法,特别适合机器学习新手理解如何通过PCA实现数据可视化。 ## 为什么选择PCA进行数据可视化? 在处理高维数据时,我们常常面临"维度灾难"——数据维度越高,可视化难度越大,计算成本也越高

gitblog_00940的博客 722

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ML - numpy实现 PCA主成分分析

步骤简介 数据标准化(对于m*n维数据) 计算协方差,得到协方差矩阵 计算特征值和特征向量,通过线性变换 保留最重要的k个特征值(通常k<n) 找出k个特征值对应的特征向量 将mn的矩阵乘以n维的特征响亮的特征向量(n...

htuhxf的博客 3270

为什么算法笔记被称为晴神_吴恩达《Machine Learning》精炼笔记 9:PCA 及其 Python 实现...

作者:Peter红色石头的个人网站:红色石头的个人博客-机器学习、深度学习之路​www.redstonewill.com系列文章:吴恩达《Machine Learning》精炼笔记 1:监督学习与非监督学习吴恩达《Machine Learning》精炼笔记 2:梯度下降与正规方程吴恩达《Machine Learning》精炼笔记 3:回归问题和正则化吴恩达《Machine Learning》精炼笔...

weixin_39907220的博客 1682

ML - sklearn实现 PCA主成分分析

原文:principal component analysis with scikit-learn by Niraj Verma. 我将用Scikit-learn通过最大离散度找出所有的成分,并分离出主成分。首先对原始数据标准化,

htuhxf的博客 3900

吴恩达《Machine Learning》精炼笔记 9:PCA 及其 Python 实现

作者 | Peter编辑 |AI有道系列文章:吴恩达《Machine Learning》精炼笔记 1:监督学习与非监督学习吴恩达《Machine Learning》精炼笔记 2:梯度下...

红色石头的专栏 1041

[Machine Learning]PCA 算法 python 实现

PCA , principal component analysis, 即主成分分析算法, 是机器学习中一种常用的对训练样本进行降维的算法。具体推导过程这里不再赘述。简而言之,它是根据训练样本的特征(feature)分布特性,找到特征方差最大的特征向量组k,来替代原有的特征数n作为训练样本的表征(基),来重新描述训练样本,从而达到减少特征(即降低维度)目的。

Murphy_CoolCoder的博客 1124
上一篇: 机器学习线性回归实现
下一篇: 机器学习Kmeans实现
Edwards_June
博客等级 码龄12年 12粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值