You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运动员奖牌获得概率预测模型运行报输入含NaN错误如何解决

报错原因
  • 你仅对Height、Weight两列做了缺失值填充,但用于训练的特征矩阵X包含Age、Sex、Height、Weight四个特征,未处理Age列的缺失值,这些NaN值传入模型时触发了报错。
  • 潜在风险:若Sex列存在空值,你编写的lambda函数会将空值识别为非'M'统一赋值为1,虽不会直接触发NaN报错,但会导致训练数据出现偏差。
修复方案
  1. 补充填充Age列的缺失值,可沿用均值填充的逻辑:
# 填充Age列缺失值
df['Age'].fillna(value=df['Age'].mean(), inplace=True)
# 可将Age转为int类型,和你现有数据格式保持统一
df['Age'] = df['Age'].astype(int)
  1. (可选)检查并处理Sex列的空值,避免数据噪声:
# 先查看Sex列的缺失数量
print(df['Sex'].isna().sum())
# 若存在缺失,可用众数填充后再做编码
df['Sex'].fillna(df['Sex'].mode()[0], inplace=True)
df['Sex'] = df['Sex'].apply(lambda x: 1 if str(x) != 'M' else 0)
  1. 训练前校验所有特征的完整性,确认无缺失值后再运行模型:
# 输出各特征列的缺失值数量,全为0即可正常训练
feature_names = ["Age", "Sex", "Height", "Weight"]
print(df[feature_names].isna().sum())
  1. 场景适配优化:你的目标变量Medal是0/1二分类变量,使用DecisionTreeRegressor回归器不符合任务场景,建议替换为分类模型,例如DecisionTreeClassifier,更适配获奖概率预测的需求,修改代码如下:
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import cross_val_score
classifier = DecisionTreeClassifier(random_state=0)
cross_val_score(classifier, X, y, cv=10)

内容的提问来源于stack exchange,提问作者user13998985

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:09:01