1 回答

TA贡献1815条经验 获得超13个赞
我认为你只是让它变得非常复杂,你所做的所有计算实际上都可以通过一个函数来完成,除非你需要你的中间结果用于其他用途。
您可以创建一个可应用于数据框每一行的函数:
def predictFinalIncome(row, n):
factor = 1 + row['education'] + row['marital'] + row['income'] + row['industry']
n_income = row['income'] * factor
for i in range(n):
n_income = n_income * i
return n_income
然后,使用df.apply:
df.apply(lambda r: predictFinalIncome(r, 120), axis=1)
它返回 0,因为当你这样做时for i in range(n),你实际上是从 0 开始的,所以结果总是 0。你需要修复它。
更新:使函数存在于Model类中
从您的帖子中,我没有看到此函数存在于模型中的明显原因,特别是此函数不使用任何其他方法,也没有使用您创建的偏差属性,但它就是这样。
class myModel:
def __init__(self, bias) :
self.bias = bias
def predictFinalIncome(self, row, n):
factor = 1 + row['education'] + row['marital'] + row['income'] + row['industry']
n_income = row['income'] * factor
for i in range(n):
n_income = n_income * i
return n_income
# to use:
model = myModel(bias)
df.apply(lambda r: model.predictFinalIncome(r, 120), axis=1)
添加回答
举报