Я пытаюсь выяснить, почему определенные перекрестные проверки с использованием определенного набора индексов, одинаковых входных данных и одинаковых random_state
в sklearn
дают разные результаты с использованием одинаковых гиперпараметров модели LogisticRegression
.Моей первой мыслью было, что начальные значения random_state
могут отличаться при последующих запусках.Затем я понял, что когда я pickle
random_state
говорит, что объекты отличаются, когда я сравниваю 2 объекта напрямую, но значения в методе get_state
совпадают.Почему это?
random_state = np.random.RandomState(0)
print(random_state)
# <mtrand.RandomState object at 0x12424e480>
with open("./rs.pkl", "wb") as f:
pickle.dump(random_state, f, protocol=pickle.HIGHEST_PROTOCOL)
with open("./rs.pkl", "rb") as f:
random_state_copy = pickle.load(f)
print(random_state_copy)
# <mtrand.RandomState object at 0x126465240>
print(random_state == random_state_copy)
# False
print(str(random_state.get_state()) == str(random_state_copy.get_state()))
# True
Версии:
numpy = '1.13.3',
Python = '3.6.4 | Anaconda, Inc. |(по умолчанию, 16 января 2018 г., 12:04:33) \ n [GCC 4.2.1 Совместимый Clang 4.0.1 (tags / RELEASE_401 / final)] ')