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

时间:2019-09-21 12:23:08

标签: python statistics logistic-regression

我被要求使用以下步骤编写用于Logistic回归的程序。

  1. 从MASS软件包中加载R数据活检。
  2. 将数据捕获为熊猫数据框。
  3. 将列名称类重命名为Class。
  4. 将“类别”列的值分别良性和恶性地分别转换为“ 0”和“ 1”。
  5. 构建具有自变量V1和因变量Class的逻辑回归模型。
  6. 使模型适合数据,并显示伪R平方值

我尝试更改值,但不确定该怎么做。另外,我还是使用Python进行统计的初学者。

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

我希望有一个值表,但输出是

`Couldn't resolve resource @string/hello_blank_fragment`

2 个答案:

答案 0 :(得分:1)

您需要执行一些预处理步骤,它们告诉您必须在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)。

答案 1 :(得分:0)

更改:

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

收件人:

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

这有效。