⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 owattributedistance.py

📁 orange源码 数据挖掘技术
💻 PY
字号:
"""
<name>Attribute Distance</name>
<description>Computes attribute distance for given data set.</description>
<icon>icons/AttributeDistance.png</icon>
<contact>Blaz Zupan (blaz.zupan(@at@)fri.uni-lj.si)</contact> 
<priority>1100</priority>
"""

import orange, math
import OWGUI
from qt import *
from qtcanvas import *
from OWWidget import *
import random
import orngInteract
import warnings
warnings.filterwarnings("ignore", module="orngInteract")

##############################################################################
# main class

class OWAttributeDistance(OWWidget):	
    settingsList = ["ClassInteractions"]

    def __init__(self, parent=None, signalManager = None, name='AttributeDistance'):
        self.callbackDeposit = [] # deposit for OWGUI callback functions
        OWWidget.__init__(self, parent, signalManager, name) 

        self.inputs = [("Examples", ExampleTable, self.dataset)]
        self.outputs = [("Distance Matrix", orange.SymMatrix)]

        self.data = None        

        self.ClassInteractions = 0
        self.loadSettings()
        self.classIntCB = OWGUI.checkBox(self.controlArea, self, "ClassInteractions", "Use class information", callback=self.toggleClass)
        self.classIntCB.setDisabled(True)
        self.resize(215,50)
#        self.adjustSize()

    ##############################################################################
    # callback functions

    def computeMatrix(self):
        if self.data:
            atts = self.data.domain.attributes
            im = orngInteract.InteractionMatrix(self.data, dependencies_too=1)
            (diss,labels) = im.depExportDissimilarityMatrix(jaccard=1)  # 2-interactions

            matrix = orange.SymMatrix(len(atts))
            matrix.setattr('items', atts)
            for i in range(len(atts)-1):
                for j in range(i+1):
                    matrix[i+1, j] = diss[i][j]
            return matrix
        else:
            return None

    def toggleClass(self):
        """TODO!!!
        """
        self.sendData()


    ##############################################################################
    # input output signal management

    def dataset(self, data):
        if data and len(data.domain.attributes):
            self.data = orange.Preprocessor_discretize(data, method=orange.EquiNDiscretization(numberOfIntervals=5))
##            print self.data.domain
##            self.classIntCB.setDisabled(self.data.domain.classVar == None)
        else:
            self.data = None
        self.sendData()


    def sendData(self):
        if self.data:
            matrix = self.computeMatrix()
        else:
            matrix = None
        self.send("Distance Matrix", matrix)
        

##################################################################################################
# test script

if __name__=="__main__":
    import os
    if os.path.isfile(r'../../doc/datasets/voting.tab'):
        data = orange.ExampleTable(r'../../doc/datasets/voting')
    else:
        data = orange.ExampleTable('voting')
    a = QApplication(sys.argv)
    ow = OWAttributeDistance()
    a.setMainWidget(ow)
    ow.show()
    ow.dataset(data)
    a.exec_loop()
    ow.saveSettings()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -