我的代码中有很多这样的内容:
StratifiedShuffleSplit
我想知道是否可以用其他代码代替它以使代码更整洁。我尝试了以下方法:
from sklearn.model_selection import StratifiedShuffleSplit
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4],
[1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1])
groups_to_stratify = np.array([1,2,3,1,2,3,1,2,3,1,2,3])
sss = StratifiedShuffleSplit(n_splits=5, test_size=0.3, random_state=0)
sss.get_n_splits()
print(sss)
# Note groups_to_stratify is used in the split() function not y as usual
for train_index, test_index in sss.split(X, groups_to_stratify):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
print("TRAIN indices:", train_index,
"train groups", groups_to_stratify[train_index],
"TEST indices:", test_index,
"test groups", groups_to_stratify[test_index])
但是它不起作用,因为如果其中只有一个不相等,那么整个事情都是错误的。
答案 0 :(得分:3)
使用De Morgan的法律之一(a):
not (A and B) = (not A) or (not B)
换句话说:
if (x1 != x2 || y1 != y2) {
// do the thing
}
如果不想对命题逻辑考虑太多,可以使用以下英语变体。
(a)另一个是:
not (A or B) = (not A) and (not B)
答案 1 :(得分:0)
如果您的代码以if或else语句结尾,则可以执行
if (x1 == x2 && y1 == y2) {
// do something
return; // this will end the execution here.
}
// the else block would be in the rest of execution.
当您尝试从用户提交某些输入或进行断言时,此方法很有用。因此,我获得了正确的输入,请继续执行其他操作,而不是检查不确定的可能性。