由于朴素贝叶斯和决策树是两个不同的算法,结合它们需要根据具体情况进行选择和设计。下面提供一个示例,使用朴素贝叶斯和决策树来对鸢尾花进行分类。

首先,导入需要的库和数据集:

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

# 加载鸢尾花数据集
data = load_iris()
X, y = data.data, data.target

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

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

接下来,使用朴素贝叶斯对数据进行分类:

# 使用朴素贝叶斯进行分类
nb = GaussianNB()
nb.fit(X_train, y_train)
nb_pred = nb.predict(X_test)
nb_acc = accuracy_score(y_test, nb_pred)
print("朴素贝叶斯准确率:", nb_acc)

然后,使用决策树对数据进行分类:

# 使用决策树进行分类
dt = DecisionTreeClassifier(random_state=42)
dt.fit(X_train, y_train)
dt_pred = dt.predict(X_test)
dt_acc = accuracy_score(y_test, dt_pred)
print("决策树准确率:", dt_acc)

最后,将朴素贝叶斯和决策树结合起来,使用投票法进行分类:

# 将朴素贝叶斯和决策树结合起来,使用投票法进行分类
pred = []
for i in range(len(X_test)):
    nb_result = nb.predict([X_test[i]])[0]
    dt_result = dt.predict([X_test[i]])[0]
    if nb_result == dt_result:
        pred.append(nb_result)
    else:
        pred.append(np.random.choice([nb_result, dt_result]))
vote_acc = accuracy_score(y_test, pred)
print("朴素贝叶斯和决策树结合准确率:", vote_acc)

完整代码如下:

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

# 加载鸢尾花数据集
data = load_iris()
X, y = data.data, data.target

# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 使用朴素贝叶斯进行分类
nb = GaussianNB()
nb.fit(X_train, y_train)
nb_pred = nb.predict(X_test)
nb_acc = accuracy_score(y_test, nb_pred)
print("朴素贝叶斯准确率:", nb_acc)

# 使用决策树进行分类
dt = DecisionTreeClassifier(random_state=42)
dt.fit(X_train, y_train)
dt_pred = dt.predict(X_test)
dt_acc = accuracy_score(y_test, dt_pred)
print("决策树准确率:", dt_acc)

# 将朴素贝叶斯和决策树结合起来,使用投票法进行分类
pred = []
for i in range(len(X_test)):
    nb_result = nb.predict([X_test[i]])[0]
    dt_result = dt.predict([X_test[i]])[0]
    if nb_result == dt_result:
        pred.append(nb_result)
    else:
        pred.append(np.random.choice([nb_result, dt_result]))
vote_acc = accuracy_score(y_test, pred)
print("朴素贝叶斯和决策树结合准确率:", vote_acc)
``
用python写朴素贝叶斯和决策树结合的代码

原文地址: https://www.cveoy.top/t/topic/c0yK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录