AI分析SP和pk进行sk分析

2024-05-28 10:36
文章标签 分析 进行 ai sp pk sk

本文主要是介绍AI分析SP和pk进行sk分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SP原始表行标题代表题目序号,列代表学生,如果学生答对题目为1,否则为0。问题知识点矩阵这个文件横轴代表每个知识点,列标题代表每个题目序号,如果题目包含这个知识点则该处值为1。通过两个文件判断学生对于每个知识点的掌握,生成一个Excel,列为学生,行标题为知识点。如果学生对每个知识点关联的题目都能答对吗,值为2,都答错值为0,一些答对一些答错值为1

1
按行遍历这个Excel中含1的单元格返回该单元格所在列

2

到这一步能成功返回结果

import pandas as pd# 读取Excel文件
df1 = pd.read_excel('问题-知识点矩阵.xlsx')class knowledge:def __init__(self, name):self.name = nameflag=0class question:def __init__(self, name):self.name = nameself.knowledge = []self.flag=0class student:def __init__(self, name):self.name = nameself.question= []# 创建student列表
students = []
questions = []knowledges=[]# 第一列的列名
first_column_name = df1.columns[0]students = []def get_student_results(file_path):# 读取Excel文件df = pd.read_excel(file_path)# 初始化一个空字典来存储结果results = {}# 遍历数据框的每一行for index, row in df.iterrows():# 初始化student对象student_obj = student(row['学生'])# 遍历除'学生'列之外的其他列for col in df.columns[1:]:# 检查学生的答案是否为1(正确)或0(错误)if row[col] == 1:flag = 1else:flag = 0# 创建question对象,并设置flagquestion_obj = question(col)question_obj.flag = flag# 将question对象添加到student对象的question列表中for index, value in df1[first_column_name].items():# 找到当前行中所有包含1的列ones_columns = [col for col in df1.columns[1:] if df1.at[index, col] == 1]# 遍历ones_columns列表中的每个列名# 创建question对象#print(question_obj.name)if question_obj.name ==  value:#value  是 题目#print(value)for col in ones_columns:# 将question对象添加到questions列表中question_obj.knowledge.append(col)questions.append(question_obj)student_obj.question.append(question_obj)# 遍历第一列的所有元素# 将student对象添加到students列表中students.append(student_obj)
get_student_results('sp原始表.xlsx')
# 遍历student列表,打印
for student in students:print(student.name)for question in student.question:print(question.name, question.flag)for knowledge in question.knowledge:print(knowledge)

在这里插入图片描述
分别返回 题目:答对还是打错

涉及到的知识点包括

成功获取集合:

import pandas as pd# 读取Excel文件
df1 = pd.read_excel('问题-知识点矩阵.xlsx')class knowledge:def __init__(self, name):self.name = nameflag=0class question:def __init__(self, name):self.name = nameself.knowledge = []self.flag=0class student:def __init__(self, name):self.name = nameself.question= []# 创建student列表
students = []
questions = []knowledges=[]# 第一列的列名
first_column_name = df1.columns[0]students = []def get_student_results(file_path):# 读取Excel文件df = pd.read_excel(file_path)# 初始化一个空字典来存储结果results = {}# 遍历数据框的每一行for index, row in df.iterrows():# 初始化student对象student_obj = student(row['学生'])# 遍历除'学生'列之外的其他列for col in df.columns[1:]:# 检查学生的答案是否为1(正确)或0(错误)if row[col] == 1:flag = 1else:flag = 0# 创建question对象,并设置flagquestion_obj = question(col)question_obj.flag = flag# 将question对象添加到student对象的question列表中for index, value in df1[first_column_name].items():# 找到当前行中所有包含1的列ones_columns = [col for col in df1.columns[1:] if df1.at[index, col] == 1]# 遍历ones_columns列表中的每个列名# 创建question对象#print(question_obj.name)if question_obj.name ==  value:#value  是 题目#print(value)for col in ones_columns:# 将question对象添加到questions列表中question_obj.knowledge.append(col)questions.append(question_obj)student_obj.question.append(question_obj)# 遍历第一列的所有元素# 将student对象添加到students列表中students.append(student_obj)
get_student_results('sp原始表.xlsx')right=[]
worng=[]
hunhe=[]
name=[]# 更改类名为AllResults以避免与内置函数all()冲突
class AllResults:def __init__(self, name):self.name = nameself.right = []  # 答对的知识点self.wrong = []  # 答错的知识点self.hunhe = []  # 交集,即答对和答错中都有的知识点# 假设students是已经定义好的学生列表
# students = [...]# 初始化存储结果的列表
all_results_list = []for student in students:# 创建AllResults实例all_results = AllResults(student.name)right_set = set()  # 使用集合来避免重复wrong_set = set()for question in student.question:if question.flag == 1:right_set.update(question.knowledge)elif question.flag == 0:wrong_set.update(question.knowledge)# 更新AllResults实例的属性all_results.right.extend(right_set)all_results.wrong.extend(wrong_set)all_results.hunhe.extend(right_set.intersection(wrong_set))# 移除交集部分all_results.right = list(right_set - wrong_set)all_results.wrong = list(wrong_set - right_set)# 添加到结果列表all_results_list.append(all_results)# 遍历all_results_list,写入txt文件
for i, all_results in enumerate(all_results_list):with open(f'{all_results.name}.txt', 'w') as f:f.write(f'{all_results.name}\n')f.write(f'答对知识点:{all_results.right}\n')f.write(f'答错知识点:{all_results.wrong}\n')f.write(f'交集知识点:{all_results.hunhe}\n')

下面开始判断
sk:

我要判断的是每个学生对于不同的问题,这些不同问题下面的相同知识点的flag是否一致

判断knowledge.name 的name相同的知识点 的flagflag是否都是1,或者都是0,或者有1有0三种情况
,返回给我关于每个knowledge.name所在的三种情况

class AllResults:
def init(self, name):
self.name = name
self.right = [] # 答对的知识点
self.wrong = [] # 答错的知识点
self.hunhe = [] # 交集,即答对和答错中都有的知识点 写本地代码把AllResults类中的name和s.xlsx对应以后,s.xlsx的表头是知识点,self.right = [] #
答对的知识点里面单元格填2,self.wrong = [] # 答错的知识点单元格填0, self.hunhe = [] #
交集,即答对和答错中都有的知识点用1填充,无需你运行,给我代码

这篇关于AI分析SP和pk进行sk分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1010325

相关文章

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

使用zabbix进行监控网络设备流量

《使用zabbix进行监控网络设备流量》这篇文章主要为大家详细介绍了如何使用zabbix进行监控网络设备流量,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装zabbix配置ENSP环境配置zabbix实行监控交换机测试一台liunx服务器,这里使用的为Ubuntu22.04(

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

在Pandas中进行数据重命名的方法示例

《在Pandas中进行数据重命名的方法示例》Pandas作为Python中最流行的数据处理库,提供了强大的数据操作功能,其中数据重命名是常见且基础的操作之一,本文将通过简洁明了的讲解和丰富的代码示例,... 目录一、引言二、Pandas rename方法简介三、列名重命名3.1 使用字典进行列名重命名3.编

python安装完成后可以进行的后续步骤和注意事项小结

《python安装完成后可以进行的后续步骤和注意事项小结》本文详细介绍了安装Python3后的后续步骤,包括验证安装、配置环境、安装包、创建和运行脚本,以及使用虚拟环境,还强调了注意事项,如系统更新、... 目录验证安装配置环境(可选)安装python包创建和运行Python脚本虚拟环境(可选)注意事项安装

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re