现实中常常遇到多分类的任务,我们可以利用二分类器来解决这种多分类为题,常用的方法由:
- 一对一 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)
网友评论