机器学习算法的基础(使用Python和R代码)之 决策树

这是我最喜欢的算法之一,我经常使用它。它是一种监督学习算法,主要用于分类问题。令人惊讶的是,它既适用于分类因变量(离散型),也适用于连续因变量。在该算法中,我们基于最重要的属性/独立变量来将总体分成两个或更多个同类集,以尽可能地作为不同的组。有关更多详细信息,请参阅: 简化决策树。

机器学习算法的基础(使用Python和R代码)之 决策树

在上图中,您可以看到人口根据多个属性分为四个不同的组,以确定 “ 他们是否会玩 ”。为了将群体分成不同的异构群体,它使用了基尼系数、信息增益、卡方、熵等多种技术。

理解决策树如何工作的最好方法是玩Jezzball —— 一款来自微软的经典游戏(如下图所示)。本质上,你有一个移动墙壁的房间,你需要创建墙壁,以便最大限度的区域被球清除。
机器学习算法的基础(使用Python和R代码)之 决策树

所以,每次你用墙隔开房间时,你都试图在同一个房间里创造2个不同的种群。决策树以非常类似的方式工作,通过将群体分成尽可能不同的组。

python代码
#Import Library
#Import other necessary libraries like pandas, numpy...
from sklearn import tree
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset
# Create tree object 
model = tree.DecisionTreeClassifier(criterion='gini') # for classification, here you can change the algorithm as gini or entropy (information gain) by default it is gini  
# model = tree.DecisionTreeRegressor() for regression
# Train the model using the training sets and check score
model.fit(X, y)
model.score(X, y)
#Predict Output
predicted= model.predict(x_test)
R代码
library(rpart)
x <- cbind(x_train,y_train)
# grow tree 
fit <- rpart(y_train ~ ., data = x,method="class")
summary(fit)
#Predict Output 
predicted= predict(fit,x_test)