【问题标题】:Imbalanced dataset in .csv.csv 中的不平衡数据集
【发布时间】:2018-11-01 09:37:20
【问题描述】:

我有一个 .csv 格式的数据集,其中包含我将用于性别语音识别的声学特征,以根据数据集预测它的性别。

我的问题是我拥有25 samples of females152 samples of males 的数据集。总计:177 samples (or rows)

当我使用算法对数据进行训练时,这会给我带来问题。

我的问题是,如何平衡男女比例?我如何ignore 或从152 to 25 减少男性样本的数量,以便男性和女性之间的比例可以为1:1?所以我有 25 个女性样本和 25 个男性样本。

有什么方法可以用吗?

我的 csv 文件示例:

> 1 - female
> 
> .
> 
> 25 - female 
> 
> 26 - male
> 
> .
> 
> .
> 
> .
> 
> 177 - male

代码在python

【问题讨论】:

  • 为什么不随机抽取25个男性样本,然后对25个男性和25个女性进行分析?
  • 我该怎么做?有什么方法可以告诉我或解释一下吗?:)
  • 是的,但我需要有关您的文件的更多信息。女性总是在第 1 到 26 行?只有一个文件吗?您是否使用pandas 读取csv 文件?
  • 是的,我使用熊猫。从第 1 行到第 26 行总是只有女性。请注意,我在文件中也有标题
  • 好的,我现在正在写答案

标签: python python-3.x csv


【解决方案1】:

使用pandas.DataFrame.sample

如果你已经使用 pandas 加载了文件,那么你会得到如下内容:

示例:

# 177 samples = 177 rows, with females in rows 1 to 25
df.shape 
(177,1)

# define a subset containg all the males data
males_all = df.loc[26:,:]

# randomly sample this and get 25 samples of MALES
sampled_males = males_all.sample(n = 25, random_state=0)

print(sampled_males.shape)
(25, 1)

【讨论】:

  • 我收到一条错误消息,提示“元组对象不可调用”
  • 代码的哪一部分给你这个错误?你能上传csv 文件吗?还是它的样本?
【解决方案2】:

如何创建男性声音的数据框,然后使用df.Sample 获取 25 个样本。

或者更好的是,如果您创建两个数据框,males_DF 和 females_DF,您可以执行以下操作:

sample_size = min(len(males_DF),len(females_DF))
male_sample_DF = males_DF.sample(sample_size)
female_sample_DF = females_DF.sample(sample_size)

(未测试,可能需要一些更改)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 2014-06-19
    • 2021-03-26
    • 2018-05-17
    • 1970-01-01
    • 2021-05-07
    相关资源
    最近更新 更多