【python】PCA计算权重

2023-11-11

【python】PCA计算权重

将分步骤基于python实现PCA计算权重,代码在pycharm中执行。


1.引入库

将需要的库导入pycharm

import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
from sklearn import preprocessing

2.读取数据

filename为文件名,将数据转换为dataframe格式

# 数据导入
csv_file = "filename.csv"
csv_data = pd.read_csv(csv_file, low_memory=False)  # 防止弹出警告
csv_df = pd.DataFrame(csv_data)

3.数据标准化

这里还可以选用StandardScaler、MaxAbsScaler、Normalizer进行标准化

scaler = preprocessing.MinMaxScaler().fit(csv_df)
X_scaler = pd.DataFrame(scaler.transform(csv_df))

4.PCA(主成分分析)

这里用的是sklearn里的pca库

# 主成分分析建模
pca = PCA(n_components=None)  # n_components提取因子数量
# n_components=‘mle’,将自动选取主成分个数n,使得满足所要求的方差百分比
# n_components=None,返回所有主成分
pca.fit(X_scaler)
pca.explained_variance_  # 贡献方差,即特征根
pca.explained_variance_ratio_  # 方差贡献率
pca.components_  # 成分矩阵
k1_spss = pca.components_ / np.sqrt(pca.explained_variance_.reshape(-1, 1))  # 成分得分系数矩阵

4.确定权重

# 确定权重
# 求指标在不同主成分线性组合中的系数
j = 0
Weights = []
for j in range(len(k1_spss)):
    for i in range(len(pca.explained_variance_)):
        Weights_coefficient = np.sum(100 * (pca.explained_variance_ratio_[i]) * (k1_spss[i][j])) / np.sum(
            pca.explained_variance_ratio_)
    j = j + 1
    Weights.append(np.float(Weights_coefficient))
print('Weights',Weights)

5.对权重结果进行归一化

Weights=pd.DataFrame(Weights)
Weights1 = preprocessing.MinMaxScaler().fit(Weights)
Weights2 = Weights1.transform(Weights)
print('Weights2',Weights2)

总结

本文运用主成分分析法确定权重,主要利用了sklearn的pca库,比较简单易懂。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【python】PCA计算权重 的相关文章

  • 查找 with: 块中定义的函数

    这是一些代码理查德 琼斯的博客 http www mechanicalcat net richard log Python Something I m working on 3 with gui vertical text gui labe
  • 如何使用pycaffe重构caffe网络

    我想要的是 加载网络后 我将分解一些特定的图层并保存新的网络 例如 原网 数据 gt conv1 gt conv2 gt fc1 gt fc2 gt softmax New net 数据 gt conv1 1 gt conv1 2 gt c
  • Python3 查找 2 个列表中有多少个差异才能相等

    假设我们有 2 个列表 always具有相同的长度和always包含字符串 list1 sot sot ts gg gg gg list2 gg gg gg gg gg sot 我们需要找到 其中有多少项list2应该改变 以便它等于lis
  • 当x轴不连续时如何删除冗余日期时间 pandas DatetimeIndex

    我想绘制一个 pandas 系列 其索引是无数的 DatatimeIndex 我的代码如下 import matplotlib dates as mdates index pd DatetimeIndex 2000 01 01 00 00
  • VSCode pytest 测试发现失败

    Pytest 测试发现失败 用户界面指出 Test discovery error please check the configuration settings for the tests 输出窗口显示 Test Discovery fa
  • Python:随时接受用户输入

    我正在创建一个可以做很多事情的单元 其中之一是计算机器的周期 虽然我将把它转移到梯形逻辑 CoDeSys 但我首先将我的想法放入 Python 中 我将进行计数 只需一个简单的操作 counter 1 print counter 跟踪我处于
  • 使用 genfromtxt 导入 numpy 中缺失值的 csv 数据

    我有一个 csv 文件 看起来像这样 实际文件有更多的列和行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 假设文件的名称是info csv如果我尝试使用导入它 data numpy genfromtxt i
  • 在 pip.conf 中指定多个可信主机

    这是我尝试在我的中设置的 etc pip conf global trusted host pypi org files pythonhosted org 但是 它无法正常工作 参考 https pip pypa io en stable
  • ValueError:无法插入 ID,已存在

    我有这个数据 ID TIME 1 2 1 4 1 2 2 3 我想按以下方式对数据进行分组ID并计算每组的平均时间和规模 ID MEAN TIME COUNT 1 2 67 3 2 3 00 1 如果我运行此代码 则会收到错误 ValueE
  • Python Flask 是否定义了路由顺序?

    在我看来 我的设置类似于以下内容 app route test def test app route
  • python中的sys.stdin.fileno()是什么

    如果这是非常基本的或之前已经问过的 我很抱歉 我用谷歌搜索但找不到简单且令人满意的解释 我想知道什么sys stdin fileno is 我在代码中看到了它 但不明白它的作用 这是实际的代码块 fileno sys stdin filen
  • 使用 lambda 函数更改属性值

    我可以使用 lambda 函数循环遍历类对象列表并更改属性值 对于所有对象或满足特定条件的对象 吗 class Student object def init self name age self name name self age ag
  • 是否可以写一个负的python类型注释

    这可能听起来不合理 但现在我需要否定类型注释 我的意思是这样的 an int Not Iterable a string Iterable 这是因为我为一个函数编写了一个重载 而 mypy 不理解我 我的功能看起来像这样 overload
  • 是否可以强制浮点数的指数或有效数匹配另一个浮点数(Python)?

    这是我前几天试图解决的一个有趣的问题 是否可以强制一个的有效数或指数float与另一个人一样float在Python中 出现这个问题是因为我试图重新调整一些数据 以便最小值和最大值与另一个数据集匹配 然而 我重新调整后的数据略有偏差 大约小
  • 从 dask 数据框中的日期时间序列获取年份和星期?

    如果我有一个 Pandas 数据框和一个日期时间类型的列 我可以按如下方式获取年份 df year df date dt year 对于 dask 数据框 这是行不通的 如果我先计算 像这样 df year df date compute
  • 如何对字符串列表进行排序?

    在 Python 中创建按字母顺序排序的列表的最佳方法是什么 基本回答 mylist b C A mylist sort 这会修改您的原始列表 即就地排序 要获取列表的排序副本而不更改原始列表 请使用sorted http docs pyt
  • 将 Scikit-Learn OneHotEncoder 与 Pandas DataFrame 结合使用

    我正在尝试使用 Scikit Learn 的 OneHotEncoder 将 Pandas DataFrame 中包含字符串的列替换为 one hot 编码的等效项 我的下面的代码不起作用 from sklearn preprocessin
  • PyQt 中的线程和信号问题

    我在 PyQt 中的线程之间进行通信时遇到一些问题 我使用信号在两个线程 发送者和监听者 之间进行通信 发送者发送消息 期望被监听者接收 但是 没有收到任何消息 谁能建议可能出了什么问题 我确信这一定很简单 但我已经环顾了几个小时但没有发现
  • 使用“pythonw”(而不是“python”)运行应用程序时找不到模块

    我尝试了这个最小的例子 from flask import Flask app Flask name app route def hello world return Hello World if name main app run deb
  • 如何使用 Django (Python) 登录表单?

    我在 Django 中构建了一个登录表单 现在我遇到了路由问题 当我选择登录按钮时 表单不会发送正确的遮阳篷 我认为前端的表单无法从 查看 py 文件 所以它不会发送任何 awnser 并且登录过程无法工作 该表单是一个简单的静态 html

随机推荐

  • python + selenium

    selenium是一个模拟浏览器的类库 经常用来做自动化测试 python 可以直接使用安装目录下的Scripts pip工具安装 以windows7 python3 4为例 运行cmd cd C Python34 Scripts pip
  • 【LTspice】005 伯德图绘制

    目录 1 伯德图介绍 2 LTspice 截止频率验证 3 LTspice中如何添加光标 4 LTspice中如何将 幅频 和 相频曲线分开 1 伯德图介绍 Bode图由对数幅频特性和对数相频特性两张图组成 伯德图 百度百科 1 对数幅频特
  • 学习vue之node的安装

    关于node 简单的说 Node js 就是运行在服务端的 JavaScript Node js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 Node js 使用了一个事件驱动 非阻塞式 I O 的模型 使其轻量
  • Java 学习路线一条龙版

    Java 学习路线一条龙版 Java 学习路线一条龙版 by 程序员鱼皮 学习路线来源于 程序员鱼皮 大家可以去b站看看他的视频 视频导读 https www bilibili com video BV1Qf4y1K7ff 大纲 路线特点
  • wireshark抓包数据提取TCP/UDP/RTP负载数据方法

    1 背景 在视频抓包分析过程中 有时候需要从TCP UDP RTP中直接提取payload数据 比如较老的摄像机 有一些直接通过TCP UDP传输视频裸流 或者PS打包的视频流 通过提取TCP和UDP的负载数据就可以直接组成裸流或者PS流文
  • [Unity] AnimatorStates中的write defaults详解

    AnimatorState中有一个参数writeDefaultValues 在Inspector中显示的则是Write Defaults 官方文档对这个参数的解释是 Whether or not the AnimatorStates wri
  • WPF快速搭建MVVM框架

    WPFDemo项目结构 需更改App xaml上的属性StartupUri Views MainWindow xaml Views MainWindow xaml
  • Few-shot learning(少样本学习,入门篇)

    本文介绍一篇来自 https www analyticsvidhya com 关于少样本学习的的博客 原文地址 文章目录 1 少样本学习 1 1 为什么要有少样本学习 什么是少样本学习 1 2 元学习和传统有监督学习的区别是什么 1 3 一
  • 几个特殊TCP报文及TCP

    TCP Window Full 接收方接收缓冲区满了后 导致发送方的发送缓冲区装满待确认数据 此时发送方会发送一个TCP Window Full消息 TCP ZeroWindow 接收方应用没有及时recv消息 导致接收缓冲满 即滑动窗口为
  • Java开发学习----AOP通知获取数据(参数、返回值、异常)

    前面的博客我们写AOP仅仅是在原始方法前后追加一些操作 接下来我们要说说AOP中数据相关的内容 我们将从 获取参数 获取返回值 和 获取异常 三个方面来研究切入点的相关信息 前面我们介绍通知类型的时候总共讲了五种 那么对于这五种类型都会有参
  • Farbic Java SDK 1.4安装方法

    Hyperledger Fabric Java SDK是开发基于Hyperledger Fabric区块链的Java应用之必备开发包 本文将介绍如何在Maven Gradle和Eclipse中安装使用Hyperledger Fabric J
  • 【计算机二级】Python类

    1 程序设计语言的发展经历了从机器语言 汇编语言 到高级语言的发展历程 2 程序设计语言是计算机能够理解和识别用户操作意图的一种交互体系 它按照特定规则组织计算机指令 使计算机能够自动进行各种运算处理 按照程序设计语言规则组织起来的一组计算
  • Apache Flink:特性、概念、组件栈、架构及原理分析

    Table of Contents 1 摘要 2 基本特性 3 流处理特性 4 API支持 5 Libraries支持 6 整合支持 7 基本概念 7 1 Stream Transformation Operator 7 2 Paralle
  • 蓝桥杯2015年第六届真题-广场舞

    说在前面 其他博客中的代码应该保证不了健壮性 我这个 应该 可以 题目 题目链接 题解 数学 计算几何 提示 这题默认好像是顺时针或逆时针输入坐标 也就是说先后输入的两个点一定是多边形的一条边 前置知识 PNPoly算法 何为PNPoly算
  • SHT3x-DIS驱动及应用详解(附源码和手册)

    文章目录 一 电路组成 二 通讯指令说明 一 单次获取数据指令 二 周期获取数据指令 1 配置模式 2 读取数据 三 加快响应时间指令 四 停止周期读取数据指令 五 复位 1 IIC接口复位 2 软复位 重新初始化 3 一般呼叫复位指令 4
  • 小米路由器4A,(R4A千兆版)刷openwrt系统(Linux的一种)

    下载系统 第一步下载自己路由器型号的系统固件 https openwrt org toh views toh fwdownload 直接在页面搜索自己路由器品牌找到区域再找到自己的型号对应的 然后选第一个链接是稳定版系统固件 下载后改名为o
  • 日语疑问句

    你好 的用法很简单就是主题主语提示词 难的是他与 的区别是什么 在这儿我列举一下 我们应该怎样区分什么时候用主格助词 什么时候用提示助词 呢 其实只要记住 的重点在于其前面部分 而 的重点在于其后面部分 为了更好掌握主格助词 和提示助词 的
  • 挂载分区提示can't read superblock on /dev/sda1

    环境为linux 某分区数据无法读取 1 fstab及磁盘列表正常 2 手动挂在时系统提示can t read superblock on dev xxx 故障现象如上图 解决办法 root下使用fsck 进行修复指定分区 fsck dev
  • 一起学SF框架系列7.4-spring-AOP-AOP代理创建

    AOP的BeanDefinition加载后 Spring提供了自动代理机制 让容器自动根据目标bean生成AOP代理bean 本文讲述具体如何实现 基本机制 Spring的启动过程中 在bean实例化前后 初始化前后均提供了外部介入处理机制
  • 【python】PCA计算权重

    python PCA计算权重 将分步骤基于python实现PCA计算权重 代码在pycharm中执行 文章目录 python PCA计算权重 1 引入库 2 读取数据 3 数据标准化 4 PCA 主成分分析 4 确定权重 5 对权重结果进行