Sklearn介绍:
sklearn是机器学习中一个常用的python第三方模块,网址:http://scikit-learn.org/stable/index.html ,里面对一些常用的机器学习方法进行了封装,在进行机器学习任务时,并不需要每个人都实现所有的算法,只需要简单的调用sklearn里的模块就可以实现大多数机器学习任务。
机器学习任务通常包括分类(Classification)和回归(Regression),常用的分类器包括SVM、KNN、贝叶斯、线性回归、逻辑回归、决策树、随机森林、xgboost、GBDT、boosting、神经网络NN。
常见的降维方法包括TF-IDF、主题模型LDA、主成分分析PCA等等
题意分析:
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))
输出结果:
总结:
由输出结果分析观察可得:随机森林算法的结果最好,SVC次之,朴素贝叶斯最不理想;