如何使用 Orange 离散化存储在 numpy 数组中的数据?
How to discretize stored data in numpy array using 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')
- 这只是一个例子,我不仅在使用 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)
然而,此方法仅适用于橙色数据 table,不适用于 numpy 数组。
有没有办法使用 Orange 来离散化存储在 numpy 数组中的数据?
d_iris.X
已经是一个 numpy 数组,但是你会失去目标值和 header。 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.]])
Orange 能够将 Panda 数据帧转换为 Orange 的 table,因此首先将您的数据转换为 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)
然后将其转换为橙色table:
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
我有一组数据存储在 "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)
然而,此方法仅适用于橙色数据 table,不适用于 numpy 数组。
有没有办法使用 Orange 来离散化存储在 numpy 数组中的数据?
d_iris.X
已经是一个 numpy 数组,但是你会失去目标值和 header。 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.]])
Orange 能够将 Panda 数据帧转换为 Orange 的 table,因此首先将您的数据转换为 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)
然后将其转换为橙色table:
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