我希望我的Python循环(如下所示(能够工作,直到出现错误。我在其他地方看到,你可以在for循环中使用while True,但我不确定你是否可以将其与错误联系起来。产生的错误将是这样的:
ValueError: No neighbors found for test samples [700], you can try using larger radius, give a label for outliers, or consider removing them from your dataset.
我该如何将其融入我的循环中?
x = 0
y = 0
for i in range(100):
raidus_class = RadiusNeighborsClassifier(radius=100-i).fit(X_train, y_train)
new["radius"] = raidus_class.predict(X_test)
if (sum(new.quality == new.radius) > x):
x = sum(new.quality == new.radius)
y = i
print(i)
print("Sum of correct prediction: ", x)
print("At n-neighbours = ", y)
非常感谢,本。
这可以在Python 中使用异常来完成
请注意,下面的代码只有在遇到ValueError 时才会停止
x = 0
y = 0
for i in range(100):
try:
raidus_class = RadiusNeighborsClassifier(radius=100-i).fit(X_train, y_train)
new["radius"] = raidus_class.predict(X_test)
if (sum(new.quality == new.radius) > x):
x = sum(new.quality == new.radius)
y = i
print(i)
except ValueError:
break
print("Sum of correct prediction: ", x)
print("At n-neighbours = ", y)
我们可以使用捕获任何类型的异常
x = 0
y = 0
for i in range(100):
try:
raidus_class = RadiusNeighborsClassifier(radius=100-i).fit(X_train, y_train)
new["radius"] = raidus_class.predict(X_test)
if (sum(new.quality == new.radius) > x):
x = sum(new.quality == new.radius)
y = i
print(i)
except:
break
print("Sum of correct prediction: ", x)
print("At n-neighbours = ", y)
警告!特别是在使用jupyter时,使用异常会忽略stopiteration或stop,但这不应该是一个问题,因为您的语句中包含了break。
您应该使用try
和except
:
while True :
try :
# Your code inside loop
except :
break # If error occurred
您也可以在for
循环中实现这一点:
for i in range(100) :
try :
# Your code inside loop
except :
break # If error occurred
只需使用try-and-except子句。
x = 0
y = 0
for i in range(100):
try:
raidus_class = RadiusNeighborsClassifier(radius=100-i).fit(X_train, y_train)
new["radius"] = raidus_class.predict(X_test)
if (sum(new.quality == new.radius) > x):
x = sum(new.quality == new.radius)
y = i
print(i)
except Exception as e:
print(e)
break
print("Sum of correct prediction: ", x)
print("At n-neighbours = ", y)