sklearn练习

这个练习是让我们比较三种分类算法的性能,加上学习调试一些算法的参数。

详情请看注释:

代码中没有from sklearn import cross_validation,因为pycharm提示这个库在新版上sklearn已经被删掉了

from sklearn import datasets
from sklearn.model_selection import KFold
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from sklearn import metrics
import numpy as np


dataset = datasets.make_classification(n_samples=1000, n_features=10,
                                       n_informative=2, n_redundant=2,
                                       n_repeated=0, n_classes=2) #生成一堆数据,参数n_sample为样本数,生成的数据中 dataset[0]是数据,dataset[1]是label
kf = KFold(n_splits=10, shuffle=True) #分割数据集,分成10份,每份作为测试集时,其余9份作为训练集

acc = []
f1 = []
auc = []
for train, test in kf.split(dataset[0]):
    clf = GaussianNB()
    clf.fit(dataset[0][train], dataset[1][train]) #训练分类器
    pred = clf.predict(dataset[0][test])          #测试分类器 
    acc.append(metrics.accuracy_score(dataset[1][test], pred)) #计算准确度、f1_score等
    f1.append(metrics.f1_score(dataset[1][test], pred))
    auc.append(metrics.roc_auc_score(dataset[1][test], pred))
print("Gaussian NB")
print("accuracy :", np.mean(acc))
print("f1_score :", np.mean(f1))
print("auc_roc: ", np.mean(auc))

C_value = [1e-02, 1e-01, 1, 1e01, 1e02] #参数
acc = []
f1 = []
auc = []
for value in C_value: #在SVM中尝试每一个参数
    for train, test in kf.split(dataset[0]):
        clf = SVC(C=value, kernel='rbf', gamma=0.1)
        clf.fit(dataset[0][train], dataset[1][train]) #训练分类器
        pred = clf.predict(dataset[0][test])           #测试分类器
        acc.append(metrics.accuracy_score(dataset[1][test], pred)) #计算准确度等
        f1.append(metrics.f1_score(dataset[1][test], pred))
        auc.append(metrics.roc_auc_score(dataset[1][test], pred))
    print("SVC with C={}, kernel=rbf ".format(value))
    print("accuracy :", np.mean(acc))
    print("f1_score :", np.mean(f1))
    print("auc_roc: ", np.mean(auc))

n_estimators = [10, 100, 1000]#参数
acc = []
f1 = []
auc = []
for value in n_estimators:#在random Forest中尝试各种参数
    for train, test in kf.split(dataset[0]):
        clf = RandomForestClassifier(n_estimators=value)
        clf.fit(dataset[0][train], dataset[1][train])#训练分类器
        pred = clf.predict(dataset[0][test])        #测试分类器
        acc.append(metrics.accuracy_score(dataset[1][test], pred))#计算准确度等
        f1.append(metrics.f1_score(dataset[1][test], pred))
        auc.append(metrics.roc_auc_score(dataset[1][test], pred))
    print("RandomForest with estimators num: {}".format(value))
    print("accuracy :", np.mean(acc))
    print("f1_score :", np.mean(f1))
    print("auc_roc: ", np.mean(auc))




输出如下:




根据结果我们可以看出各个分类器的性能差异以及它们的参数对它们性能的影响

此次实验中效果最好的是


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值