Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 决策树:如何手动设置决策节点_Python_Scikit Learn_Decision Tree - Fatal编程技术网

Python 决策树:如何手动设置决策节点

Python 决策树:如何手动设置决策节点,python,scikit-learn,decision-tree,Python,Scikit Learn,Decision Tree,我试图从头开始建立一个决策树。此决策树应从列表中提取一封电子邮件,并根据某些因素分配分数。 例如:假设我要测试的电子邮件是 email=“我将20000英镑转入了我们的养老金计划,但是的钱一直没有到。我向我在Brewin Dolphin的财务顾问询问了相关的银行详细信息,他通过电子邮件发送了这些信息。” 根节点:我想把根节点作为变量“包容号”。如果邮件中包含了一个编号而不是赋值0.1,否则为0。这将是两个分裂。我想只考虑二元分裂。< /P> 子节点:如果电子邮件包含列表中的单词[“财务”、“银行

我试图从头开始建立一个决策树。此决策树应从列表中提取一封电子邮件,并根据某些因素分配分数。 例如:假设我要测试的电子邮件是

email=“我将20000英镑转入了我们的养老金计划,但是的钱一直没有到。我向我在Brewin Dolphin的财务顾问询问了相关的银行详细信息,他通过电子邮件发送了这些信息。”

根节点:我想把根节点作为变量“包容号”。如果邮件中包含了一个编号而不是赋值0.1,否则为0。这将是两个分裂。我想只考虑二元分裂。< /P> 子节点:如果电子邮件包含列表中的单词<代码>[“财务”、“银行”、“计划”、“金钱”],则分配-0.1,否则为0

等等。 我知道Python中有一个内置的分类器:

from sklearn.tree import DecisionTreeClassifier # Import Decision Tree Classifier
from sklearn.model_selection import train_test_split # Import train_test_split function
from sklearn import metrics #Import scikit-learn metrics module for accuracy calculation
#split dataset in features and target variable
feature_cols = ['email', 'date', 'author', 'server']
X = pima[feature_cols] # Features
y = pima.label # Target variable

# Split dataset into training set and test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1) # 70% training and 30% test

clf = DecisionTreeClassifier()

# Train Decision Tree Classifer
clf = clf.fit(X_train,y_train)

#Predict the response for test dataset
y_pred = clf.predict(X_test)
然而,我想知道如何根据一些标准构建决策树。 谢谢你抽出时间

为了澄清我想做什么 我有以下几个专栏:

Sender         Server       Subject       Corpus       Date         % of xsuks@libero.it  libero    DEAL!!!     I want to propose a deal 29/10/2020   punctuation          % of Upper case
60                         40
我想建立一个决策树,根据我给每个变量的“权重”来考虑它们。 例如:

  • 如果垃圾邮件列表中不包含任何单词,则分配0
  • 如果电子邮件包含垃圾邮件列表中的单词,则为垃圾邮件列表中包含的每个单词分配-0.1
  • 如果发件人包含拼写错误的坏单词,则分配-0.1
  • 若发送方未包含拼写错误的坏单词,则分配0
  • 如果标点符号的百分比大于50%,则指定-0.1;否则为0;
我还有一个带标签的列,其中包括我手动指定的标签,用于在Python中自动构建决策树(使用上面显示的代码);但是,我不知道如何包含我感兴趣的所有字段,因为其中一些字段是分类字段(如发件人、主题和语料库;其他字段是数字字段,如%)。 最后,我想将我从自己的评分决策树得到的结果与从Python分类器得到的结果进行比较。 为了检查准确性,我会使用混淆矩阵或ROC


这正是我想要达到的目标。

如果能解释一下你为什么要这么做,你想达到什么目的,那就太好了。我想通过逐步实现一个算法来构建这个决策树,该算法允许我分配分数,以量化电子邮件如何被视为“垃圾邮件”,例如,查看关键字,服务器、标点符号、发件人等。也许这可以使用Python中的决策树分类器(sklearn)来完成,但我想知道如果我想从头开始构建决策树,应该怎么做,首先查看根节点,然后查看其他决策节点,如果你只是想比较一下你的人类直觉,即什么是分类垃圾邮件的有效决策树,什么是机器学习算法,那么很有可能你最终会发现ML算法会比你做得更好。这是因为我们人类不擅长直接解决多维抽象问题,除非我们定义了一个数学模型来实现这一点。第二,如果你想学习如何实现决策树,我建议从一个关于二叉树的教程开始,并尝试使用数据对其进行扩充,这些数据将允许您在每个节点中存储正在拆分的变量id和拆分点的信息。根据变量的类型,也就是说,数字变量和分类变量,如何做会有所不同。是的,你们是对的。然而,我想做的不仅仅是分配一个二进制变量(垃圾邮件而不是垃圾邮件),而是量化一封电子邮件包含多少“垃圾邮件信息”。我不知道如何使用ML算法来做到这一点。如果能解释一下你为什么要这么做,你想达到什么目的,那就好了。我想通过一步一步地实现一个算法来构建这个决策树,这个算法可以让我分配分数,量化电子邮件如何被视为“垃圾邮件”,例如,查看关键字、服务器、,标点符号,发送者。也许这可以使用Python中的决策树分类器(sklearn)来完成,但我想知道如果我想从头开始构建决策树,应该怎么做,首先查看根节点,然后查看其他决策节点,如果你只是想比较一下你的人类直觉,即什么是分类垃圾邮件的有效决策树,什么是机器学习算法,那么很有可能你最终会发现ML算法会比你做得更好。这是因为我们人类不擅长直接解决多维抽象问题,除非我们定义了一个数学模型来实现这一点。第二,如果你想学习如何实现决策树,我建议从一个关于二叉树的教程开始,并尝试使用数据对其进行扩充,这些数据将允许您在每个节点中存储正在拆分的变量id和拆分点的信息。根据变量的类型,也就是说,数字变量和分类变量,如何做会有所不同。是的,你们是对的。然而,我想做的不仅仅是分配一个二进制变量(垃圾邮件而不是垃圾邮件),而是量化一封电子邮件包含多少“垃圾邮件信息”。我不知道如何使用ML算法来实现这一点