基于python的决策树能进行多分类吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于python的决策树能进行多分类吗相关的知识,希望对你有一定的参考价值。
新手小白一个,想请问各位大神一个问题:假设有ABC三种类别,使用决策树算法(只能进行二分类)进行分类,如果区分AB的准确率是90%,区分AC的准确率是85%,区分BC的准确率是80%,那正确区分A,B,C的准确率是多少?
请问是从统计学的角度还是别的什么方法能对这个问题进行解释?
不胜感谢!!!
决策树主文件 tree.py
[python] view plain copy
# coding: utf-8
from math import log
import json
from plot import createPlot
class DecisionTree():
def __init__(self,criterion = "entropy"):
self.tree = None
self.criterion = criterion
def _is_continuous_value(self,a):
# 判断一个值是否是连续型变量
if type(a).__name__.lower().find('float')>-1 or \\
type(a).__name__.lower().find('int')>-1:
return True
else:
return False
def _calc_entropy(self,dataset):
# 计算数据集的香农熵
classes = dataset.ix[:,-1]
total = len(classes)
cls_count =
for cls in classes:
if cls not in cls_count.keys():
cls_count[cls] = 0
cls_count[cls] += 1
entropy = 1.0
for key in cls_count:
prob = float(cls_count[key]) / total
entropy -= prob * log(prob, 2)
return entropy
def _calc_gini(self,dataset):
# 计算数据集的Gini指数
classes = dataset.ix[:,-1]
total = len(classes)
cls_count =
for cls in classes:
if cls not in cls_count.keys():
cls_count[cls] = 0
cls_count[cls] += 1
gini = 1.0
for key in cls_count:
prob = float(cls_count[key]) / total
gini -= prob ** 2
return gini
def _split_data_category(self, dataset, feature, value):
# 对分类变量进行拆分
# 将feature列的值为value的记录抽取出来,同时删除feature列
机器学习SVM多分类问题及基于sklearn的Python代码实现
SVM多分类问题及Python代码实现
1. 什么是SVM?
对于这个点已经介绍的非常多了,不管是西瓜书还是各种博客,就是需要找到一个超平面,用这个超平面把数据划分成两个类别,最开始的SVM就是在二分类的问题上应用,在之后被扩展到多类别的分类。对于SVM的推导公式不是很复杂,在此就不进行推导,大概清楚最基本的原理然后就进行应用就可以了。
如上图所示,我们就是要找到中间这条线,使得 ∣ ∣ w ∣ ∣ ||w||
以上是关于基于python的决策树能进行多分类吗的主要内容,如果未能解决你的问题,请参考以下文章
Matlab基于决策树算法实现多分类预测(源码可直接替换数据)
Matlab基于决策树算法实现多分类预测(源码可直接替换数据)