我有一个在Logistic RegressionCV中实现KFold的程序。我已经设置了一个种子并在KFOLD和LogisticRegressionCV中使用它。即使设置了种子,每次重新运行内核时,我都会对所有指标进行不同的测量。这是代码:
rs = random.seed(42)
X_train, X_test, y_train, y_test = train_test_split(X_smt, y_smt, test_size=0.1,
random_state=42)
kf = KFold(n_splits=15, shuffle=flase, random_state=42)
logistic = LogisticRegressionCV(Cs=2, fit_intercept=True, cv=kf, verbose =1, random_state=42)
logistic.fit(X_train, y_train)
print("Train Coefficient:" , logistic.coef_) #weights of each feature
print("Train Intercept:" , logistic.intercept_) #value of intercept
print("\n \n \n ")
logistic.predict(X_test)
test_precision = metrics.precision_score(y_test, logistic.predict(X_test))
test_avg_precision = metrics.average_precision_score(y_test, logistic.predict(X_test))
可能是什么原因,如果有一个简单的解决方案。
根据SKlearn文件here:Randomized CV splitters may return different results for each call of split. You can make the results identical by setting random_state to an integer
。
但是,它可能只设置折叠随机状态而不是改组。尝试设置shuffle=False
,看看你是否仍然得到不同的结果。