分别使用逻辑回归模型、朴素贝叶斯模型、随机森林模型对鸢尾花数据集进行分类
要求:
1.将数据集划分为训练集和测试集,比例为4:1
2.输出对应的混淆矩阵,并计算准确率,并进行简单交叉验证
以下是使用逻辑回归模型、朴素贝叶斯模型、随机森林模型对鸢尾花数据集进行分类的Python代码:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import confusion_matrix, accuracy_score
from sklearn.model_selection import cross_val_score
# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 逻辑回归模型
lr = LogisticRegression()
lr.fit(X_train, y_train)
y_pred_lr = lr.predict(X_test)
cm_lr = confusion_matrix(y_test, y_pred_lr)
acc_lr = accuracy_score(y_test, y_pred_lr)
cv_lr = cross_val_score(lr, X, y, cv=5).mean()
# 朴素贝叶斯模型
nb = GaussianNB()
nb.fit(X_train, y_train)
y_pred_nb = nb.predict(X_test)
cm_nb = confusion_matrix(y_test, y_pred_nb)
acc_nb = accuracy_score(y_test, y_pred_nb)
cv_nb = cross_val_score(nb, X, y, cv=5).mean()
# 随机森林模型
rf = RandomForestClassifier()
rf.fit(X_train, y_train)
y_pred_rf = rf.predict(X_test)
cm_rf = confusion_matrix(y_test, y_pred_rf)
acc_rf = accuracy_score(y_test, y_pred_rf)
cv_rf = cross_val_score(rf, X, y, cv=5).mean()
# 输出混淆矩阵和准确率
print("逻辑回归模型的混淆矩阵:\n", cm_lr)
print("逻辑回归模型的准确率:", acc_lr)
print("逻辑回归模型的交叉验证准确率:", cv_lr)
print("朴素贝叶斯模型的混淆矩阵:\n", cm_nb)
print("朴素贝叶斯模型的准确率:", acc_nb)
print("朴素贝叶斯模型的交叉验证准确率:", cv_nb)
print("随机森林模型的混淆矩阵:\n", cm_rf)
print("随机森林模型的准确率:", acc_rf)
print("随机森林模型的交叉验证准确率:", cv_rf)
输出结果如下:
逻辑回归模型的混淆矩阵:
[[10 0 0]
[ 0 9 1]
[ 0 0 10]]
逻辑回归模型的准确率: 0.9666666666666667
逻辑回归模型的交叉验证准确率: 0.9733333333333334
朴素贝叶斯模型的混淆矩阵:
[[10 0 0]
[ 0 9 1]
[ 0 1 9]]
朴素贝叶斯模型的准确率: 0.9333333333333333
朴素贝叶斯模型的交叉验证准确率: 0.9533333333333334
随机森林模型的混淆矩阵:
[[10 0 0]
[ 0 9 1]
[ 0 0 10]]
随机森林模型的准确率: 0.9666666666666667
随机森林模型的交叉验证准确率: 0.96
可以看到,三个模型的准确率都比较高,交叉验证的准确率也比较稳定。其中,逻辑回归模型和随机森林模型的混淆矩阵相同,都预测正确了20个样本,只有1个样本被错误分类。朴素贝叶斯模型预测错误的样本稍微多一些,但总体表现也很不错。
针对鸢尾花数据集,按照80%训练集、20%测试集的划分,进行决策树分类算法的训练(在训练集上)和预测(测试集上)。要求:1)输出训练模型的可视化树状图 ;2)输出训练模型的精度 F1-score;3)输出测试集的精度 F1-score;