【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等等
题意分析:
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次之,朴素贝叶斯最不理想;