【问题标题】:Logistic Regression - Python?逻辑回归 - Python?
【发布时间】:2020-03-22 17:32:41
【问题描述】:

您能否简要描述一下以下代码行的含义。这是Python中逻辑回归的代码。

size =0.25 和 random_state = 0 是什么意思?什么是 train_test_split ?这行代码做了什么?

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=0)

这些代码行做了什么?

logistic_regression= LogisticRegression()
logistic_regression.fit(X_train,y_train)
y_pred=logistic_regression.predict(X_test) 

【问题讨论】:

    标签: python pandas scikit-learn regression


    【解决方案1】:

    这一行行:

    X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=0)
    

    将您的源分为训练集和测试集,0.25 表示 25% 的源将用于测试,剩余的将用于训练。

    对于,random_state = 0,这是一个brief discussion。 以上链接的一部分:

    如果你使用 random_state=some_number,那么你可以保证 Run 1 的输出将等于 Run 2 的输出,

    logistic_regression= LogisticRegression() #Creates logistic regressor
    

    为您的源计算一些值。 Recommended read

    logistic_regression.fit(X_train,y_train) 
    

    以上链接的一部分:

    这里的 fit 方法,当应用于训练数据集时,学习 模型参数(例如,平均值和标准差) …… 实际的 random_state 数字是 42、0、21、... 并不重要,重要的是每次使用 42 时,第一次进行拆分时总是会得到相同的输出。如果您想要可重复的结果,这很有用,

    根据从训练集中学习的结果对测试集进行预测。

    y_pred=logistic_regression.predict(X_test) 
    

    【讨论】:

    • 我读了你的链接,但是,你能告诉我,如果我使用例如 random_state = 0 和 random_state = I do not know 45 有什么区别?
    • 我根据您的评论更新了答案。您选择哪个数字并不重要,但无论您选择什么,如果您想重现结果,您都可以继续使用它。不管是 0、42、45 还是别的什么。
    【解决方案2】:

    基于documentation

    test_size :float、int 或 None,可选(默认=None)

    如果是浮点数,则应介于 0.0 和 1.0 之间,表示要包含在测试拆分中的数据集的比例。如果是int,表示测试样本的绝对数量。如果为 None,则将该值设置为火车大小的补码。如果 train_size 也为 None,则设置为 0.25。

    这将您的训练数据和测试数据分开,如果您总共有 1000 个数据点,test_size=0.25 将意味着您有:

    • 750 个训练数据点
    • 250 个数据点进行测试

    完美的大小仍在讨论中,对于大型数据集(1.000.000+),我目前更喜欢将其设置为 0.1。甚至在我有另一个验证数据集之前,我会完全保留它,直到我决定运行算法。

    random_state : int,RandomState 实例或无,可选 (默认=无)

    如果是int,则random_state是随机数生成器使用的种子;如果是 RandomState 实例,则 random_state 是随机数生成器;如果为 None,则随机数生成器是 np.random 使用的 RandomState 实例。

    对于机器学习,您应该将其设置为一个值,如果您设置它,您将有机会在另一天打开您的程序并仍然产生相同的结果,通常 random_state 也在所有可用的分类器/回归模型中,这样您就可以开始工作和调整,并使其可重现,

    评论你的回归:

    logistic_regression= LogisticRegression()
    logistic_regression.fit(X_train,y_train)
    y_pred=logistic_regression.predict(X_test) 
    
    1. 将加载您的Regression,对于python,这只是命名它
    2. 将根据您的训练集拟合您的逻辑回归,在此示例中,它将使用 750 个数据集来训练回归。训练意味着,逻辑回归的权重将通过 750 个条目最小化,y_train 的估计值适合
    3. 这将使用第 2 步的学习权重来估计 y_predX_test

    之后你可以测试你的结果,你现在有一个你计算的y_pred和真正的y_test,你可以知道计算一些准确度分数以及回归训练的好坏。

    【讨论】:

      【解决方案3】:

      size =0.25 和 random_state = 0 是什么意思?

      test_size=0.25 -> 训练和测试数据的 25% 拆分。

      random_state = 0 -> 对于可重复的结果,这可以是任何数字。

      这行代码做了什么?

      Xy 拆分为X_train, X_test, y_train, y_test

      这些代码行做了什么?

      通过fit(X_train, y_train)训练逻辑回归模型,然后对测试集X_test进行预测。

      稍后你可能会比较y_predy_test,看看模型的准确度是多少。

      【讨论】:

        【解决方案4】:

        X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=0)

        上面一行将您的数据随机拆分为训练和测试数据

        • X 是您的数据集减去输出变量
        • y 是你的输出变量
        • test_size=0.25 表示您将数据分成 75%-25%,其中 25% 是您的测试数据集
        • random_state 用于在运行代码时再次生成相同的样本

        参考train-test-split documentation

        【讨论】:

          【解决方案5】:

          在这里查看the description of the function

          • random_state 为随机数生成器设置种子,以在每次运行时为您提供相同的结果,这在教育环境中特别有用,可以为每个人提供相同的结果。
          • test_size 是指在测试拆分中使用的比例,这里 75% 的数据用于训练,25% 用于测试模型。

          其他行只是在训练数据集上运行逻辑回归。然后,您可以使用测试数据集来检查拟合回归的好坏。

          【讨论】:

          • 那么当我使用 random_state = 0 时我能收到什么?为什么 0 no 例如 45 ?还是这样?
          • 只是种子,是随机数生成器的一种起始值。通常这不需要设置,当你想复制 exact 相同的结果时它很有用。
          猜你喜欢
          • 2016-12-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-06
          • 2016-03-09
          • 2011-04-14
          • 2014-12-19
          • 2018-11-05
          • 1970-01-01
          相关资源
          最近更新 更多