构造多分类器的常用方法

现实中常常遇到多分类的任务,我们可以利用二分类器来解决这种多分类为题,常用的方法由:

  • 一对一 one vs one,ovoSvms,
    将n个类别两两配对,产生n(n-1)/2个二分类任务
  • 一对多 ovr
    每次将一个类别作为正例,其余作为负例,产生n个二分类任务
  • 多对多 ovo
    部分类别作为正例,其余类别作为负例

重点介绍OVR方法:
首先根据n个类别训练n个模型:

models = {}
for origin in unique_origins:
    lr=LogisticRegression()
    x_train=cars[features]
    y_train=cars['origin']==origin#因为预测列只能是binary classification,所以应把它转化为只有0/1或true/false的形式。
    lr.fit(x_train,y_train)
    models[origin]=lr

使用每个模型进行预测,建立一个预测概率结果的dataframe,选取每行中最大概率所在col作为预测的分类结果:

testing_probs = pd.DataFrame(columns=unique_origins)
for origin in unique_origins:
    predictions=models[origin].predict_proba(test[features])
    testing_probs[origin]=predictions[:,1]

predicted_origins=testing_probs.idxmax(axis=1)
print(predicted_origins)

你可能感兴趣的:(构造多分类器的常用方法)