在本文中,我們將討論預測函數的差異和它們的用途。
在機器學習中,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中文網其他相關文章!