无法修复 ValueError("endog must be in the unit interval")
Unable to fix ValueError("endog must be in the unit interval")
我被要求使用以下步骤编写逻辑回归程序。
- 从 MASS 包加载 R 数据集活检。
- 将数据捕获为 pandas 数据帧。
- 将列名称 class 重命名为 Class。
- 将 Class 列值良性和恶性分别转换为“0”和“1”。
- 建立一个自变量V1和因变量Class的逻辑回归模型。
- 用数据拟合模型,并显示伪 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())
我期望 table 个值,但输出是
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)
这有效。
我被要求使用以下步骤编写逻辑回归程序。
- 从 MASS 包加载 R 数据集活检。
- 将数据捕获为 pandas 数据帧。
- 将列名称 class 重命名为 Class。
- 将 Class 列值良性和恶性分别转换为“0”和“1”。
- 建立一个自变量V1和因变量Class的逻辑回归模型。
- 用数据拟合模型,并显示伪 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())
我期望 table 个值,但输出是
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)
这有效。