"... это запутанный способ доступа к кортежу, освобожденному функцией partial_dependence
."
Если results
является кортежем, тогда [x for x in results]
может быть просто results = list(results)
. Но доступ к элементам списка можно получить по индексу, как к кортежам. Поэтому нет необходимости сначала преобразовывать его в кортеж.
Затем вы выполняете yx = lists[0]
, которое относится к первой части возвращаемого значения partial_dependence()
. Это averaged_predictions
. Таким образом, эта строка могла быть просто yx = results.averaged_predictions
.
Затем y=yx[0]
, который является первым элементом первой части возвращаемого значения partial_dependence. Это будет y = results.averaged_predictions[0]
.
Собирая все это вместе, код становится:
feature_dict = {}
for feature in X_test.columns:
results = partial_dependence(mlp, X_test, features=feature,
percentiles=(0.001, 0.999), grid_resolution=25)
y = results.averaged_predictions[0]
feature_dict[feature] = np.avg(y)
И если вы не обрабатываете y
дальше, его не нужно назначать отдельно:
for feature in X_test.columns:
results = partial_dependence(mlp, X_test, features=feature,
percentiles=(0.001, 0.999), grid_resolution=25)
feature_dict[feature] = np.avg(results.averaged_predictions[0])
Следующий шаг необязателен и не рекомендуется из-за того, как он выглядит - вы могли бы сделать все это l oop большим, почти нечитаемым пониманием словаря:
feature_dict = {
feature: np.avg(
partial_dependence(mlp, X_test,
features=feature,
percentiles=(0.001, 0.999),
grid_resolution=25
).averaged_predictions[0])
for feature in X_test.columns
}