Python 无法修复ValueError(“endog必须在单位间隔内”)

Python 无法修复ValueError(“endog必须在单位间隔内”),python,statistics,logistic-regression,Python,Statistics,Logistic Regression,我被要求使用以下步骤编写逻辑回归程序 从MASS包加载R数据集 将数据捕获为数据帧 将列名类重命名为类 将类列值良性和恶性分别转换为“0”和“1” 建立自变量V1和因变量类别的logistic回归模型 用数据拟合模型,并显示伪R平方值 我尝试过改变这些值,但我不确定该怎么做。此外,我还是使用Python进行统计的初学者 import statsmodels.api as sa import statsmodels.formula.api as sfa biopsy = sa.datasets.g

我被要求使用以下步骤编写逻辑回归程序

  • 从MASS包加载R数据集
  • 将数据捕获为数据帧
  • 将列名类重命名为类
  • 将类列值良性和恶性分别转换为“0”和“1”
  • 建立自变量V1和因变量类别的logistic回归模型
  • 用数据拟合模型,并显示伪R平方值
  • 我尝试过改变这些值,但我不确定该怎么做。此外,我还是使用Python进行统计的初学者

    import statsmodels.api as sa
    import statsmodels.formula.api as sfa
    biopsy = sa.datasets.get_rdataset("biopsy","MASS")
    biopsy_data = biopsy.data
    biopsy_data.rename(columns={"class":"Class"})
    biopsy_data.Class = biopsy_data.Class.map({"benign":0,"malignant":1})
    log_mod1 = sfa.logit("V1~Class",biopsy_data)
    log_res1 = log_mod1.fit()
    print(log_res1.summary())
    
    我希望有一个值表,但输出是

    ValueError("endog must be in the unit interval.")
    

    您需要执行一些预处理步骤,它们告诉您必须在0到1之间的单位间隔内

    您可以通过执行以下操作进行功能缩放: X-Xmin/Xmax-Xmin

    在这里,它应该起作用的修改是:

    import statsmodels.api as sa
    import statsmodels.formula.api as sfa
    biopsy = sa.datasets.get_rdataset("biopsy","MASS")
    biopsy_data = biopsy.data
    biopsy_data.rename(columns={"class":"Class"},inplace=True)
    biopsy_data.Class = biopsy_data.Class.map({"benign":0,"malignant":1})
    biopsy_data["V1"] = np.divide(biopsy_data["V1"] - biopsy_data["V1"].min(), biopsy_data["V1"].max() - biopsy_data["V1"].min())
    log_mod1 = sfa.logit("V1~Class",biopsy_data)
    log_res1 = log_mod1.fit()
    print(log_res1.summary())
    
    在调用
    sfa.logit()
    之前,我已经对您想要使用的自变量进行了预处理(
    V1

    变化:

    log_mod1 = sfa.logit("V1~Class",biopsy_data)
    
    致:


    这很有效。

    不客气!如果你能检查答案是否被接受,这将对下一个问题有很大帮助
    log_mod1 = sfa.logit("Class~V1",biopsy_data)