首页 > 解决方案 > 多类分类机器学习

问题描述

我正在研究多类分类问题(我有 3 个不同的类),我正在尝试应用软投票分类器,但出现此错误:ValueError: Supported target types are: ('binary', 'multiclass'). Got 'multilabel-indicator' instead. 这是我的代码:

#convert y_train and y_test to binary format as required by multiclass classification algorithms.
lb = LabelBinarizer()
y_train = lb.fit_transform(y_train)
y_test = lb.transform(y_test)
# try soft voting
# get a voting ensemble of models
def get_voting():
   #define the base models
    models = list()
    models.append(('lgrb',LogisticRegression()))
    models.append(('dtrb',DecisionTreeClassifier()))
    models.append(('svlb',LinearSVC()))
    models.append(('rfcb',RandomForestClassifier()))
    models.append(('nncb',MLPClassifier()))
    # define the voting ensemble
    ensemble = VotingClassifier(estimators=models, voting='soft')
    return ensemble
# get a list of models to evaluate
def get_models():
    models = dict()
    models['lgrb'] = LogisticRegression()
    models['dtrb'] = DecisionTreeClassifier()
    models['svlb'] = LinearSVC()
    models['rfcb'] = RandomForestClassifier()
    models['nncb'] = MLPClassifier()
    models['soft_voting'] = get_voting()
    return models
 # evaluate a give model using cross-validation
def evaluate_model(model, X, y):
    cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
    scores = cross_val_score(model, X, y, scoring='accuracy', cv=cv, n_jobs=-1, 
              error_score='raise')
    return scores
# evaluate the models and store results
results, names = list(), list()
for name, model in models.items():
    scores = evaluate_model(model, X_train, y_train)
    results.append(scores)
    names.append(name)
    print('>%s %.3f (%.3f)' % (name, mean(scores), std(scores)))

如下面的屏幕截图所示,这是使用 y_test 的 LabelBinarizer() 样本后 y_test 的样子

请你帮助我好吗!

标签: python-3.xnumpyscikit-learn

解决方案


推荐阅读