【发布时间】:2019-05-05 20:01:54
【问题描述】:
我使用stats.models 运行了一个 Logit 模型,并声明了一个带有预测值的序列:
M1 = sm.Logit(y_train, X_train)
M1_results = M1.fit()
y_pred = M1_results.predict(X_train) # This returns a series
y_pred 是一个值介于 0 和 1 之间的序列。我想通过将它们与任意截止值进行比较来有条件地覆盖它的值。
基本上,如果M1_pred <= 0.7 的第i- 个元素,用0 覆盖。否则,用1覆盖。
我尝试将 for 和 if 循环组合在一起:
for i in y_pred:
if i <= 0.7:
i = 0
else:
i = 1
为什么这没有覆盖y_pred 中的任何值?
我不得不求助于切片(建议here):
y_pred[y_pred <= 0.7] = 0
y_pred[y_pred > 0.7] = 1
当我转向多类模型时,这会很不方便。如何使用for 和if 表示法获得相同的结果?
PS:请原谅我的无知。我最近从 R 迁移到 Python,一切都很混乱。
【问题讨论】:
-
for i, item in enumerate(y_pred):然后y_pred[i] = 0 -
@OlvinRoght 我不懂语法。可以扩展一下吗?
标签: python pandas for-loop if-statement