高级编程技术第十三次作业

本文通过使用朴素贝叶斯、支持向量机和随机森林三种算法,在相同数据集上进行性能对比实验。采用10折交叉验证的方式进行训练与测试,并从准确率、F1分数及AUC-ROC三个方面评估模型效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sklearn作业题:


简要意思就是测试朴素贝叶斯,SVM,随机森林三种算法对解决同一个问题的性能分析。


步骤1:创建数据集

dataset = datasets.make_classification(n_samples=1000, n_features=10) 

步骤2:用10重交叉验证对数据集拆分。

kf = cross_validation.KFold(1000, n_folds=10, shuffle=True)  

步骤3:分别训练三种算法(里面的evaluate是步骤4中的函数)

#caculate train and test
for train_index, test_index in kf:
    x_train, y_train = dataset[0][train_index], dataset[1][train_index]
    x_test, y_test = dataset[0][test_index], dataset[1][test_index]
# GaussianNB
bayes = GaussianNB()
bayes.fit(x_train, y_train)
pred = bayes.predict(x_test)
print('GaussianNB:')
evaluate(y_test,pred)

# SVC
svc = SVC(C=1e-01, kernel='rbf', gamma=0.1)
svc.fit(x_train, y_train)
pred = svc.predict(x_test)
print('SVC:')
evaluate(y_test,pred)

# Random Forest
rf = RandomForestClassifier(n_estimators=6)
rf.fit(x_train, y_train)
pred = rf.predict(x_test)
print('Random Forest:')
evaluate(y_test,pred)

步骤4:评估算法在accuracy f1 auc 方面的表现

def evaluate(y_test,pred):
    # Accuracy
    acc = metrics.accuracy_score(y_test, pred)
    print('Accuracy:',acc)
    # F1-score
    f1 = metrics.f1_score(y_test, pred)
    print('F1-score:',f1)
    # AUC ROC
    auc = metrics.roc_auc_score(y_test, pred)
    print('AUC ROC:',auc)

步骤5:总结

全部代码

from sklearn import datasets
from sklearn import metrics
from sklearn import cross_validation
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier

#s4
def evaluate(y_test,pred):
    # Accuracy
    acc = metrics.accuracy_score(y_test, pred)
    print('Accuracy:',acc)
    # F1-score
    f1 = metrics.f1_score(y_test, pred)
    print('F1-score:',f1)
    # AUC ROC
    auc = metrics.roc_auc_score(y_test, pred)
    print('AUC ROC:',auc)

#s1
dataset = datasets.make_classification(n_samples=1000, n_features=10)
#s2
kf = cross_validation.KFold(1000, n_folds=10, shuffle=True)
#s3
#caculate train and test
for train_index, test_index in kf:
    x_train, y_train = dataset[0][train_index], dataset[1][train_index]
    x_test, y_test = dataset[0][test_index], dataset[1][test_index]
# GaussianNB
bayes = GaussianNB()
bayes.fit(x_train, y_train)
pred = bayes.predict(x_test)
print('GaussianNB:')
evaluate(y_test,pred)

# SVC
svc = SVC(C=1e-01, kernel='rbf', gamma=0.1)
svc.fit(x_train, y_train)
pred = svc.predict(x_test)
print('SVC:')
evaluate(y_test,pred)

# Random Forest
rf = RandomForestClassifier(n_estimators=6)
rf.fit(x_train, y_train)
pred = rf.predict(x_test)
print('Random Forest:')
evaluate(y_test,pred)


结果

GaussianNB:
Accuracy:0.82
F1-score:0.8125
AUC ROC:0.8195278111244497
SVC:
Accuracy:0.82
F1-score:0.8269230769230769
AUC ROC:0.8211284513805521
Random Forest:
Accuracy:0.9
F1-score:0.8936170212765957
AUC ROC:0.8991596638655462
Process finished with exit code 0

这是一次执行的结果,按照三种算法的表现排序是GNB<SVC<RF,并且随机森林的三种方面表现显著好于其他两种算法。在多次结果我们发现除了这种结果还有一种结果是三种算法在三个方面表现相差无几。由于篇幅这里不给出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值