Python 决策树:如何手动设置决策节点
我试图从头开始建立一个决策树。此决策树应从列表中提取一封电子邮件,并根据某些因素分配分数。 例如:假设我要测试的电子邮件是 email=“我将20000英镑转入了我们的养老金计划,但是的钱一直没有到。我向我在Brewin Dolphin的财务顾问询问了相关的银行详细信息,他通过电子邮件发送了这些信息。”Python 决策树:如何手动设置决策节点,python,scikit-learn,decision-tree,Python,Scikit Learn,Decision Tree,我试图从头开始建立一个决策树。此决策树应从列表中提取一封电子邮件,并根据某些因素分配分数。 例如:假设我要测试的电子邮件是 email=“我将20000英镑转入了我们的养老金计划,但是的钱一直没有到。我向我在Brewin Dolphin的财务顾问询问了相关的银行详细信息,他通过电子邮件发送了这些信息。” 根节点:我想把根节点作为变量“包容号”。如果邮件中包含了一个编号而不是赋值0.1,否则为0。这将是两个分裂。我想只考虑二元分裂。< /P> 子节点:如果电子邮件包含列表中的单词[“财务”、“银行
根节点:我想把根节点作为变量“包容号”。如果邮件中包含了一个编号而不是赋值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中的决策树分类器(sklearn)来完成,但我想知道如果我想从头开始构建决策树,应该怎么做,首先查看根节点,然后查看其他决策节点,如果你只是想比较一下你的人类直觉,即什么是分类垃圾邮件的有效决策树,什么是机器学习算法,那么很有可能你最终会发现ML算法会比你做得更好。这是因为我们人类不擅长直接解决多维抽象问题,除非我们定义了一个数学模型来实现这一点。第二,如果你想学习如何实现决策树,我建议从一个关于二叉树的教程开始,并尝试使用数据对其进行扩充,这些数据将允许您在每个节点中存储正在拆分的变量id和拆分点的信息。根据变量的类型,也就是说,数字变量和分类变量,如何做会有所不同。是的,你们是对的。然而,我想做的不仅仅是分配一个二进制变量(垃圾邮件而不是垃圾邮件),而是量化一封电子邮件包含多少“垃圾邮件信息”。我不知道如何使用ML算法来做到这一点。如果能解释一下你为什么要这么做,你想达到什么目的,那就好了。我想通过一步一步地实现一个算法来构建这个决策树,这个算法可以让我分配分数,量化电子邮件如何被视为“垃圾邮件”,例如,查看关键字、服务器、,标点符号,发送者。也许这可以使用Python中的决策树分类器(sklearn)来完成,但我想知道如果我想从头开始构建决策树,应该怎么做,首先查看根节点,然后查看其他决策节点,如果你只是想比较一下你的人类直觉,即什么是分类垃圾邮件的有效决策树,什么是机器学习算法,那么很有可能你最终会发现ML算法会比你做得更好。这是因为我们人类不擅长直接解决多维抽象问题,除非我们定义了一个数学模型来实现这一点。第二,如果你想学习如何实现决策树,我建议从一个关于二叉树的教程开始,并尝试使用数据对其进行扩充,这些数据将允许您在每个节点中存储正在拆分的变量id和拆分点的信息。根据变量的类型,也就是说,数字变量和分类变量,如何做会有所不同。是的,你们是对的。然而,我想做的不仅仅是分配一个二进制变量(垃圾邮件而不是垃圾邮件),而是量化一封电子邮件包含多少“垃圾邮件信息”。我不知道如何使用ML算法来实现这一点