赞
踩
#CSDN AI写作助手创作测评
目录
决策树表示方法是应用最广泛的逻辑方法之一,它从一组无次序、无规则的事例中推理出决策树表示形式的分类规则。在决策树的内部节点进行属性值的比较,根据不同的属性值判断从该节点向下的分支,在决策树的叶节点得到结论
决策树分类算法的主要优点包括易于理解和解释、对缺失值不敏感、能处理不相关特征等。它的主要缺点是容易过拟合、对噪声敏感、不稳定等问题。
在实践中,决策树分类算法可以使用不同的算法实现,如ID3、C4.5和CART等。这些算法的主要区别在于如何选择属性、如何处理连续值属性和如何处理缺失值等方面。
ID3算法是一种决策树学习算法,通过对数据集进行递归分割来构建决策树。它基于信息增益选择最佳属性进行分裂。下面是ID3算法的基本原理:
ID3算法的缺点是对于具有连续属性和缺失值的数据集处理能力较差。因此,它常与C4.5和CART算法结合使用,用于改进这些限制。
- import math
-
- def entropy(data):
- """计算数据集的熵"""
- count = {}
- for item in data:
- if item[-1] not in count:
- count[item[-1]] = 0
- count[item[-1]] += 1
- entropy = 0
- for key in count:
- prob = count[key] / len(data)
- entropy -= prob * math.log2(prob)
- return entropy
-
- def split_data(data, feature, value):
- """根据特征和特征值划分数据集"""
- sub_data = []
- for item in data:
- if item[feature] == value:
- sub_item = item[:feature]
- sub_item.extend(item[feature+1:])
- sub_data.append(sub_item)
- return sub_data
-
- def info_gain(data, feature):
- """计算特征的信息增益"""
- count = {}
- for item in data:
- if item[feature] not in count:
- count[item[feature]] = 0
- count[item[feature]] += 1
- sub_entropy = 0
- for key in count:
- prob = count[key] / sum(count.values())
- sub_data = split_data(data, feature, key)
- sub_entropy += prob * entropy(sub_data)
- return entropy(data) - sub_entropy
-
- def choose_feature(data):
- """选择最优特征"""
- max_gain = 0
- best_feature = -1
- for i in range(len(data[0])-1):
- gain = info_gain(data, i)
- if gain > max_gain:
- max_gain = gain
- best_feature = i
- return best_feature
-
- def majority_vote(class_list):
- """多数表决"""
- count = {}
- for item in class_list:
- if item not in count:
- count[item] = 0
- count[item] += 1
- return max(count, key=count.get)
-
- def create_tree(data, labels):
- """创建决策树"""
- class_list = [item[-1] for item in data]
- if class_list.count(class_list[0]) == len(class_list):
- return class_list[0]
- if len(data[0]) == 1:
- return majority_vote(class_list)
- best_feature = choose_feature(data)
- best_label = labels[best_feature]
- tree = {best_label: {}}
- del(labels[best_feature])
- count = {}
- for item in data:
- if item[best_feature] not in count:
- count[item[best_feature]] = 0
- count[item[best_feature]] += 1
- for key in count:
- sub_labels = labels[:]
- sub_data = split_data(data, best_feature, key)
- tree[best_label][key] = create_tree(sub_data, sub_labels)
- return tree
-
- # 测试数据
- data = [
- [1, 1, 'yes'],
- [1, 1, 'yes'],
- [1, 0, 'no'],
- [0, 1, 'no'],
- [0, 1, 'no'],
- ]
- labels = ['no surfacing', 'flippers']
-
- # 构建决策树
- tree = create_tree(data, labels)
-
- # 输出熵和信息增益
- print('Entropy:', entropy(data))
- for i in range(len(labels)):
- print('Info gain of', labels[i], ':', info_gain(data, i))
ID3算法是一种决策树学习算法,其优缺点如下:
优点:
缺点:
C4.5算法是一种决策树算法,用于解决分类问题。它的主要原理是通过对数据集进行划分来构建一棵决策树,每次选择最优特征进行划分,直到所有数据都被正确分类或者没有更多的特征可用。
C4.5算法的具体步骤如下:
C4.5算法在构建决策树的过程中,还采用了剪枝操作来避免过拟合,同时能够处理连续特征和缺失值。它是ID3算法的改进,相对于ID3算法而言,C4.5算法可以处理更复杂的数据集。
C4.5算法是一种决策树分类算法,其优缺点如下:
优点:
缺点:
CSDN的AI写作相当牛了,并且操作方便;
回答速度也是相当可观的,就是总会一卡一卡的,不过无伤大雅;
写代码的能力,我也是很认可的,比我强多了;
就我而言,平时想要需求人工智能的帮助的话,用这个创作助手就完全够用了;
就目前而言,大多数的语言模型的回答模式都差不多,类似于一个模板;
如果与chatgpt3.5相比的话,我还真比不出来,感觉差不多。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。