コード例 #1
0
def getMatrixDirectly_and_feature(ind):
    import GTree
    arrays = []
    feature = []
    prefixnum = 0
    features = gol.get_val("feature_method")
    classes = gol.get_val("classes")
    MaxDeapth = gol.get_val("maxDeap")
    New_Ind = GTree.GTreeGP()
    for i in xrange(len(ind.nodes_list)):
        if ind.nodes_list[i].getType() == nodeType["NONTERMINAL"]:
            prefixnum = prefixnum + 1
            for j in xrange(0, len(classes)):
                locals()[classes[j]] = classes[j]

            New_Ind.setRoot(ind.nodes_list[i])
            array = eval(New_Ind.getCompiledCode())
            arrays.append(list(array))
        else:
            arrays.append(list(ind.nodes_list[i].getData()))

    for i in xrange(len(arrays)):
        for j in xrange(len(features)):
            if features[j] in arrays[i]:
                feature.append(features[j])
                arrays[i].remove(features[j])

    pre_order = ind.nodes_list
    cem = CEM(MaxDeapth, classes, prefixnum)
    cem.construct_tree(pre_order, arrays)
    ecocMatrix = np.array(cem.getMatrix())
    feature = np.array(feature)

    #1.There being a column with all 0 or 1 or -1
    deletes = LC.zeroColumn(ecocMatrix)
    ecocMatrix = np.delete(ecocMatrix, deletes, axis=1)
    feature = np.delete(feature, deletes, axis=0)

    #2.There being a column that is lack of 1 or -1
    deletes = LC.onlyOneColumn(ecocMatrix)
    ecocMatrix = np.delete(ecocMatrix, deletes, axis=1)
    feature = np.delete(feature, deletes, axis=0)

    #3.Two columns having the same numbers
    deletes = LC.sameColumns(ecocMatrix, feature)
    ecocMatrix = np.delete(ecocMatrix, deletes, axis=1)
    feature = np.delete(feature, deletes, axis=0)

    #4.Two columns having the opposite numbers
    deletes = LC.opstColumns(ecocMatrix, feature)
    ecocMatrix = np.delete(ecocMatrix, deletes, axis=1)
    feature = np.delete(feature, deletes, axis=0)
    #############################
    return ecocMatrix, feature