Python

Почему elif выдаёт ошибку? expected an indented block

Если делаешь отступ (хотя, разве он должен быть здесь?), то другая ошибка - invalid syntax (хотя, код скопирован из рабочего кода...)

user_score += 1
if user_variant == "0" and cpu_variant == 1 or user_variant == "1" and cpu_variant == 2 or user_variant == "2" and cpu_variant == 0:
elif user_variant == "0" and cpu_variant == 0 or user_variant == "1" and cpu_variant == 1 or user_variant == "2" and cpu_variant == 2:

cpu_score = 0
cpu_score = cpu_score + 1
if user_variant == "0" and cpu_variant == 2 or user_variant == "1" and cpu_variant == 0 or user_variant == "2" and cpu_variant == 1:
elif user_variant == "0" and cpu_variant == 0 or user_variant == "1" and cpu_variant == 1 or user_variant == "2" and cpu_variant == 2:

print(user_name + " " + str(user_score) + " : " + str(cpu_score) + " " + cpu_name)
После "if условие:" должен быть оператор (или несколько операторов, которые выполнятся, если условие верно), а у тебя сразу elif.
МУ
Михаил Усов
58 065
Лучший ответ
Задача обучить случайный лес с различным числом деревьев от 1 до 50 и для каждого из вариантов оценить качество работы полученного леса на кросс-валидации по 5 блокам. (sklearn.metrics.r2_score). Я написал такой цикл:

from sklearn.ensemble import RandomForestRegressor
from sklearn.cross_validation import KFold
from sklearn.metrics import r2_score

P_scores = []
p = np.linspace(1.0, 50.0, num=50)
p1 = np.array(p)
kf = KFold(4176, n_folds=5, random_state=1, shuffle=True)

P = 0
while P < len(p1):
regressor = RandomForestRegressor(n_estimators=P, random_state=1)
regressor.fit(X, Y)
predictions = clf.predict(X)
r2_score(Y, predictions)
P_scores.append(r2_score)
print(P_scores)
P += 1
Но получается ошибка всегда одна и та же, какой бы я цикл не писал:

IndentationError: expected an indented block
Как её исправить?

(я делал так же forцикл с индексами [P] но выходила всё та же ошибка)

Обновление

Правда, я писал код в блокноте и просто вставил в консоль без отступа. Код сработал, потому что ошибка получилась другая:

ValueError: n_estimators must be greater than zero, got 0.

Но тут просто с 1 начать нужно.

Почему то вместо ожидаемого результата вектора содержащего оценки по итерациям. Я получил:



...


и при команде

min(r2_score)
TypeError: 'function' object is not iterable
E = np.array(r2_score)
min(E)
TypeError: iteration over a 0-d array
python