如何使用Orange离散化numpy数组中的存储数据?

时间:2018-10-19 21:20:06

标签: python python-3.x numpy orange

我有一组存储在“ 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')
  • 这只是一个例子,我不仅在处理虹膜数据集。

我正在尝试使用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)

但是,此方法仅适用于橙色数据表,不适用于numpy数组。

无论如何,是否可以使用Orange离散存储在numpy数组中的数据?

2 个答案:

答案 0 :(得分:1)

d_iris.X已经是一个numpy数组,但是您将丢失目标值和标头。 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.]])

答案 1 :(得分:0)

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)

再次将结果转换为熊猫数据框:

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

它也可以以numpy的形式使用:

final_data.values