मेरे पास "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')
  • यह सिर्फ एक उदाहरण है, मैं न केवल आईरिस डेटासेट के साथ काम कर रहा हूं।

मैं ऑरेंज का उपयोग करने का प्रयास कर रहा हूं इन जारी डेटा को अलग करें।

मुझे पता है कि काम पूरा करने के लिए मैं ऐसा कुछ कर सकता हूं:

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 सरणी में संग्रहीत डेटा विवेकाधीन के लिए ऑरेंज का उपयोग करने के लिए है?

2
Ravexina 20 अक्टूबर 2018, 00:20

2 जवाब

सबसे बढ़िया उत्तर

ऑरेंज एक पांडा डेटाफ़्रेम को ऑरेंज की तालिका में बदलने में सक्षम है, इसलिए पहले अपने डेटा को पांडा डेटाफ़्रेम में परिवर्तित करें:

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_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
0
Ravexina 7 पद 2018, 11:29

d_iris.X पहले से ही एक सुन्न सरणी है, लेकिन आप लक्ष्य मान और शीर्षलेख खो देंगे। d_iris.Y वह लक्ष्य स्तंभ है जिसे आप X के साथ मर्ज कर सकते हैं। हालांकि, ध्यान रखें कि आप विवेकीकरण के बाद केवल निर्दिष्ट बिन मान देखेंगे, जिसकी व्याख्या करना मुश्किल हो सकता है।

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
vijolica 23 अक्टूबर 2018, 10:39