我创建了一个用Python中的knn替换缺失值的函数,以下是我的函数:
def missing_variables_knn(x):
test = data[data[x].isnull()]
train = data[data[x].isnull()==False]
X_train = train.loc[:, ['ApplicantIncome', 'CoapplicantIncome', 'LoanAmount', 'Loan_Amount_Term']]
Y_train = train[x]
X_test = test.loc[:, ['ApplicantIncome', 'CoapplicantIncome', 'LoanAmount', 'Loan_Amount_Term']]
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, Y_train)
pred = knn.predict(X_test)
pred = pd.Series(pred)
data[x].fillna(pred)
当我使用missing_variables_knn('Gender')
时,出现错误:
系列的真值是模棱两可的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。
答案 0 :(得分:1)
库需要一个始终为true的值。使用您的功能,您不能保证始终返回true。这就是为什么大熊猫将其解释为含糊不清的原因。
你应该做的是使用.filter()等其他功能。这里有一个相关的帖子:https://stackoverflow.com/questions/36921951/truth-value-of-a-series-is-ambiguous-use-a-empty-a-bool-a-item-a-any- o / 36922103
最安全的是错误在这里:train = data [data [x] .isnull()== False]