ДОПОЛНИТЕЛЬНЫЙ КОНТЕКСТ: я пытаюсь сбалансировать выходные классы в многоклассовом и многовыходном наборе данных. Насколько я понимаю, это будет проблема оптимизации с 25 (?) степенями свободы. Таким образом, если у меня есть какой-либо набор входных данных, я смогу создать подмножество этого набора входных данных, которое является моими обучающими данными и которое имеет желаемый баланс классов (т. е. класс 1 между 0,15 и 0,3 для каждого выходного столбца).
Я создаю фрейм данных, используя это
Код: Выделить всё
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
np.random.seed(42)
data = pd.DataFrame({
'A': np.random.rand(30),
'B': np.random.rand(30),
'C': np.random.rand(30),
'D': np.random.rand(30),
'E': np.random.rand(30),
'F': np.random.choice([0, 1, 2], 30),
'G': np.random.choice([0, 1, 2], 30),
'H': np.random.choice([0, 1, 2], 30),
'I': np.random.choice([0, 1, 2], 30),
'J': np.random.choice([0, 1, 2], 30)
})
Код: Выделить всё
def check_proportions(df, cols, min_prop = 0.15, max_prop = 0.3, class_category = 1):
for col in cols:
prop = (df[col] == class_category).mean()
if not (min_prop 8,19
5,12
1,32
3,12
8,41
1
2
0
1< /td>
2
9,35
1,92
3,12
4,13
3,14
0
1
1
0
1
8,43
9,72
7,23
8,29
9,18
1
00
2
2
4,32
2,12
3,84
9,42
8,19
0
0
0
0
0
3,92
3,91
2,90
8,19
8,41
< td>2
2
2
2
1
7,89
1,92
4,12
8,19
7,28
1
1
2
0
2
5,21
2,42
3,10
0,31< /td>
1.31
2
0
1
1
0
< /div>
который имеет 10 строк и 10 столбцов,
и ожидаемый результат ([b]набор поездов[/b]) может быть
A
B
C
D
E
OUTPUT_1
OUTPUT_2
OUTPUT_3
OUTPUT_4
OUTPUT_5
5,65
3,56
0,94
9,23
6,43
0
1
1
0
1
7,43
3,951,24
7,22
2,66
0
0
0
1
2
< /tr>
9,31
2,42
2,91
2,64
6,28
2
1
2
2
0
< td>8,19
5,12
1,32
3,12
8,41
1
2
0
1< /td>
2
8,43
9,72
7,23
8,29
9,18
1
0
0
2
2
3,92
3,91
2,90
8,19
8,41
2
22
2
1
5,21
2,42
3,10
0,31
1.31
2
0
1
1
0
При этом каждый выходной столбец в [b]наборе поездов[/b] имеет как минимум 2 (>= 0,15 * количество строк во [b]входных данных[/b]) экземпляров [b]класса 1 [/b] и не более 3 (
Подробнее здесь: [url]https://stackoverflow.com/questions/78634138/proportionately-split-dataframe-with-multiple-target-columns[/url]