示例#1
0
 def up(self):
     info.read_file()
     tb.buildTree(info.alist)
     ft4 = tkFont.Font(size=12)
     str0 = update(i1.get(), i2.get(), i3.get(), i4.get(), i5.get(),
                   i6.get())
     Label(self, text=str0, font=ft4).pack()
def delete(e1):#e1.姓名  
    print("->已选择 删除成员记录")
#     print("请选择操作:")
    name = e1
    result = bs.circle("姓名", name)
    if result == -1:
        str1 = "您所查询的成员不存在。"
        return str1
    else:
        if len(result) > 1:
            print("查询到多位成员,请输入其对应的编号以选择成员:")
            for i in result:
                print(i)
                print(bs.alist[i])
            idx = input("显示完毕,请选择:")
            idx = int(idx)
        else:
            idx = result[0]
        if tb.family[idx].kids == []:
            if tb.family[idx].spouse == -1:  # 情况1:删除对象无后代,无配偶,直接删除
                del bs.alist[idx]
                save_file(bs.alist)
                tb.buildTree(bs.alist)
                str1 = "删除成功!"
                return str1
            else:  # 情况2:删除对象无后代,有配偶,一并删除
                del bs.alist[idx]
                spouse = tb.family[idx].spouse
                del bs.alist[spouse - 1]
                save_file(bs.alist)
                tb.buildTree(bs.alist)
                str1 = "删除成功!"
                return str1
        else:
            clist = []
            count = 0
            if tb.family[idx].spouse == -1:
                if len(tb.family[idx].kids) == 1:  # 情况3:删除对象有后代,无配偶,只有一个孩子,孩子做根节点
                    search_kids_and_spouse(idx,clist,count)
                    del bs.alist[idx - count]
                    str1 = save_new_file(clist, bs.alist)
                    return str1
                else:  # 情况4:删除对象有后代,无配偶,有多个孩子,该对象做根节点
                    clist.append(bs.alist[idx])
                    search_kids_and_spouse(idx,clist,count)
                    str1 = save_new_file(clist, bs.alist)
                    return str1
            else:  # 情况5:删除对象有后代,有配偶,配偶做根节点
                spouse = tb.family[idx].spouse
                search_kids_and_spouse(idx, clist,count)
                del bs.alist[idx - count]
                str1 = save_new_file(clist, bs.alist)
                return str1
def update(i1, i2, i3, i4, i5, i6):  # 江:更改操作  #桂:i1姓名 i2序号 i3新信息 i4修改亲属的名字 i5是否要修改亲属关系 i6描述新关系
    
    print("->已选择 更新成员记录")
    name = i1
    result = bs.circle("姓名", i1)
    if result == -1:
        str1 = "您所查询的成员不存在。"
        return str1
    else:
        if len(result) > 1:
            print("查询到多位成员,请输入其对应的编号以选择成员:")
            for i in result:
                print(i)
                print(bs.alist[i])
            idx = input("显示完毕,请选择:")
            idx = int(idx)
        else:
            idx = result[0]
#         print("请输入需更改的信息编号")
        func = i2
        func = int(func)
        if func == 0:
            return
        elif func == 9:
#             tmp = input("请输入要更改的亲属:")
            tmp = i4
#             j = input('是否更改与该亲属的关系(1.是 2.否)')
            j = i5
            j = int(j)
            if j == 2:
                rela_idx = bs.alist[idx]['关系']
                str1 = search_tree_idx(rela_idx,idx, name, tmp)
                return str1
            elif j == 1:
#                 rela_idx = input("请输入上述亲属为该成员的(0.配偶 1.父亲/母亲 2.儿子/女儿):")
                rela_idx = i6
                str1 = search_tree_idx(rela_idx, idx, name, tmp)
                return str1
#         elif func == 10:
#             tmp = bs.alist[idx]['亲属']
#             E = format(tmp)
# #             rela_idx = input("请输入{}为该成员的(0.配偶 1.父亲/母亲 2.儿子/女儿):".format(tmp))
#             rela_idx = i7
#             search_tree_idx(rela_idx, idx, name, tmp)
        else:
#             str = "请输入要更改的{}:".format(bs.title[func - 1])
#             tmp = input(str)
            tmp = i3
            bs.alist[idx][bs.title[func - 1]] = tmp
            tb.buildTree(bs.alist)
            save_file(bs.alist)
            str1 = "修改成功!"
            return str1
示例#4
0
def evaluate_kfold(dataset, process_dataset, max_depth, min_size, n_folds,
                   *args):
    folds = kcs.cross_validation_split(dataset, n_folds)
    scores = list()

    for fold in folds:
        train_set = list(folds)
        train_set.remove(fold)
        train_set = sum(train_set, [])

        X_train, y_train = process_dataset(train_set)

        i = 0
        for row in X_train:
            row.append(y_train[i])
            i += 1

        node = tb.build_tree(X_train, max_depth, min_size)

        predicted = list()
        X_test, y_test = process_dataset(fold)

        for row in X_test:
            predicted.append(predict(node, row))

        accuracy = accuarcy_metric(actual=y_test, predicted=predicted)
        f1 = f1_score(y_test, predicted)
        scores.append({'accuracy': accuracy, 'F1_score': f1})

    return scores
def search_tree_idx(rela_idx,idx,name,tmp):
    rela = find_rela(name, tmp)
    if rela != None:
        if rela_idx == 0:
            if tb.family[rela].spouse == -1:  # 不存在配偶方可修改
                bs.alist[idx]["亲属"] = tmp
                bs.alist[idx]["关系"] = rela_idx
                tb.buildTree(bs.alist)
                save_file(bs.alist)
                str1 = "修改成功!"
                return str1
            else:
                str1 = "该亲属已存在配偶"
                return str1
        else:  # 其他情况可直接修改
            bs.alist[idx]["亲属"] = tmp
            bs.alist[idx]["关系"] = rela_idx
            tb.buildTree(bs.alist)
            save_file(bs.alist)
            str1 = "修改成功!"
            return str1 
示例#6
0
def evaluate_kfold(dataset, process_dataset, max_depth, min_size, n_folds,
                   *args):
    folds = kcs.cross_validation_split(dataset, n_folds)
    scores = list()
    best_node = []
    training_s = []
    for fold in folds:
        train_set = list(folds)
        train_set.remove(fold)
        train_set = sum(train_set, [])

        X_train, y_train = process_dataset(train_set)

        i = 0
        for row in X_train:
            row.append(y_train[i])
            i += 1
        node = tb.build_tree(X_train, max_depth, min_size)
        best_node.append(node)
        predicted = list()
        training = list()
        X_test, y_test = process_dataset(fold)

        for row in X_test:
            predicted.append(predict(node, row))

        for test in X_train:
            training.append(predict(node, test))

        accuracy = accuarcy_metric(actual=y_test, predicted=predicted)
        train_score = accuarcy_metric(actual=y_train, predicted=training)
        f1 = f1_score(y_test, predicted)
        scores.append({
            'training_score': train_score,
            'accuracy': accuracy,
            'F1_score': f1
        })
        training_s.append(train_score)
    #get position for max Accuracy
    position = training_s.index(max(training_s))
    best_tree = best_node[position]

    return scores, best_tree
                    'cdNorm_st': nscore_st
                }

            except EOFError:
                break
            except:

                try:
                    print("Quote error on: %d" % unit['id'])

                    q1_stanford = _getNLPToks_(unit['q1']['raw'].replace(
                        '"', '').replace("'", ''))
                    q2_stanford = _getNLPToks_(unit['q2']['raw'].replace(
                        '"', '').replace("'", ''))

                    tree_1 = tb.tree()
                    tree_2 = tb.tree()

                    # Generate a tree structure
                    tb._generateTree_(q1_stanford['parse'], tree_1)
                    tb._generateTree_(q2_stanford['parse'], tree_2)

                    # Flip the trees
                    tb._flipTree_(tree_1)
                    tb._flipTree_(tree_2)

                    (rscore_st,
                     nscore_st) = tk._CollinsDuffy_(tree_1, tree_2,
                                                    sys.argv[2], 1,
                                                    sys.argv[3])
示例#8
0
 def averageP(self):
     info.read_file()
     tb.buildTree(info.alist)
     ft4 = tkFont.Font(size=12)
     str6 = avg_people()
     Label(self, text=str6, font=ft4).pack()
示例#9
0
 def searchA(self):
     info.read_file()
     tb.buildTree(info.alist)
     ft4 = tkFont.Font(size=12)
     str2 = tb.search_rela_info(p1.get(), p2.get(), p3.get(), p4.get())
     Label(self, text=str2, font=ft4).pack()
示例#10
0
 def dell(self):
     info.read_file()
     tb.buildTree(info.alist)
     ft4 = tkFont.Font(size=12)
     strn = delete(e1.get())
     Label(self, text=strn, font=ft4).pack()
示例#11
0
 def TS(self):
     info.read_file()  #三行测试功能函数,可删除
     ft3 = tkFont.Font(size=14)
     tb.buildTree(bs.alist)
     tree_search(family[0], 0)
     Label(self, text='树形图已经显示在代码下方运行结果区域', font=ft3).pack(side=TOP)