首页 > 解决方案 > 如何修复 Numpy 中的索引错误以用于机器学习模型?

问题描述

我试图预测一个人使用某种药物的概率。重要的预测之一是显示 IndexError。

这是为了预测。我已经使用了这种结构,在不同的预测上没有问题,没有问题。

import numpy as np
import pandas as pd
import sklearn.ensemble as skle
drug = 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

标签: pythonnumpymachine-learningprobability

解决方案


假设一切Pred正常

Pred是一个一维数组,试试Pred.shape,它应该返回一个元组(length, )。因此你只需要做

Brier = np.mean((Pred-drug2["DUQ290"]**2))

更新:因为你的Pred.shapeis (539, 1),它应该是:

Brier = np.mean((Pred[:,0]-drug2["DUQ290"]**2))

因为所有列表索引都从0.


推荐阅读