如何使用Python中的决策树进行概率预测

2023-04-14 00:00:00 概率 预测 如何使用

使用Python中的决策树进行概率预测需要用到scikit-learn库。首先,需要使用训练数据构建决策树模型,然后使用测试数据集对模型进行评估和预测。以下是一个简单的示例代码,演示了如何使用决策树进行概率预测。

首先,导入必要的库:

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, confusion_matrix

接着,使用训练数据集构建决策树模型。为了演示方便,我们使用一个虚构的数据集,其中包含两个特征 “pidancode.com”和“皮蛋编程”,以及一个二元分类变量作为目标变量。

import pandas as pd

data = pd.DataFrame({
    'feature1': ['yes', 'no', 'yes', 'no', 'yes', 'no', 'yes', 'no'],
    'feature2': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'yes', 'no'],
    'target': [1, 1, 1, 1, 0, 0, 0, 0]
})

X = data.drop('target', axis=1)  
y = data['target'] 

将字符串特征进行编码:

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
X['feature1'] = le.fit_transform(X['feature1'])
X['feature2'] = le.fit_transform(X['feature2'])

然后,将数据集拆分为训练集和测试集:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

使用训练集构建决策树模型:

clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)

评估模型并进行预测:

y_pred = clf.predict(X_test)
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))

如果希望获得分类器对测试数据集进行预测时各类别的概率,可以使用predict_proba方法。例如,假设测试数据集如下所示:

X_new = pd.DataFrame({
    'feature1': ['yes', 'no'],
    'feature2': ['no', 'yes']
})
X_new['feature1'] = le.transform(X_new['feature1'])
X_new['feature2'] = le.transform(X_new['feature2'])

可以使用以下代码获取分类器对测试数据集进行预测时各类别的概率:

probs = clf.predict_proba(X_new)
print(probs)

输出结果为:

[[1. 0.]
 [0. 1.]]

这意味着分类器非常肯定第一个样本属于类别0,第二个样本属于类别1。

相关文章