Python:如何检查 y_pred 中的预测行?
Python: How do I examine the predicted rows in y_pred?
我的逻辑回归算法返回 y_pred 作为数组。示例:
array([False, False, True, False, False, True, False, False, False,
False, False, ...])
我想看看数据集中的哪些行被预测为 True。可以说,作为健全性测试,看看错误预测的 True 是否绝对错误或至少接近错误。有没有办法获取预测行的索引?或其他通常如何完成的方式?
如果您的预测是:
y = array([False, False, True, False, False, True, False, False, False, False, False, ...])
那么后面的数据就是:
data[y]
假设预测是在 data
上进行的。
示例:
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
X, y = datasets.load_breast_cancer(return_X_y=True) # 2 classes - binary classification
knn = KNeighborsClassifier()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
knn.fit(X_train, y_train)
prediction = knn.predict(X_test).astype(bool)
在最后一步中,我们利用了两个事实:
X
和 y
具有相同的顺序。 运行 predict
保留顺序
- 使用布尔条件选择数组项
pred_tested_true = X_test[prediction]
pred_tested_true
现在包含预测为 True
的所有行。
我建议通过比较和分离预测和实际情况来做到这一点,如 TP、FP(据我了解,这是你正在寻找的)、TN、FN。
你可以通过 -
y_pred = [True, False, True, False]
y_actual = [True, True, False, True]
#This gets you the indexes
FP = [i[0] for i in enumerate(zip(y_pred, y_actual)) if i[1]==(False, True)]
#Change the tuple to what you need, for false positives, its y_pred, y_actual = False, True
#You can do a loc if you need after this
df.loc[FP,:]
我的逻辑回归算法返回 y_pred 作为数组。示例:
array([False, False, True, False, False, True, False, False, False,
False, False, ...])
我想看看数据集中的哪些行被预测为 True。可以说,作为健全性测试,看看错误预测的 True 是否绝对错误或至少接近错误。有没有办法获取预测行的索引?或其他通常如何完成的方式?
如果您的预测是:
y = array([False, False, True, False, False, True, False, False, False, False, False, ...])
那么后面的数据就是:
data[y]
假设预测是在 data
上进行的。
示例:
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
X, y = datasets.load_breast_cancer(return_X_y=True) # 2 classes - binary classification
knn = KNeighborsClassifier()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
knn.fit(X_train, y_train)
prediction = knn.predict(X_test).astype(bool)
在最后一步中,我们利用了两个事实:
X
和y
具有相同的顺序。 运行predict
保留顺序- 使用布尔条件选择数组项
pred_tested_true = X_test[prediction]
pred_tested_true
现在包含预测为 True
的所有行。
我建议通过比较和分离预测和实际情况来做到这一点,如 TP、FP(据我了解,这是你正在寻找的)、TN、FN。
你可以通过 -
y_pred = [True, False, True, False]
y_actual = [True, True, False, True]
#This gets you the indexes
FP = [i[0] for i in enumerate(zip(y_pred, y_actual)) if i[1]==(False, True)]
#Change the tuple to what you need, for false positives, its y_pred, y_actual = False, True
#You can do a loc if you need after this
df.loc[FP,:]