nirdizati_light.confusion_matrix_feedback.randomise_features

 1import random
 2
 3from pandas import Series, DataFrame
 4
 5
 6def randomise_features(feedback, train_df) -> DataFrame:
 7    randomised_df = train_df.copy()
 8
 9    for classes in feedback:
10        for single_feedback in feedback[classes]:
11            target_columns = [column_name for column_name, _ in single_feedback]
12
13            possible_values = {column: list(set(train_df[column].values)) for column in target_columns}
14
15            randomised_df = randomised_df.apply(
16                lambda row:
17                    row if row['label'] != classes and any([row[column] != value for column, value in single_feedback])
18                    else Series({
19                        column:
20                            random.choice(possible_values[column]) if column in target_columns
21                            else value
22                        for column, value in row.items()
23                    }),
24                axis=1
25            )
26
27    randomised_df = randomised_df[train_df.columns]
28
29    return randomised_df
def randomise_features(feedback, train_df) -> pandas.core.frame.DataFrame:
 7def randomise_features(feedback, train_df) -> DataFrame:
 8    randomised_df = train_df.copy()
 9
10    for classes in feedback:
11        for single_feedback in feedback[classes]:
12            target_columns = [column_name for column_name, _ in single_feedback]
13
14            possible_values = {column: list(set(train_df[column].values)) for column in target_columns}
15
16            randomised_df = randomised_df.apply(
17                lambda row:
18                    row if row['label'] != classes and any([row[column] != value for column, value in single_feedback])
19                    else Series({
20                        column:
21                            random.choice(possible_values[column]) if column in target_columns
22                            else value
23                        for column, value in row.items()
24                    }),
25                axis=1
26            )
27
28    randomised_df = randomised_df[train_df.columns]
29
30    return randomised_df