document_classification_20newsgroups.py 文件源码

python
阅读 18 收藏 0 点赞 0 评论 0

项目:ShallowLearn 作者: giacbrd 项目源码 文件源码
def benchmark(clf):
    global train_duration, test_duration
    print('_' * 80)
    print("Training: ")
    print(clf)
    t0 = time()
    if isinstance(clf, (GensimFastText, FastText)):
        clf.fit(train_text, y_train)
        train_time = time() - t0
    else:
        clf.fit(X_train, y_train)
        train_time = train_duration + (time() - t0)
    print("train time: %0.3fs" % train_time)

    t0 = time()
    if isinstance(clf, (GensimFastText, FastText)):
        pred = clf.predict(test_text)
        test_time = time() - t0
        # fix unknown predictions
        pred = [most_freq if p is None else p for p in pred]
    else:
        pred = clf.predict(X_test)
        test_time = test_duration + (time() - t0)
    print("test time:  %0.3fs" % test_time)

    score = metrics.f1_score(y_test, pred, average='macro')
    print("macro F1:   %0.3f" % score)

    if hasattr(clf, 'coef_'):
        print("dimensionality: %d" % clf.coef_.shape[1])
        print("density: %f" % density(clf.coef_))

        if opts.print_top10 and feature_names is not None:
            print("top 10 keywords per class:")
            for i, category in enumerate(categories):
                top10 = np.argsort(clf.coef_[i])[-10:]
                print(trim("%s: %s"
                      % (category, " ".join(feature_names[top10]))))
        print()

    if opts.print_report:
        print("classification report:")
        print(metrics.classification_report(y_test, pred,
                                            target_names=categories))

    if opts.print_cm:
        print("confusion matrix:")
        print(metrics.confusion_matrix(y_test, pred))

    print()
    clf_descr = str(clf).split('(')[0]
    return clf_descr, score, train_time, test_time
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号