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)
添加回答
舉報