主成分回归python实现

article/2025/5/28 21:26:19

主成分分析python实现

这是我一直都想写的内容,但是迟迟没有动手开始写,主要的原因是没有理解python中PCA降维后再进行回归时应该要怎么做。再网上查了很多资料,也没有这方面的讲解,书上也是讲到了PCA降维就结束了。以下是我使用R语言的思想写的code,日后若找到相关的内容再进行修改。
先介绍一下sklearn中PCA模型的参数及方法:

参数:

n_components : int,float,None或string(‘mle’)
要保留的主成分数量。如果未设置n_components,则保留所有主成分, 如果n_components = 1, 表示保留一个主成分(第一主成分)

copy : bool(默认为True)
表示是否将原始数据复制。如果为False,则传递给fit的数据将被覆盖并且运行fit(X).transform(X)将不会产生预期结果,请改用fit_transform(X)。

whiten : bool,可选(默认为False)
表示是否白化,使得每个特征具有相同的方差。
当为True(默认为False)时,components_矢量乘以n_samples的平方根,然后除以奇异值,以确保具有单位分量方差的不相关输出。
白化将从变换后的信号中去除一些信息(组件的相对方差尺度),但有时可以通过使数据遵循一些硬连线假设来提高下游估计器的预测精度。

属性

components_ : array,shape(n_components,n_features)
特征空间中的主轴,表示数据中最大方差的方向。

explained_variance_ : 阵列,形状(n_components,)
由每个所选主成分解释的方差量。

explained_variance_ratio_ : 阵列,形状(n_components,)
每个所选主成分解释的差异百分比。主成分方差占总方差的百分数

singular_values_ : 数组,形状(n_components,)
对应于每个所选主成分的奇异值。奇异值等于n_components 低维空间中变量的2范数。

mean_ : array,shape(n_features,)
根据训练集估计的每个特征经验均值。等于X.mean(axis=0)

n_components_ : int
主成分个数

方法:

fit(X) 用X训练模型,返回训练后的模型

fit_transform(X) 用X训练模型,返回降维后的数据 Z (主成分矩阵,可以用来建立回归模型的数据)

transform(X)
将数据X转换成降维后的数据.。 当模型训练好后,对于新输入的数据,也可以用transform方法来降维。(此时返回的数据是主成分Z, Zi = a1x1 +…+apxp)

get_covariance()
cov = components_.T * S**2 * components_ + sigma2 * eye(n_features)
其中S ** 2包含解释的方差,sigma2包含噪声方差。
计算与生成模型的数据协方差。返回估计的协方差

get_params()
获取生成该模型时所传入的参数

get_precision()
用生成的模型计算数据精度矩阵

inverse_transform(X )
返回原始数据X, 这可能跟未转换前的原始数据有所差别,但是差别不是很大

score(X)
返回所有样本的平均对数似然。

score_samples(X )
返回每个样本的对数似然

案例实现

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.model_selection import train_test_split#  读取数据
data = pd.read_csv(filepath , encoding =  'UTF-8') 
注:原始数据中有5个变量,一个因变量.

1、 对数据进行标准化处理 (pca中默认的标准化是直接减去均值,但是在建模的过程中,感觉这样子不是很好,所以我先对数据进行标准化处理,而后才进行pca降维操作

对于标准化的方法有很多, 有兴趣的可以参考这篇文章:常用的数据标准化方法
我这里采用的是z_score标准化方法(x - u)/sigma

# 对数据进行标准化
X = (X - X.mean())/np.std(X)
Y = (Y - Y.mean())/np.std(Y)
# 对数据进行分割
X_train, X_test, Y_train, Y_test = train_test_split(X,Y,train_size=0.7, random_state=1)
# 创建pca模型
pca = PCA(n_components='mle')
# 对模型进行训练
pca.fit(X_train)
# 返回降维后据
X_train = pca.transform(X_train)# 使用返回后的数据用线性回归模型进行建模
import statsmodels.api as sm
ols = sm.OLS(Y_train, X_train).fit()
ols.summary()

在这里插入图片描述
由图片可以看到,ols回归后的R^2 是0.972, p值很小,说明模型拟合的很好。

# 使用LinearRegression进行拟合,其实这两种拟合的都差不多
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(X_train,Y_train)   # 模型训练
lr.score(X_train, Y_train) # 获取模型的得分

输出结果为:

0.9715782626501834

对X_test 进行预测

y_pred = lr.predict(X_test)

建立线性模型并查看y_pred与y_test的R^2

olsr = sm.OLS(y_pred, Y_test).fit()
olsr.summary()

输出的结果显示为:0.877
说明预测的效果还不错,但是如果想要得到更高的预测效果,就需要再从其他方面想想原因了。如:指标是否齐全,模型是否合理,数据是否由缺失,缺失数据的处理方法等。

完整的代码已经上传到:github:https://github.com/DDchenyidi

参考文献:

scikit-learn官网:https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html
sklearn中PCA的使用方法:https://www.jianshu.com/p/8642d5ea5389

文章来源:https://blog.csdn.net/qq_43315928/article/details/91404910
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://chatgpt.dhexx.cn/article/cCrSNAFj.shtml

相关文章

基于R语言的主成分回归(PCR)与Lasso回归在水稻基因组预测中的对比(生信数基实验作业)

基于R语言的主成分回归(PCR)与Lasso回归在水稻基因组预测中的对比 0 引言 全基因组选择是 21 世纪动植物育种的一种重要的选择策略,其核心就是全基因组预测,即基于分布在整个基因组上的多样性分子标记来对育种值进行预测&#x…

SPSS 特征筛选、主成分回归

小数据 → y:连续性变量 → x:6个以内 → 理论 → 验证 → 统计分析; 大数据 → y:分类变量 → x:15个以内 → 探索 → 数据挖掘; 一、X的选择流程 业务(业务专家):运…

R语言中的岭回归、套索回归、主成分回归:线性模型选择和正则化

概述和定义 在本文中,我们将考虑一些线性模型的替代拟合方法,除了通常的 普通最小二乘法。这些替代方法有时可以提供更好的预测准确性和模型可解释性。最近我们被客户要求撰写关于模型选择的研究报告,包括一些图形和统计输出。 主成分分析P…

主成分分析应用之主成分回归

主成分回归分析 对于OXY数据集的变量解释如下: 对上述数据进行回归模型的拟合,得到模型: 从模型的显著性检验结果看出:除了常数项以及β3显著,其他变量系数都不通过显著性检验。同时,从模型整体拟合效果来看…

高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据...

全文链接:http://tecdat.cn/?p23378 在本文中,我们将使用基因表达数据。这个数据集包含120个样本的200个基因的基因表达数据。这些数据来源于哺乳动物眼组织样本的微阵列实验(点击文末“阅读原文”获取完整代码数据)。 相关视频 …

主成分回归分析实战教程

本文介绍主成分回归分析(Principal Components Regression),并通过示例展示其实现过程。 给定p个预测变量和响应变量,多元线性回归使用如最小二乘法获得最小误差平方和(RSS): RSS Σ ( y i – y ^ i ) 2 {Σ(y_i – ŷ_i)^2} Σ(yi​–y^​…

机器学习——数据的共线性问题(岭回归、LASSO回归、逐步回归、主成分回归)

一、如何检验共线性 容忍度(Trlerance):容忍度是每个自变量作为因变量对其他自变量进行回归建模时得到的残差比例,大小用1减得到的决定系数来表示。容忍度的值介于0和1之间,如果值越小,说明这个自变量与其…

TI的CC2530单片机检测不同类型的方波

之前仅检测过一个引脚上一种方波信号,现在要再引脚上区分三种不同的波形。着实头大了好一会儿。 要检测的三种波形如下图所示: 每种波形的持续长度为500us,时间间隔为10ms. 比如我们在P0_2上检测这个波形,首先要对P0_2进行初始化操作&#…

单片机|CC2530实验入门

本教程为实验入门,手把手教你编译一个工程 一、USB驱动 仿真器设备的连接 【说明】USB接口不够可以使用USB集线器扩展,且互相不会干扰,非常方便。 由于用到了CC仿真器(smart RF04EB),需要相关驱动。连接…

CC2530单片机延时函数实际测试

因为要检测不同的波形,所以对时间要求很高,但是发现Zstack本身提供的微秒级的延时其实有误差。 因此特地写了测试函数,然后用示波器观察了时间。详细如下: 先说CC2530与普通8051单片机时钟的不同,CC2530的每个指令是一…

ZigBee无线传感——CC2530单片机定时器1PWM输出

定时器1(16位) 时器1是一个独立的16位定时器,支持典型的定时/计数功能,比如输入捕获,输出比较和PWM功能。 定时器有五个独立的捕获/比较通道。每个通道定时器使用一个I/O引脚。定时器用于范围广泛的控制和测量应用&am…

基于ZigBee cc2530单片机多传感器的智能阳台仿真设计与实现

文章目录 摘 要:关键词:ZigBee 、语音识别、智能家居、传感器 0.引言1.概述2.系统总体设计2.1系统组成2、系统使用流程3、开发环境 2.2系统传感器构成2.3系统数据库设计 3.系统详细设计与实现4.系统测试结果5&#xff…

CC2530单片机精确延时的时间分析

CC2530单片机精确延时的时间分析 IAR 仿真时如何得知运行周期for循环的时间计算使用反汇编工具计算延时时间验证讨论CC2530与普通8051单片机时钟的不同 IAR 仿真时如何得知运行周期 关于这个问题,网上有很多好文章,讲得很清楚。IAR的操作很简单&#xf…

嵌入式cc2530单片机ZigBee-流水灯的实验

嵌入式cc2530单片机ZigBee 单片机是一种集成电路芯片,包含中央处理器CPU、随机存储器RAM、只读存储器ROM、输入输出I/O接口、中断控制系统、定时/计数器和通信等多种功能部件 其针脚定义如下: 1.0 --P0、P1各8个针脚(1字节8位,…

快速学会CC2530单片机基础点灯

使用的软件是IAR 使用的板是经常提到的小黑板 上面四个灯分别是 D3 ---> P1_0 D4 ---> P1_1 D5 ---> P1_3 D6 ---> P1_4 #include <ioCC2530.h>//引用CC2530头文件 #define D3 P1_0 #define D4 P1_1 #define D5 P1_3 #define D6 P1_4//为了方便使用&…

CC2530单片机开发--串口

题目 源码下载链接https://download.csdn.net/download/czx20020728/85975522?spm1001.2014.3001.5503

【CC2530入门教程-06】CC2530的ADC工作原理与应用

【CC2530入门教程-06】CC2530的ADC工作原理与应用 【CC2530入门教程-05】CC2530的串行接口原理与应用 【CC2530入门教程-04】CC2530的定时/计数器原理与应用 【CC2530入门教程-03】CC2530的中断系统及外部中断应用 【CC2530入门教程-02】CC2530的通用I/O端口输入和输出控制…

【CC2530入门教程-01】CC2530微控制器开发入门基础

【CC2530入门教程-06】CC2530的ADC工作原理与应用 【CC2530入门教程-05】CC2530的串行接口原理与应用 【CC2530入门教程-04】CC2530的定时/计数器原理与应用 【CC2530入门教程-03】CC2530的中断系统及外部中断应用 【CC2530入门教程-02】CC2530的通用I/O端口输入和输出控制…

CC2530概述(简单了解)

CC2530概述简单版 CC2530是由TI公司生产&#xff08;德州仪器&#xff09;用于 2.4Ghz IEEE 802.15.4、ZigBee 和RF4CE 的片上系统&#xff08;SOC&#xff09;&#xff0c;经济实惠功耗低。 CC2530F256 结合了ZigBee 协议栈&#xff08;Z-Stack&#xff09;。 什么是片上系统…

单片机CC2530学习笔记

文章目录&#xff1a; 一&#xff1a;与或操作 二&#xff1a;CC2530的通用 IO及相关寄存器 1.与通用I/O端口相关常用的4个寄存器 2.PxSEL寄存器与PxDIR寄存器 3.P0INP寄存器与P1INP寄存器与P2INP 三&#xff1a;按键的工作原理与程序设计思路 四&#xff1a;CC2530的中…