微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

新手:如何评估模型以提高分类模型的准确性

如何解决新手:如何评估模型以提高分类模型的准确性

我的数据

enter image description here

如果我的某些模型在运行时产生如下结果,我该如何提高模型的准确性 `

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. 尝试使用 RandomisedsearvCV 或 GridSearchCV 进行超参数调整

这是相当高级的。

,

在模型选择方面,您可以使用如下函数找到适合问题的好模型。

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,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

选择模型后,您可以执行名为 Hyperparameter tuning 的操作,这将进一步提高模型的性能。

如果您想进一步改进模型,您可以实施 Data Augmentation 之类的技术,并重新审视数据的清理阶段。

如果这一切仍然没有改善,您可以尝试收集更多数据或重新聚焦问题陈述。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。