#python #training-data
#python #обучение-данные
Вопрос:
Я работаю над небольшим проектом машинного обучения.
Набор данных, который я использую, имеет 56 входных параметров и одну категориальную переменную ответа (0/1). Моя проблема в том, что переменные ответа распределены неравномерно. Теперь мой вопрос: я хочу подготовить набор обучающих данных, чтобы ответы были равномерно распределены. Как это можно сделать?
Вот как выглядят данные
-> обучающий набор данных должен иметь одинаковое количество 1 и 0 из ответа.
Спасибо за вашу помощь, как вы можете себе представить, я действительно новичок…
Комментарии:
1. Покажите нам свой код!
Ответ №1:
я такой же человек, как и тот, кто задал этот вопрос. извините за это. сначала я загружаю данные из файла csv.(не в коде, показанном здесь) это сохраняется как данные, затем я создаю новый столбец с именем «response_class» на основе значения в столбце «response», если оно ниже .045, response_class = 1, другое 0. во-вторых, я произвольно выбираю 10000 строк из данных. (из-за ограничений вычислений), и здесь я хочу убедиться, что я получаю одинаковое количество 1 и 0 из response_class . в конце я разделяю данные, чтобы подготовить их для корреляционной матрицы, а также тестирую и обучаю данные
Вот мой код:
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()
Комментарии:
1. Можете ли вы описать код? Это добавило бы значение вашему ответу.
2. Я имею в виду отредактировать ответ и добавить к нему некоторые пояснения 🙂
Ответ №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()