可否请教一下大家这个代码如何理解,谢谢
#进行基本的样本均衡
Label_num = Counter(step_labels)
min_Label_num = min(Label_num.values())#取得各标签中最少出现标签的个数
formal_id = list()
output = np.array(step_labels)
for i in range(class_nb):#从各标签对应的场景中,按照最少的标签个数抽取出对应数量的场景id
idx = np.where(output == i)[0]
balanced_idx = np.random.choice(idx, size = min_Label_num, replace = False)
formal_id = formal_id + list(balanced_idx)
step_labels = output[np.array(formal_id)]
step_data = np.array(step_data)[np.array(formal_id)]
python代码理解
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- ash062 2022-03-10 22:14关注
个人感觉大概是这样(写了下注释)
from collections import Counter import numpy as np Label_num = Counter(step_labels) # 统计step_labels中各项出现次数 min_Label_num = min(Label_num.values()) # 取得各标签中最少出现标签的个数 format_id = list() # 初始化format_id空列表 output = np.array(step_labels) # 转化step_labels为np数组output for i in range(class_nb): # 从各标签对应的场景中,按照最少的标签个数抽取对应数量的场景id idx = np.where(output == i)[0] # idx为定位到的标签i在output(step_labels)中出现的位置,这里算是有点坑np.where返回值格式为(np.array, ),所以需要加[0]取出 balanced_idx = np.random.choice(idx, size = min_Label_num, replace = False) # 这个就是根据之前计算的最少出现的标签个数,从各标签随机取出该数量的样本(位置),不重复取样 format_id = format_id + list(balanced_idx) # 将取得的样本(位置)加入到之前建的列表format_id中 step_labels = output[np.array(format_id)] # 根据循环后format_id从output中取出对应样本构成新的step_labels,此时各样本数量均一致,为min_Label_num step_data = np.array(step_data)[np.array(format_id)] # 与step_labels基本一致,从step_data中也根据format_id取出对应数据,形成新的step_data
解决 无用评论 打赏 举报
悬赏问题
- ¥15 DS18B20内部ADC模数转换器
- ¥15 做个有关计算的小程序
- ¥15 MPI读取tif文件无法正常给各进程分配路径
- ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
- ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
- ¥15 setInterval 页面闪烁,怎么解决
- ¥15 如何让企业微信机器人实现消息汇总整合
- ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
- ¥15 如何用Python爬取各高校教师公开的教育和工作经历
- ¥15 TLE9879QXA40 电机驱动