【问题标题】:LogisticRegressionCV gives different answer even if the seed is set即使设置了种子,LogisticRegressionCV 也会给出不同的答案
【发布时间】:2019-02-22 23:06:36
【问题描述】:

我有一个在 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))

这可能是什么原因,是否有简单的解决方案。

【问题讨论】:

    标签: python logistic-regression cross-validation seed


    【解决方案1】:

    根据SKlearn文档hereRandomized 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,看看你是否仍然得到不同的结果。

    【讨论】:

    • 我已根据您的建议更改了主要问题以及其中的代码。每次它仍然给我不同的答案。
    猜你喜欢
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    相关资源
    最近更新 更多