【问题标题】:Support in confusion matrix支持混淆矩阵
【发布时间】:2020-11-30 00:12:18
【问题描述】:

我有一个不平衡的数据集,我正在使用 SMOTE 算法对其进行平衡。在我打印混淆矩阵时进行过采样后,它显示了以下输出:

支持:'0' 91 支持:'1' 209

我有一个包含 1000 个标签的数据集 1 出现 700 次,标签 0 出现 300 次,我使用 0.3 作为测试数据,但为什么它显示我支持 91 和 209?
即使我不应用 SMOTE 算法,它也会向我显示 91 和 209,应用 SMOTE 后它是相同的。

【问题讨论】:

    标签: python machine-learning confusion-matrix smote


    【解决方案1】:

    澄清

    首先,这不是混淆矩阵,这是分类报告。它重新组合可以从混淆矩阵计算的指标。

    打击目的

    其次,您仅将SMOTE 应用于您的火车组。因此,如果您遵循某人的代码,他们会在使用 SMOTE 过采样的训练数据上训练他们的模型。但是,测试是在原始数据上完成的(这是合乎逻辑的)。

    您在火车组中使用 SMOTE 的目的是改善其不平衡性。一旦模型从新的oversampled 数据中学习了所谓的better 权重,您就可以继续测试您在执行train_test_split(X,y,test_size=0.3) 时拆分的测试数据。

    代码

    X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3)
    
    X_train_sampled , y_train_sampled = sm.fit_sample(X_train,y_train.ravel())
    
    model.fit(X_train_sampled,y_train_sampled) 
    
    model.predict(X_test)
    

    【讨论】:

    • 你的意思是我应该先写行X_train, y_train = sm.fit_sample(X_train, y_train.ravel())然后申请X_train, X_test, y_train, y_test = train_test_split(df.loc[:, feature_names], df[class_col_name], test_size=0.3,random_state=1)
    • @AHF 修改了答案以显示代码的外观
    猜你喜欢
    • 2018-04-07
    • 2019-02-12
    • 2018-01-15
    • 1970-01-01
    • 2015-12-17
    • 2020-10-01
    • 2012-01-20
    • 2019-11-23
    • 1970-01-01
    相关资源
    最近更新 更多