Homework Sklearn

Sklearn

sklearn是基于numpy和scipy的机器学习算法库,功能强大,使用简便。
我在学习图形学时曾深入了解过机器学习的相关知识。简而言之,机器学习就是机器根据所给数据自动生成并优化判别方法的过程,其间的实现不被也不需被人知晓。本课介绍了3种主要的算法:朴素贝叶斯支持向量机随机森林。它们都是典型的适用于分类的监督学习方法。除此,课上还介绍了交叉验证性能评估方法。


·朴素贝叶斯是基于贝叶斯定理与特征条件独立假设的分类方法,理论上简单且可靠。依靠定理:P(A | B) = P(B | A)*P( A) / P(B),NBC假定各参数之间相互条件独立,但事实总有偏差。
·支持向量机是一种十分常见的分类器,核心思路是对高维的参数向量构造分割面,使结果尽可能分离。
·随机森林基于决策树实现。使用观测数据的子集和变量的子集来建立多个决策树,然后将它们合并在一起获得更准确和稳定的预测。
注意:f1_score和roc_auc_score只能用在二分结果上。

代码

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

(Dx, Dy) = datasets.make_classification(n_samples=2400, n_features=12, n_classes=2, n_informative = 4) #12参数2类别随机分类模型
NB = 0.0
RFC = 0.0
Svc = 0.0

kf = cross_validation.KFold(len(Dy), n_folds = 10, shuffle = True) #10组交叉验证

for train_index, test_index in kf:
    X_train, y_train = Dx[train_index], Dy[train_index]
    X_test, y_test = Dx[test_index], Dy[test_index]

    print("Test Y:\n", y_test)
    print()

    clf = GaussianNB() #朴素贝叶斯
    clf.fit(X_train, y_train)
    pred = clf.predict(X_test)
    print("GNB:\n", pred)
    acc = metrics.accuracy_score(y_test, pred)
    print("acc:", acc)
    f1 = metrics.f1_score(y_test, pred)
    print("f1:", f1)
    auc = metrics.roc_auc_score(y_test, pred)
    print("auc:", auc)
    print()
    NB = NB + (acc+f1+auc)

    clf = SVC() #向量聚类
    clf.fit(X_train, y_train)
    pred = clf.predict(X_test)
    print("SVC:\n", pred)
    acc = metrics.accuracy_score(y_test, pred)
    print("acc:", acc)
    f1 = metrics.f1_score(y_test, pred)
    print("f1:", f1)
    auc = metrics.roc_auc_score(y_test, pred)
    print("auc:", auc)
    print()
    Svc = Svc + (acc+f1+auc)

    clf = RandomForestClassifier() #随机森林
    clf.fit(X_train, y_train)
    pred = clf.predict(X_test)
    print("RFC:\n", pred)
    acc = metrics.accuracy_score(y_test, pred)
    print("acc:", acc)
    f1 = metrics.f1_score(y_test, pred)
    print("f1:", f1)
    auc = metrics.roc_auc_score(y_test, pred)
    print("auc:", auc)
    print('\n')
    RFC = RFC + (acc+f1+auc)

print('Summary:(Average Accuracy)')
print('Naive_Bayes: ',NB/30)
print('SVC: ',Svc/30)
print('RandomForest: ',RFC/30)

结果

这里写图片描述
1
可见,这三者的效果都不错,其中SVC算法的总体精确度最高,Naive_Bayes最低。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值