转:SKLearn中预测准确率函数介绍

本文介绍了SKLearn中常用的预测评估工具,包括classification_report函数和ConfusionMatrix函数。通过实例展示了如何计算准确率、召回率及F1-score等关键指标,并解释了这些指标的具体含义。

SKLearn中预测准确率函数介绍

1、在使用Sklearn进行机器学习算法预测测试数据时,常用到classification_report函数来进行测试的准确率的计算输

#开始预测
y_pred = clf.predict(X_test)
print("done in %0.3fs" % (time() - t0))
#通过该函数,比较预测出的标签和真实标签,并输出准确率
print(classification_report(y_test, y_pred))
#建立一个矩阵,以真实标签和预测标签为元素
print(confusion_matrix(y_test, y_pred, labels=range(n_classes)))

下图为Eclipse下classification_report函数的源代码:

 

 

这是一个示例输出:

 

 

其中在函数中p=precision,r=recall,f1=f1-score,s=support

 

 
下面,在precision_recall_fscore_support函数的源代码:
 
 
 可以看到输出的precision,recall及F-score的具体计算公式,和具体的意义。
 
 
下面将一一给出‘tp’,‘fp’,‘fn’的具体含义:
 
准确率: 所有识别为”1”的数据中,正确的比率是多少。 
如识别出来100个结果是“1”, 而只有90个结果正确,有10个实现是非“1”的数据。 所以准确率就为90%
 
召回率: 所有样本为1的数据中,最后真正识别出1的比率。 
如100个样本”1”, 只识别出了93个是“1”, 其它7个是识别成了其它数据。 所以召回率是93%
F1-score:  是准确率与召回率的综合。 可以认为是平均效果。
 
详细定义如下:
对于数据测试结果有下面4种情况:
TP: 预测为正, 实现为正
FP: 预测为正, 实现为负
FN: 预测为负,实现为正
TN: 预测为负, 实现为负
 
准确率: TP/ (TP+FP) 
召回率: TP(TP + FN)
F1-score: 2*TP/(2*TP + FP + FN) 
 
1、在使用Sklearn进行机器学习算法预测测试数据时,常用到Confusion Matrix函数来进行测试效果直观描述:
下面是其源码中示例:
 
 
 
 
 
下面是一篇给这函数详细解释的博客,拿来学习一下:
 
 
### 如何提升或计算 sklearn 模odel 预测准确率 #### 准确率的定义与计算方式 准确率(Accuracy)是指模型预测正确的样本数占总样本的比例。可以通过 `sklearn.metrics.accuracy_score` 方法来计算准确率[^4]。 以下是基于真实标签和预测标签计算准确率的一个简单例子: ```python from sklearn.metrics import accuracy_score y_true = [0, 1, 1, 0, 1] y_pred = [0, 1, 0, 0, 1] accuracy = accuracy_score(y_true, y_pred) print(f'Accuracy: {accuracy}') ``` #### 提升模型预测准确率的方法 为了提高模型的预测性能,可以从以下几个方面入手: 1. **特征工程优化** 特征的选择和处理直接影响模型的表现。通过增加更多有意义的特征、减少冗余特征以及对现有特征进行换(如标准化、归一化),可以显著改善模型效果[^3]。 2. **调整超参数** 使用网格搜索(Grid Search)或者随机搜索(Randomized Search)等技术寻找最佳超参数组合能够有效提升模型表现。例如,在支持向量机(SVM)中调节核函数类型及其对应的复杂度参数 C 和 γ 可能会带来更好的结果。 3. **选择合适的算法** 不同类型的分类器适用于不同类型的数据集。尝试多种机器学习算法并对比它们的效果可以帮助找到最适合当前任务的那个。比如决策树适合于离散属性较多的情况而神经网络则可能更适合连续数值型输入数据。 4. **集成方法的应用** 利用Bagging 或 Boosting 类似的技术构建多个弱分类器并将他们的输出结合起来形成最终预测值往往可以获得比单一基分类器更高的精度水平。 5. **交叉验证** 应用 k 折交叉验证(k-fold Cross Validation),不仅可以更全面地评估模型泛化能力而且还能帮助防止过拟合现象发生。 6. **平衡类别分布** 如果目标变量存在严重的不平衡问题,则需采取措施解决这个问题,因为大多数标准监督学习算法假设训练集中各类别的数量大致相等。解决方案包括欠采样多数类、过采样少数类或者是采用专门设计用于应对不均衡数据集情况下的特定算法版本。 7. **错误分析** 对误分情况进行深入剖析有助于发现潜在规律进而改进策略。这一步骤通常涉及可视化混淆矩阵(confusion matrix)以直观展示哪些种类最容易被错判成其他类别。 8. **正则化** 当面临高维稀疏数据时适当引入L1/L2范数约束项可抑制过度复杂的权重配置从而降低过拟合风险。 9. **更多的训练数据** 增加高质量标注好的实例数目总是有益无害的做法之一,因为它让模型有机会学到更加广泛的知识模式。 综上所述,除了正确运用上述提到的各种技巧外还需要不断试验迭代直至达到满意的业务需求为止。 #### 示例代码:使用 GridSearchCV 调整超参数 下面是一个利用 `GridSearchCV` 来自动调优逻辑回归(Logistic Regression)中的惩罚强度(penalty strength)的例子: ```python from sklearn.model_selection import GridSearchCV from sklearn.linear_model import LogisticRegression param_grid = {'C': [0.01, 0.1, 1, 10]} grid_search = GridSearchCV(estimator=LogisticRegression(), param_grid=param_grid, cv=5) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) grid_search.fit(X_train, y_train) best_params = grid_search.best_params_ best_accuracy = grid_search.score(X_test, y_test) print(f"Best Parameters:{best_params}, Best Accuracy on Test Set:{best_accuracy}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值