【问题标题】:Python prepare training data set with evenly distrubeted response variablePython准备具有均匀分布的响应变量的训练数据集
【发布时间】:2020-11-25 00:09:29
【问题描述】:

我正在做一个小型机器学习项目。

我使用的数据集有 56 个输入参数和一个分类响应变量 (0/1)。我的问题是响应变量分布不均。现在我的问题是我想准备训练数据集,即响应是均匀分布的。如何做到这一点?

这就是数据的样子

-> 训练数据集在响应中应该有相同数量的 1 和 0。

感谢你的帮助,你可以想象我真的是一个初学者......

【问题讨论】:

  • 向我们展示您的代码!

标签: python training-data


【解决方案1】:

我和提问者是同一个人。对此感到抱歉。 首先,我从 csv 文件加载数据。(不在此处显示的代码中)将其存储为数据,接下来,我根据“response”列中的值创建一个名为“response_class”的新列(如果它在下方)。 045,response_class=1,其他0。第二,我从数据中随机抽取10000行。 (由于计算限制),在这里我想确保我从 response_class 获得相同数量的 1 和 0。最后,我拆分数据以使其为相关矩阵做好准备,并测试和训练数据

这是我的代码:

data = data[data.response != 0]

pd.DataFrame(data)
data['response_class'] = np.where(data['response'] <= 0.045, 1, 0)
#1=below .045  / 0=above 0.045

#reduce amount of data by picking random samples
data= data.sample(n=10000)

#split data
data.drop(['response'], axis=1, inplace=True)
y = data['response_class']
X = data.drop('response_class', axis=1)
X_names = X.columns

data.head()

【讨论】:

  • 你能描述一下代码吗?这将为您的答案增加价值。
  • 我的意思是编辑答案并添加一些解释:)
【解决方案2】:

找到了解决办法:

    #seperate based on the response variable in response_class
df_zero = pd.DataFrame(data[data.response_class== 0])
df_one = pd.DataFrame(data[data.response_class == 1])

# upsampling minority class
df_zero_min = resample(df_zero,
                      replace = True,
                      n_samples = len(df_one),
                      random_state = 123)

df_upsampled = pd.concat([df_one,df_zero_min])

df_upsampled.response_class.value_counts()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-30
    • 2020-07-01
    • 1970-01-01
    • 2018-03-29
    • 2016-08-26
    • 1970-01-01
    • 2020-07-15
    • 2020-04-09
    相关资源
    最近更新 更多