繁体   English   中英

新手:如何评估 model 以提高分类中 model 的准确度

[英]Newbie : How evaluate model to increase accuracy model in classification

我的数据

在此处输入图像描述

我如何提高 model 的精度,如果我的一些模型在运行时产生如下结果`

from sklearn.tree import DecisionTreeClassifier
classifier = DecisionTreeClassifier(criterion = 'entropy', random_state = 0)
classifier.fit(X_train, y_train)

# Predicting the Test set results
y_pred = classifier.predict(X_test)

# Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)

from sklearn import metrics
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
Accuracy: 0.6780893042575286

` 随机森林分类器:准确度:0.6780893042575286

有几种方法可以实现这一点:

  1. 看看数据。 它们是否处于算法的最佳状态? 关于NaN,协方差等? 它们是否已标准化,分类的是否翻译得很好? 对于论坛来说,这是一个影响深远的问题。

  2. 查看问题和适合此问题的不同算法。 也许

  • 逻辑回归
  • SVN
  • XGBoost
  • ……
  1. 尝试使用 RandomisedservCV 或 GridSearchCV 进行超参数调整

这是相当高级的。

在 model 选择方面,您可以使用如下所示的 function 找到适合该问题的好 model。

from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.naive_bayes import GaussianNB
from xgboost import XGBClassifier
from sklearn import model_selection
from sklearn.utils import class_weight
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix


def mutli_model(X_train, y_train, X_test, y_test):
""" Function to determine best model archietecture """

    dfs = []
    models = [
              ('LogReg', LogisticRegression()), 
              ('RF', RandomForestClassifier()),
              ('KNN', KNeighborsClassifier()),
              ('SVM', SVC()), 
              ('GNB', GaussianNB()),
              ('XGB', XGBClassifier(eval_metric="error"))
            ]

    results = []
    names = []
    scoring = ['accuracy', 'precision_weighted', 'recall_weighted', 'f1_weighted', 'roc_auc']
    target_names = ['App_Status_1', 'App_Status_2']

    for name, model in models:
            kfold = model_selection.KFold(n_splits=5, shuffle=True, random_state=90210)
            cv_results = model_selection.cross_validate(model, X_train, y_train, cv=kfold, scoring=scoring)
            clf = model.fit(X_train, y_train)
            y_pred = clf.predict(X_test)
            print(name)
            print(classification_report(y_test, y_pred, target_names=target_names))
            results.append(cv_results)
            names.append(name)

            this_df = pd.DataFrame(cv_results)
            this_df['model'] = name
            dfs.append(this_df)
            
    final = pd.concat(dfs, ignore_index=True)
    return final

选择 model 后,您可以进行称为超参数调整的操作,这将进一步提高模型的性能。

如果您想进一步改进 model,您可以实施数据增强等技术,并重新审视数据的清理阶段。

如果毕竟,如果它仍然没有改善,您可以尝试收集更多数据或重新关注问题陈述。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM