您的位置 首页 php

机器学习中的决策树-鸟瞰图

什么是 决策树

决策树是类似流程图的结构,其中每个内部节点表示对属性的“测试”(例如,硬币翻转是否出现在头部或尾部),每个分支代表测试的结果,并且每个叶节点表示class label(在计算所有属性后做出的决定)。

简而言之,决策树检查属性或属性集是否满足条件,并且基于检查结果,执行后续检查。树根据这些检查将数据分成不同的部分。

导入必要的Python库

读取数据集

data = pd.read_ csv (‘../input/column_3C_weka.csv’)

这里使用的数据集是orthopedic patients的生物力学特征()

相关性是什么?

相关性是一个统计学术语,通常指的是两个变量之间的线性关系有多近。

例如,两个线性相关的变量(比如x和y, x = 2y)比两个非线性相关的变量(比如u和v, u = sqr(v))具有更高的相关性

可视化 相关性

# Calculating the correlation matrix

corr = data.corr()

# Generating a heatmap

sns.heatmap(corr,xticklabels=corr.columns, yticklabels=corr.columns)

1534765794672ceb18d4a3c

Correlation heat map

sns.pairplot(data)

15347658257267e291a0d55

Pair plot to visualize the correlation

在上面的两个图中,您可以清楚地看到具有较高相关性的 自变量 对具有比具有相对较小相关性的自变量具有更多线性散点图。

将数据集分割成自变量(x)和 因变量 (y)

x = data.iloc[:,:6].values

y = data.iloc[:,6].values

将数据集拆分为训练和测试数据

训练数据用于训练模型和测试数据以验证模型的性能

x_train , x_test, y_train, y_test = train_test_split(x, y, test_size = 0.25, random_state = 0)

缩放自变量

sc = StandardScaler()

x_train = sc.fit_transform(x_train)

x_test = sc.transform(x_test)

建立决策树

这里的准则是熵。标准参数决定了函数来衡量分割的质量。当熵被用作准则时,每一次分割都试图减少数据那部分的随机性。

使用的另一个参数是max_depth。这决定了树的深度。

classifier = DecisionTreeClassifier(criterion = ‘entropy’, max_depth = 4)

classifier.fit(x_train, y_train)

对测试数据进行预测

y_pred = classifier. predict (x_test)

什么是 混淆矩阵

混淆矩阵是用于总结分类算法的性能的技术。如果每个类中的观察数量不等,或者数据集中有两个以上的类,则单独的分类准确性可能会产生误导。计算混淆矩阵可以让您更好地了解分类模型的正确性以及它所犯的错误类型

cm = confusion_matrix(y_test, y_pred)

accuracy = sum(cm[i][i] for i in range(3)) / y_test.shape[0]

print(“accuracy = ” + str(accuracy))

可视化决策树

dot_data = StringIO()

export_graphviz(classifier, out_file=dot_data,

filled=True, rounded=True,

special_characters=True)

graph = pydotplus.graph_from_dot_data(dot_data.getvalue())

Image(graph.create_png())

1534765911201fe7c8ca830

具有max_depth参数的决策树

构建没有max_depth参数的模型

classifier2 = DecisionTreeClassifier(criterion = ‘entropy’)

classifier2.fit(x_train, y_train)

y_pred2 = classifier2.predict(x_test)

cm2 = confusion_matrix(y_test, y_pred2)

accuracy2 = sum(cm2[i][i] for i in range(3)) / y_test.shape[0]

print(“accuracy = ” + str(accuracy2))

在没有max_depth参数的情况下可视化决策树

dot_data = StringIO()

export_graphviz(classifier2, out_file=dot_data,

filled=True, rounded=True,

special_characters=True)

graph = pydotplus.graph_from_dot_data(dot_data.getvalue())

Image(graph.create_png())

1534765961439f5dcb59883

没有max_depth参数的决策树

现在,考虑包含和不包含max_depth参数的树的叶子节点(终端节点)。您将注意到,在没有max_depth参数的情况下,树中的所有终端节点的熵都为零,而在有这个参数的情况下,树中的三个节点的熵为非零。这是因为在没有提到参数的情况下,递归地进行分割,直到终端节点的熵为零。

文章来源:智云一二三科技

文章标题:机器学习中的决策树-鸟瞰图

文章地址:https://www.zhihuclub.com/37361.shtml

关于作者: 智云科技

热门文章

网站地图