允許它分成簡單的步驟來分析:
1)model.predict_proba(X)[1]
這相當於
probas = model.predict_proba(X)
probas[1]
所以這個第一輸出端的所有類的概率的所有樣本。因此,可以說你的X包含5行和4個特徵,有兩個不同的類。
所以probas將是這樣的:
Prob of class 0, prob of class 1
For sample1 [[0.1, 0.9],
For sample2 [0.8, 0.2],
For sample3 [0.85, 0.15],
For sample4 [0.4, 0.6],
For sample5 [0.01, 0.99]]
probas[1]
將只輸出的概率爲您probas
輸出,即第二列。類別1的概率。
Output [0.9, 0.2, 0.15, 0.6, 0.99]
其他兩行代碼取決於如何處理單維數組的實現和版本。例如。 scikit v18只會顯示警告,並將其視爲單行。但v19(主分支)拋出一個錯誤。
編輯:更新了LGBMClassifier
2)model.predict_proba(X[1])
這相當於:
X_new = X[1]
model.predict_proba(X_new)
這裏你僅選擇第二行這導致形狀[n_features, ]
。但是LGBMClassifier要求二維數據的形狀爲[n_samples, n_features]
。如上所述,這可能是一個可能的錯誤來源。您可以重塑定的數組有1處N_SAMPLES次的:
model.predict_proba(X[1].reshape(1, -1))
#將工作正確
3)model.predict_proba(list(X[1]))
這可以分爲:
X_new = list(X[1])
model.predict_proba(X_new)
這也是大多與第二個相同,只是X_new
現在是一個列表而不是numpy數組,並且自動處理爲單行(與第二種情況下的X[1].reshape(1, -1)
相同),而不是拋出錯誤。
因此,考慮上面的例子中,輸出將是唯一的,
For sample2 [0.8, 0.2],
感謝。儘管#3給出了與#1不同的答案,我仍然困惑不解。 – ndrue
@ndrue因爲它們是兩個不同的數量。首先是所有測試數據X中唯一的類別1(在0類,0類,2類......)中的可用性。第三是數據第二行(索引1,只有一行)的所有類的概率。我編輯了包含示例的答案。 –