使用统计模型的顺序逻辑回归预测和准确性

问题描述 投票:0回答:1

我正在尝试使用 statsmodels 进行有序逻辑回归分析。但是,我得到的预测与使用 SciKit-Learn 时得到的预测大不相同

LogisticRegression
.

我正在使用类似于以下的数据集。目的是根据

quality
1-10
的组合来预测
chlorides
(在
sulphates
的尺度上)。

氯化物 硫酸盐 品质
0.076 0.56 5
0.098 0.68 5
0.092 0.65 5
0.075 0.58 6
0.076 0.56 5
... ... ...

我使用的代码:

import numpy as np
from sklearn import metrics
from sklearn.model_selection import train_test_split
from statsmodels.miscmodels.ordinal_model import OrderedModel

y = df['quality']
X = df[['chlorides', 'sulphates']]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=20)

mod_probe = OrderedModel(y_train, X_train, distr='logit')
res_log = mod_probe.fit(method='bgfs')

predicted = res_log.model.predict(res_log.params, np.array(X_test)[:, None])

predicted
样本:

array([[[0.00394536, 0.02194635, 0.32950146, 0.47302334, 0.15847723,
         0.01310626]],

       [[0.01405662, 0.07326043, 0.57761266, 0.2806573 , 0.05073693,
         0.00367607]],

       [[0.02683372, 0.12930636, 0.63716285, 0.17780338, 0.02698959,
         0.0019041 ]],

       ...,

当我做

metrics.accuracy_score(y_test, predicted)

我得到错误

ValueError: Classification metrics can't handle a mix of multiclass and unknown targets

我已经对此进行了很多小时的搜索,但似乎无法破解它。任何帮助将不胜感激。非常感谢。

python machine-learning logistic-regression prediction statsmodels
1个回答
0
投票

分类指标需要输入有限的类别,例如,如果类别范围是 [0,2],那么它需要像 0,1,2 这样的值,但在你的情况下你给出 0.001,0.5 等。logits 输出连续值但分类指标需要离散值。要修复此问题,请在执行预测的行之后添加

predicted = list(map(round, predicted ))
,这应该会修复它。

© www.soinside.com 2019 - 2024. All rights reserved.