56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
from sklearn.exceptions import ConvergenceWarning
|
|
from sklearn.linear_model import LogisticRegression
|
|
from sklearn.naive_bayes import MultinomialNB
|
|
from sklearn.neighbors import KNeighborsClassifier
|
|
from statsmodels.sandbox.distributions.genpareto import quant
|
|
|
|
import quapy as qp
|
|
from quapy.protocol import UPP
|
|
from quapy.method.aggregative import PACC, DMy, EMQ, KDEyML
|
|
from quapy.method.meta import SCMQ, MCMQ, MCSQ
|
|
import warnings
|
|
warnings.filterwarnings("ignore", category=DeprecationWarning)
|
|
warnings.filterwarnings("ignore", category=ConvergenceWarning)
|
|
|
|
qp.environ["SAMPLE_SIZE"]=100
|
|
|
|
def train_and_test_model(quantifier, train, test):
|
|
quantifier.fit(train)
|
|
report = qp.evaluation.evaluation_report(quantifier, UPP(test), error_metrics=['mae', 'mrae'])
|
|
print(quantifier.__class__.__name__)
|
|
print(report.mean(numeric_only=True))
|
|
|
|
|
|
quantifiers = [
|
|
PACC(),
|
|
DMy(),
|
|
EMQ(),
|
|
KDEyML()
|
|
]
|
|
|
|
classifier = LogisticRegression()
|
|
|
|
dataset_name = qp.datasets.UCI_MULTICLASS_DATASETS[0]
|
|
data = qp.datasets.fetch_UCIMulticlassDataset(dataset_name)
|
|
train, test = data.train_test
|
|
|
|
scmq = SCMQ(classifier, quantifiers)
|
|
|
|
train_and_test_model(scmq, train, test)
|
|
|
|
# for quantifier in quantifiers:
|
|
# train_and_test_model(quantifier, train, test)
|
|
|
|
classifiers = [
|
|
LogisticRegression(),
|
|
KNeighborsClassifier(),
|
|
# MultinomialNB()
|
|
]
|
|
|
|
mcmq = MCMQ(classifiers, quantifiers)
|
|
|
|
train_and_test_model(mcmq, train, test)
|
|
|
|
mcsq = MCSQ(classifiers, PACC())
|
|
|
|
train_and_test_model(mcsq, train, test) |