我在尝试预测一个人使用某种药物的概率时遇到了问题,其中一个关键的预测显示出了索引错误。
这是用于预测的。我之前使用这种结构进行其他预测时没有遇到任何问题。
import numpy as npimport pandas as pdimport sklearn.ensemble as skledrug = pd.read_sas('C:/Users/hamee/Downloads/DUQ_I.xpt')mod = skle.RandomForestClassifier()fitmod = mod.fit(drug2[["DUQ200", "DUQ240", "DUQ250", "DUQ290", "DUQ330", "DUQ370"]], drug2["DUQ240"])Pred = fitmod.predict_proba(drug2[["DUQ200", "DUQ240", "DUQ250", "DUQ290", "DUQ330", "DUQ370"]])Brier = np.mean((Pred[:,1]-drug2["DUQ290"]**2))
我期望得到一个小数或一个大数的输出,结果是:
IndexError Traceback (most recent call last)<ipython-input-19-90c24bde1c32> in <module>----> 1 Brier = np.mean((Pred[:,1]-drug2["DUQ290"]**2))IndexError: index 1 is out of bounds for axis 1 with size 1
回答:
假设在Pred
之前的所有操作都正确无误
你的Pred
是一个一维数组,尝试Pred.shape
,它应该返回一个元组(length, )
。因此,你只需要这样做
Brier = np.mean((Pred-drug2["DUQ290"]**2))
更新:由于你的Pred.shape
是(539, 1)
,应该这样做:
Brier = np.mean((Pred[:,0]-drug2["DUQ290"]**2))
因为所有列表索引都是从0
开始的。