Python 机器学习经典实例.docx





《Python 机器学习经典实例.docx》由会员分享,可在线阅读,更多相关《Python 机器学习经典实例.docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Python机器学习经典实例2.5将数据集分割成训练集以及测试集本节一起来看看怎样将数据合理地分割成训练数据集以及测试数据集。 (1)增加下面的代码片段到上一节的Python文件中fromsklearnimportcross_validationX_train,X_test,y_train,y_testcross_validation.train_test_split(X,y,test_size0.25,random_state5)classifier_gaussiannb_newGaussianNB()classifier_gaussiannb_new.fit(X_train,y_train
2、)这里我们把参数test_size设置成0.25表示分配了25%的数据给测试数据集。剩下75%的数据将用于训练数据集。 (2)用分类器对测试数据进展测试y_test_predclassifier_gaussiannb_new.predict(X_test)(3)计算分类器的准确性accuracy100.0*(y_testy_test_pred).sum()/X_test.shape0printAccuracyoftheclassifier,round(accuracy,2),%(4)画出测试数据的数据点及其边界plot_classifier(classifier_gaussiannb_new,
3、X_test,y_test)(5)可以看到如图2-7所示的图形。图2-72.6用穿插验证检验模型准确性穿插验证是机器学习的重要概念。在上一节中我们把数据分成了训练数据集以及测试数据集。然而为了可以让模型更加稳定还需要用数据集的不同子集进展反复的验证。假如只是对特定的子集进展微调最终可能会过度拟合overfitting模型。过度拟合是指模型在已知数据集上拟合得超级好但是一遇到未知数据就挂了。我们真正想要的是让机器学习模型可以适用于未知数据。2.6.1准备工作介绍怎样实现穿插验证之前先讨论一下性能指标。当处理机器学习模型时通常关心3个指标精度precision、召回率recall以及F1得分F1s
4、core。可以用参数评分标准parameterscoring获得各项指标的得分。精度是指被分类器正确分类的样本数量占分类器总分类样本数量的百分比分类器分类结果中有一些样本分错了。召回率是指被应正确分类的样本数量占某分类总样本数量的百分比有一些样本属于某分类但分类器却没有分出来。假设数据集有100个样本其中有82个样本是我们感兴趣的如今想用分类器选出这82个样本。最终分类器选出了73个样本它认为都是我们感兴趣的。在这73个样本中其实只有65个样本是我们感兴趣的剩下的8个样本我们不感兴趣是分类器分错了。可以如下方法计算分类器的精度分类正确的样本数量65总分类样本数量73精度65/7389.04%召
5、回率的计算经过如下数据集中我们感兴趣的样本数量82分类正确的样本数量65召回率65/8279.26%一个给力的机器学习模型需要同时具备良好的精度以及召回率。这两个指标是二律背反的一个指标到达100%那么另一个指标就会非常差我们需要保持两个指标可以同时处于合理高度。为了量化两个指标的平衡性引入了F1得分指标是精度以及召回率的合成指标实际上是精度以及召回率的调以及均值harmonicmeanF1得分2精度召回率/(精度召回率)上面例如中F1得分的计算经过如下F1得分20.890.79/(0.890.79)0.83702.6.2详细步骤(1)下面看看怎样实现穿插验证并提取性能指标。首先计算精度num
6、_validations5accuracycross_validation.cross_val_score(classifier_gaussiannb,X,y,scoringaccuracy,cvnum_validations)printAccuracy:str(round(100*accuracy.mean(),2)%(2)用前面的方程分别计算精度、召回率以及F1得分f1cross_validation.cross_val_score(classifier_gaussiannb,X,y,scoringf1_weighted,cvnum_validations)printF1:str(roun
7、d(100*f1.mean(),2)%precisioncross_validation.cross_val_score(classifier_gaussiannb,X,y,scoringprecision_weighted,cvnum_validations)printPrecision:str(round(100*precision.mean(),2)%recallcross_validation.cross_val_score(classifier_gaussiannb,X,y,scoringrecall_weighted,cvnum_validations)printRecall:st
8、r(round(100*recall.mean(),2)%2.7混淆矩阵可视化混淆矩阵confusionmatrix是理解分类模型性能的数据表它有助于我们理解怎样把测试数据分成不同的类。当想对算法进展调优时就需要在对算法做出改变之前解析数据的错误分类情况。有些分类效果比其他分类效果更差混淆矩阵可以帮助我们理解这些问题。先看看如图2-8所示的混淆矩阵。图2-8在图2-8中我们可以看出不同类型的分类数据。理想情况下我们祈望矩阵非对角线元素都是0这是最完美的分类结果。先看看class0一共52个样本属于class0。假如对第一行数据求以及总数就是52。但是如今只有45个样本被正确地预测出来分类器讲另
9、外4个样本属于class1还有3个样本属于class2。用同样的思路分析另外两行数据有意思的是class1里面有11个样本被错误地预测成了class0占到了class1总数的16%。这就是模型需要优化的切入点。 (1)我们用confusion_matrix.py文件作为参考。首先看看怎样从数据中提取混淆矩阵fromsklearn.metricsimportconfusion_matrixy_true1,0,0,2,1,0,3,3,3y_pred1,1,0,2,1,0,1,3,3confusion_matconfusion_matrix(y_true,y_pred)plot_confusion_
10、matrix(confusion_mat)这里用了一些样本数据一共有4种类型取值范围是03也列出了预测的标记类型。用confusion_matrix方法提取混淆矩阵然后把它画出来。 (2)继续定义混淆矩阵的画图函数#显示混淆矩阵defplot_confusion_matrix(confusion_mat):plt.imshow(confusion_mat,interpolationnearest,cmapplt.Paired)plt.title(Confusionmatrix)plt.colorbar()tick_marksnp.arange(4)plt.xticks(tick_marks,t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 机器学习经典实例 机器 学习 经典 实例

限制150内