在本文中,我们将讨论预测函数的区别和它们的用途。
在机器学习中,predict和predict_proba、predict_log_proba和decision_function方法都是用来根据训练好的模型进行预测的。
使用predict方法可进行二元分类或多元分类预测,输出预测标签。例如,如果你已经训练了一个逻辑回归模型来预测一个客户是否会购买产品,则可以使用predict方法来预测一个新客户是否会购买产品。
我们将使用来自scikit-learn的乳腺癌数据集。这个数据集包含了肿瘤观察结果和肿瘤是恶性还是良性的相应标签。
import numpy as npfrom sklearn.svm import SVCfrom sklearn.preprocessing import StandardScalerfrom sklearn.pipeline import make_pipelineimport matplotlib.pyplot as pltfrom sklearn.datasets import load_breast_cancer# 加载数据集dataset = load_breast_cancer(as_frame=True)# 创建特征和目标X = dataset['data']y = dataset['target']# 将数据集分割成训练集和测试集from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y , test_size=0.25, random_state=0)# 我们创建一个简单的管道来规范数据并使用`SVC`分类器训练模型svc_clf = make_pipeline(StandardScaler(),SVC(max_iter=1000, probability=True))svc_clf.fit(X_train, y_train)
# 我们正在预测X_test的第一个条目print(svc_clf.predict(X_test[:1]))
# 预测X_test的第一个条目属于哪一类[0]
使用predict_proba函数可以对每个类别进行概率预测,并返回所可能的每个类别标签的概率估计。在二元或多元分类问题中,通常采用这种方法以确定每种可能结果的概率。例如,如果你已经训练了一个模型,将动物的图像分为猫、狗和马,你可以使用predict_proba方法来获得每个类别标签的概率估计。
print(svc_clf.predict_proba(X_test[:1]))
[[0.99848307 0.00151693]]
predict_log_proba方法与predict_proba类似,但它返回概率估计值的对数,而不是原始概率。这对处理极小或极大的概率值是十分实用的,因为可以避免数值下溢或溢出的问题。
print(svc_clf.predict_log_proba(X_test[:1]))
[[-1.51808474e-03 -6.49106473e+00]]
Linear binary classification models can utilize the decision_function method.。它会针对每个输入数据点生成一个分数,这个分数可用于推测其对应的类别标签。可以根据应用或领域知识来设置将数据点分类为正或负的阈值。
print(svc_clf.decision_function(X_test[:1]))
[-1.70756057]
注意:某些分类器的预测方法可能不完整或需要额外参数才能访问函数。例如:SVC需要将概率参数设置为True,才能使用概率预测。
以上是使用Scikit-Learn,快速掌握机器学习预测方法的详细内容。更多信息请关注PHP中文网其他相关文章!