当前位置: 首页 > news >正文

Python 基于分位数-正态分布转换的评分算法

在实验的时候遇到一个比较实际的问题,就是怎样对数据进行评分。比如我想根据样本的正确率进行打分,有两种方法,一种是将准确率排序,然后根据序号进行打分,这样可以排除极端数据的影响,但是准确率之间的差距就不能有效体现。第二种方法是将数据归一化作为评分,但这样容易受到极端数据的影响。有没有一种评分算法能两者兼顾?问了chatGPT4后给出了一种我觉得比较符合需求的想法

首先,将数据进行排序,然后计算每个数据点在总体中所处的位置(即其百分位数)。最后可以将这些百分位数转换为Z得分(也就是标准正态分布下的得分),这样就完成了归一化。

具体步骤如下:

1、将所有数据按照大小进行排序。
2、计算每个数据点在总体中所处的位置(即其百分位数)。例如,在100个观测值中,最小值为第1百分位,最大值为第100百分位。
3、将每个观测值对应到一个标准正态随机变量上。例如,如果一个观测值处于第25百分位,则它对应到标准正态随机变量上就是-0.6745(因为在标准正态随机变量上, 25% 的区域左侧对应着 Z = -0.6745)。

通过以上步骤,“极端”的原始评价会被映射到相对较小或较大但不极端的Z得分上,而原始评价之间的相对差异也会被保留下来。这样就可以在一定程度上兼顾到排除极端数据和体现准确率之间差距两个方面。

代码:

"""
获取一个列表数据的
基于分位数-正态分布转换的评分算法
"""
from scipy.stats import normdef percentile_to_zscore(percentiles: list):"""获取一个百分比列表数据的z_scores"""z_scores = [norm.ppf(p) for p in percentiles]return z_scoresdef list_to_percentile(list_data: list, need_sort=False):"""对数据进行排名,生成百分比列表"""if need_sort:list_data = sorted(list_data)percentiles = [(list_data.index(data) + 1) / len(list_data) for data in list_data]# 需要对最后的结果进行处理,否则最大数据的百分比为1在计算z_score会报错percentiles.pop(-1)percentiles.append(0.99)return percentilesdef zscore_to_score(z_scores, min_score=1, max_score=100):"""把z分数重新映射指定分数区间"""min_z, max_z = min(z_scores), max(z_scores)scores = [round((z - min_z) / (max_z - min_z) * (max_score - min_score) + min_score,2) for z in z_scores]return scoresdef list_to_score(list_data: list, need_sort=False):"""输入一个列表数据,返回基于分位数-正态分布转换的评分:param list_data: 列表数据:param need_sort: 是否需要排序,True/False:return: 评分列表"""percentile = list_to_percentile(list_data, need_sort)print(percentile)zscore = percentile_to_zscore(percentile)score = zscore_to_score(zscore)return scoreif __name__ == "__main__":input_data = [1, 3, 5, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19]result_scores = list_to_score(input_data)print(result_scores)

相关文章:

Python 基于分位数-正态分布转换的评分算法

在实验的时候遇到一个比较实际的问题,就是怎样对数据进行评分。比如我想根据样本的正确率进行打分,有两种方法,一种是将准确率排序,然后根据序号进行打分,这样可以排除极端数据的影响,但是准确率之间的差距…...

如何修改CentOS登录时默认目录

查了一下,有说改/etc/passwd文件的,有说改.bashrc文件的,也有说改.bash_profile,修改的方法都不一样。 我要改的是root登录时的目录,最后修改了/root/.bash_profile文件,只要加一行cd 路径就可以。 这个文…...

JavaFX Scene Builder Gluon 控件详解

在 JavaFX Scene Builder 工具中,Gluon 是一个扩展库,提供了一些额外的控件和功能,用于创建更丰富和现代化的用户界面。本文将详细介绍 Gluon 中的各个控件及其作用。 AppBar(应用栏) AppBar 是一个用于显示应用程序…...

Vue路由(router-link)——高亮、动态传参

一、声明式导航-导航链接 1.需求 实现导航高亮效果 如果使用a标签进行跳转的话,需要给当前跳转的导航加样式,同时要移除上一个a标签的样式,太麻烦!!! 2.解决方案 vue-router 提供了一个全局组件 router…...

Java中将List转换为Map

在Java 8中,Stream API和Collectors类提供了一种方便的方式来处理集合数据。其中,将List转换为Map是一个常见的操作。下面我们将介绍如何使用Stream API和Collectors类将List转换为Map。 首先,假设我们有一个User类,包含id和name两…...

进程控制2——进程等待

在上一小节中我们介绍了进程的创建(fork)与退出(main函数的return与exit函数) 并且要有一个意识,进程退出的时候只有三种情况: 1.进程退出,结果正确 2.进程退出,结果不正确 3.运行异…...

k8s service

文章目录 Service 基础概念Service 类型:Service 的工作流程:东西流量,南北流量NodePortLoadBalancer Service 基础概念 在 Kubernetes(K8s)中,Service 是一个抽象的概念,表示一个应用程序的逻…...

C语言 每日一题 PTA 11.6 day12

1.调和平均 N 个正数的算数平均是这些数的和除以 N,它们的调和平均是它们倒数的算数平均的倒数。 本题就请你计算给定的一系列正数的调和平均值。 输入格式: 每个输入包含 1 个测试用例。每个测试用例第 1 行给出正整数 N(≤1000);第 2 行给…...

Git使用规范指南

文章目录 Git使用规范指南前言分支命名规范分支合并流程规范提交信息规范Angular提交规范注意事项 通用Git忽略文件配置 Git使用规范指南 前言 由于最近写完代码之后,Git使用不规范被领导说了,所以最近通过阅读大量的相关博客快速学习Git使用规范&#…...

axios和Ajax

1.axios 官网:https://axios-http.com/zh/ CDN:https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.min.js axios是一个请求库,在浏览器环境中,它封装了XHR,提供更加便捷的API发送请求 基本使用 // 发送 get 请求…...

Day06

1.继承 1.1 定义 让类与类之间产生子父类关系,有了继承性之后,子类就获取到了父类中声明的所有属性和方法。 1.2 优点 继承的出现减少了代码冗余,提高了代码的复用性。继承的出现,更有利于功能的扩展。继承的出现让类与类之间…...

@Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成

问题 Tag和Operation标签失效 但是Schema标签有效 pom依赖 <!-- 接口文档--><!--引入openapi支持--><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><vers…...

基础课18——智能客服系统架构

1.基础设施层 基础设施主要包括以下几点&#xff1a; 1. 硬件设施&#xff1a;包括服务器、存储设备、网络设备等&#xff0c;这是整个系统运行的物理基础。 2. 软件设施&#xff1a;包括操作系统、数据库管理系统、自然语言处理(NLP)工具和机器学习算法等&#xff0c;这些是…...

python执行cmd命令——控制电脑连接wifi——程序打包

import subprocess # 使用Popen创建进程&#xff0c;并与进程进行复杂的交互 proc subprocess.Popen(netsh wlan show network, # cmd特定的查询空间的命令stdinNone, # 标准输入 键盘stdoutsubprocess.PIPE, # -1 标准输出&#xff08;演示器、终端) 保存到管道中以便进行操作…...

Vue中nextTick的使用及原理

在Vue.js中&#xff0c;nextTick方法可以让我们在DOM更新后执行一些操作。通常情况下&#xff0c;在数据发生变化后&#xff0c;Vue.js会异步地更新DOM&#xff0c;这样可以减少不必要的DOM操作&#xff0c;提高性能。但是&#xff0c;有时候我们需要在DOM更新后对页面进行一些…...

【Linux】拓展:运维面试题,进程管理常见的7大问题

目录 一、如何判断一个程序是单线程还是多线程 二、僵尸进程是什么&#xff0c;有什么危害&#xff0c;如何解决 三、如何找回删掉的文件 四、删除文件以后&#xff0c;空间不释放 五、遇到一个病毒&#xff08;如死循环病毒&#xff09;&#xff0c;解决思路 六、机器开机…...

Android修行手册 - 一文全了解Kotlin几种静态变量、函数实现的那些事

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…...

Qt QTableView排序

1.简介 在开发过程中&#xff0c;我们需要通过点击表头来对QTableView或QTreeView等一系列高级视图进行排序操作&#xff0c;以下是进行排序的步骤。 步骤&#xff1a; 首先创建了一个QStandardItemModel对象或者继承QAbstractTableModel类作为数据模型&#xff0c;并设置了…...

Linux shell编程学习笔记22: () $() (()) 的用法小结

最近学习Linux Shell编程&#xff0c;对 () (()) [] [[]]等符号的用法还是有点分不太清楚&#xff0c;于是决定再梳理一下。今天先整理 () $() (()) 的用法。 1 单小括号() 1.1 子shell&#xff08;命令组&#xff09; 括号中的命令将会新开一个子shell顺序执行&#xff0c;所…...

1. Pthreads专栏简介

在基于共享内存的多处理器架构中&#xff0c;可使用线程实现并行。以前硬件供应商一般都会提供相应硬件专用的线程库&#xff0c;使得代码的可移植性成为另开发者头疼的一个问题。在UNIX系统中&#xff0c;IEEE POSIX 1003.1c标准已经定义了基于C的标准化线程编程接口规范&…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...