Как дискретизировать хранимые данные в массиве с помощью Orange? - PullRequest
0 голосов
/ 20 октября 2018

У меня есть набор данных, хранящихся в массиве «numpy»:

array([['4.8', '3.0', '1.4', '0.3', 'Iris-setosa'],
['4.6', '3.2', '1.4', '0.2', 'Iris-setosa'],
['5.3', '3.7', '1.5', '0.2', 'Iris-setosa'],
['5.0', '3.3', '1.4', '0.2', 'Iris-setosa'],
['7.0', '3.2', '4.7', '1.4', 'Iris-versicolor'], dtype='<U15')
  • это просто пример, я работаю не только с набором данных iris.

Я пытаюсь использовать Orange для дискретизации этих данных о продолжении.

Я знаю, что могу сделать что-то подобное, чтобы выполнить работу:

import Orange
iris = Orange.data.Table("iris.tab")
disc = Orange.preprocess.Discretize()
disc.method = Orange.preprocess.discretize.EqualFreq(n=3)
d_iris = disc(iris)

Однако этот метод работает только с таблицей данных Orange, а не с массивом numpy.

В любом случае можно ли использовать Orange для дискретизации данных, хранящихся в массиве numpy?

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Orange может преобразовывать данные в Panda в таблицу Orange, поэтому сначала преобразуйте свои данные в данные Panda:

import pandas as pd
import numpy as np
import Orange.preprocess as OrangePre
from Orange.data.pandas_compat import table_from_frame

x = np.array([...])
df = pd.Dataframe(x)

Затем преобразуйте их в таблицу Orange:

table = table_from_frame(df)

Дискретизируйте это:

disc = OrangePre.Discretize()
disc.method = OrangePre.discretize.EqualFreq(3)
d_data = disc(table)

Снова превратите результат в кадр данных Panda:

final_data = pd.DataFrame(np.array(d_data))

Он также доступен в виде numpy:

final_data.values
0 голосов
/ 23 октября 2018

d_iris.X - это уже пустой массив, но вы потеряете целевое значение и заголовок.d_iris.Y - это целевой столбец, который вы можете объединить с X. Имейте в виду, однако, что вы увидите только назначенные значения bin после дискретизации, что может быть трудно интерпретировать.

d_iris.X[:5]
array([[0., 3., 0., 0.],
    [0., 1., 0., 0.],
    [0., 2., 0., 0.],
    [0., 2., 0., 0.],
    [0., 3., 0., 0.]])
...