我正在学习Python Scikit-learn 。
我最近在问题集上实施了d-tree
。数据集具有所有分类特征,与R不同,Python需要对分类变量进行虚拟编码。
我使用以下代码执行了所有分类变量的虚拟编码:
col_names =['city_name','signup_os','signup_channel']
df_with_dummies = pd.get_dummies(df2, columns = col_names)
虚拟编码根据每列所具有的因子数创建新列,然后用0和1替换值:
我在这个新的数据帧上创建了一个d-tree
算法,但令我困惑的是输出。
d-tree
方法已为虚拟编码列提供 .5 的节点值:
如何解释输出?价值sign_up_os_windows <=.5
的意义是什么?我应该如何将其转换回原始变量?
请帮助我提供您的意见。
答案 0 :(得分:2)
DT
分类器将二进制分类变量表示为float 0.5 不是问题。条件signup_os_ios_web <= 0.5
与signup_os_ios_web == 0.0
; 让我假设 0 状态&#39;否&#39;和 1 状态&#39;是&#39;。在您的情况下,请考虑指示signup_os_ios_web
的第一个节点:
signup_os_ios_web <= 0.5
因此等于0),然后它继续发展给它的孩子,特别是Eagerness
; signup_os_windows
二进制虚拟......依此类推。将 0.5 视为一个简单的中等阈值或 0 和 1 之间的中心,它基本上划分了“是”&#39;并且没有&#39;两种可能的偶然事件。
让我们看看由22个样本组成的缩短的泰坦数据集。 X
如下所示:
Indexer (0) (1) (2) (3)
PassengerID Pclass Sex Age Fare
1 3 1 22.00 7.2500
2 1 0 38.00 71.2833
3 3 0 26.00 7.9250
4 1 0 35.00 53.1000
5 3 1 35.00 8.0500
如您所见,Sex
列是一个二进制分类变量,索引等于1.
y
是一个数组,表示一个人是否幸存。如果我们打印出前5个样本,我们将收到:
数组([0,0,0,0,0])
这意味着从这个变量中取出的前5个人无法成功。
好的,在我们安装了DT
分类器之后,我们可以创建一个图表来更彻底地查看树结构(我使用export_graphviz
来实现它):
第一个节点表示给定样本的性别,索引 1 与上面列出的名为Sex
的列相关。列PassengerID
只是X
数据框的索引器。
您还可以看到条件与您的相似,因为阈值等于 0.5 。你可以把它读作:
如果性别为女性(如果
Sex <= 0.5
使其自动等于0),请继续执行左侧节点。
我希望澄清。