欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Week 15】Sklearn练习题

程序员文章站 2022-07-14 12:46:30
...

Sklearn介绍:

sklearn是机器学习中一个常用的python第三方模块,网址:http://scikit-learn.org/stable/index.html ,里面对一些常用的机器学习方法进行了封装,在进行机器学习任务时,并不需要每个人都实现所有的算法,只需要简单的调用sklearn里的模块就可以实现大多数机器学习任务。
机器学习任务通常包括分类(Classification)和回归(Regression),常用的分类器包括SVM、KNN、贝叶斯、线性回归、逻辑回归、决策树、随机森林、xgboost、GBDT、boosting、神经网络NN。
常见的降维方法包括TF-IDF、主题模型LDA、主成分分析PCA等等

练习题:

【Week 15】Sklearn练习题

题意分析:

1.创建一个分类数据集;

2.用十折交叉验证拆分数据集;

3.联系三种机器学习的算法来完成上述要求:(1)朴素贝叶斯算法;(2)SVC(3)随机森林分类

4.从准确度,F1分数,受试者工作特征来计算三种算法的性能;


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

dataset = datasets.make_classification(
    n_samples=1000, n_features=10, n_informative=2, n_redundant=2, n_repeated=0, n_classes=2)
kf = cross_validation.KFold(len(dataset[0]), n_folds=10, shuffle=True)
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]

clf = GaussianNB()
clf.fit(X_train, y_train)
pred = clf.predict(X_test)
print("GaussianNB")
acc = metrics.accuracy_score(y_test, pred)
print('acc: '+str(acc))
f1 = metrics.f1_score(y_test, pred)
print('f1: '+str(f1))
auc = metrics.roc_auc_score(y_test, pred)
print('auc: '+str(auc))

clf = SVC(C=1e-01, kernel='rbf', gamma=0.1)
clf.fit(X_train, y_train)
pred = clf.predict(X_test)
print("\nSVC")
acc = metrics.accuracy_score(y_test, pred)
print('acc: '+str(acc))
f1 = metrics.f1_score(y_test, pred)
print('f1: '+str(f1))
auc = metrics.roc_auc_score(y_test, pred)
print('auc: '+str(auc))

clf = RandomForestClassifier(n_estimators=6)
clf.fit(X_train, y_train)
pred = clf.predict(X_test)
print("\nRandomForest")
acc = metrics.accuracy_score(y_test, pred)
print('acc: '+str(acc))
f1 = metrics.f1_score(y_test, pred)
print('f1: '+str(f1))
auc = metrics.roc_auc_score(y_test, pred)
print('auc: '+str(auc))

输出结果:

【Week 15】Sklearn练习题

总结:

由输出结果分析观察可得:随机森林算法的结果最好,SVC次之,朴素贝叶斯最不理想;