Преобразовать набор данных ARFF в другой набор данных с отношениями атрибутов в Python - PullRequest
0 голосов
/ 21 января 2020

У меня есть пример данных в формате ARFF:

@relation 'data1' 

@attribute a  numeric
@attribute b  numeric
@attribute c  numeric
@attribute Class {Class1,Class0}

@data
2,1,3,Class1
3,3,-1,Class0
4,3,1,Class1

Это выглядит так:

|---------------------|------------------|------------------|------------------|
|          X1         |         X2       |        X3        |      Class       |
|---------------------|------------------|------------------|------------------|
|          2          |         1        |         3        |      Class1      |
|---------------------|------------------|------------------|------------------|
|          3          |         3        |         -1       |      Class0      |
|---------------------|------------------|------------------|------------------|
|          4          |         3        |         1        |      Class1      |
|---------------------|------------------|------------------|------------------|

Теперь я хотел бы преобразовать этот набор данных в другой, в котором каждый объект будет содержит связи атрибута X с другими атрибутами в соответствии с: Xi-Xj.

Итак, я получу еще один набор из этого набора данных, который будет содержать 9 объектов:

|---------------------|------------------|------------------|
|          A1         |         A2       |        Class     |
|---------------------|------------------|------------------|
|        X1-X2        |       X1-X3      |      Class1      |
|---------------------|------------------|------------------|
|        X2-X1        |       X2-X3      |      Class1      |
|---------------------|------------------|------------------|
|        X3-X1        |       X3-X2      |      Class1      |
|---------------------|------------------|------------------|
|        X1-X2        |       X1-X3      |      Class0      |
|---------------------|------------------|------------------|
|        X2-X1        |       X2-X3      |      Class0      |
|---------------------|------------------|------------------|
|        X3-X1        |       X3-X2      |      Class0      |
|---------------------|------------------|------------------|
|        X1-X2        |       X1-X3      |      Class1      |
|---------------------|------------------|------------------|
|        X2-X1        |       X2-X3      |      Class1      |
|---------------------|------------------|------------------|
|        X3-X1        |       X3-X2      |      Class1      |
|---------------------|------------------|------------------|

С указанными c значениями из первой таблицы:

|---------------------|------------------|------------------|
|          A1         |         A2       |        Class     |
|---------------------|------------------|------------------|
|          1          |         -1       |      Class1      |
|---------------------|------------------|------------------|
|         -1          |         -2       |      Class1      |
|---------------------|------------------|------------------|
|          1          |          2       |      Class1      |
|---------------------|------------------|------------------|
|          0          |          4       |      Class0      |
|---------------------|------------------|------------------|
|          0          |          4       |      Class0      |
|---------------------|------------------|------------------|
|         -4          |         -4       |      Class0      |
|---------------------|------------------|------------------|
|          1          |          3       |      Class1      |
|---------------------|------------------|------------------|
|         -1          |          2       |      Class1      |
|---------------------|------------------|------------------|
|         -3          |         -2       |      Class1      |
|---------------------|------------------|------------------|

Для этого я решил использовать Python. В начале я загружаю данные из файла ARFF:

data = arff.loadarff('data.arff')
df = pd.DataFrame(data[0])
df.head()
print (df)

И здесь у меня проблема. Как я могу оптимально выполнить вышеуказанные операции?

...