为了账号安全,请及时绑定邮箱和手机立即绑定

无法修复 ValueError("endog 必须在单位区间内")

无法修复 ValueError("endog 必须在单位区间内")

慕森卡 2022-06-02 15:15:09
我被要求使用以下步骤编写逻辑回归程序。从 MASS 包中加载 R 数据集活检。将数据捕获为 pandas 数据框。将列名类重命名为 Class。将类别列值良性和恶性分别转换为“0”和“1”。建立一个自变量 V1 和因变量 Class 的逻辑回归模型。用数据拟合模型,并显示伪 R 平方值我已经尝试更改值,但我不确定该怎么做。另外,我是使用 Python 进行统计的初学者。import statsmodels.api as saimport statsmodels.formula.api as sfabiopsy = sa.datasets.get_rdataset("biopsy","MASS")biopsy_data = biopsy.databiopsy_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.")
查看完整描述

2 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

改变:

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

至:

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

这行得通。


查看完整回答
反对 回复 2022-06-02
?
LEATH

TA贡献1936条经验 获得超6个赞

您需要执行一些预处理步骤,它们告诉您必须处于单位间隔内,因此介于 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此处)。


查看完整回答
反对 回复 2022-06-02
  • 2 回答
  • 0 关注
  • 547 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信