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

解决Python中DecisionTreeClassifier拟合时的Input contains NaN错误

解决决策树训练时的NaN输入错误

1. 先定位缺失值位置

先检查原始数据中tweet和labels列的缺失值情况:

# 打印两列的缺失值数量
print(df[["tweet", "labels"]].isna().sum())

若labels列存在缺失值

标签缺失的样本无法参与训练,直接删除这些行:

# 删除标签为空的行
df = df.dropna(subset=["labels"])
# 重新生成特征和标签数组
x = np.array(df["tweet"])
y = np.array(df["labels"])

若tweet列存在缺失值

CountVectorizer无法处理空文本,先将缺失的tweet替换为空字符串:

# 填充空的tweet为占位符
df["tweet"] = df["tweet"].fillna("")
x = np.array(df["tweet"])

2. 处理稀疏矩阵中的NaN(若仍存在)

CountVectorizer生成的是稀疏矩阵,直接用fill(0)不生效,可通过以下方式处理:

# 方式1:转换为稠密矩阵后填充0
x = cv.fit_transform(x).toarray()
x = np.nan_to_num(x, nan=0)

如果担心内存占用过大,用稀疏矩阵专属处理方式:

# 方式2:直接修改稀疏矩阵的非空值
x = cv.fit_transform(x)
x.data = np.nan_to_num(x.data, nan=0)

3. 重新执行训练流程

处理完缺失值后,重新运行分割和训练代码:

cv = CountVectorizer()
x = cv.fit_transform(x)
x_train, x_test, y_train, y_test = train_test_split(x,y, test_size=0.25, random_state=42)
clf = DecisionTreeClassifier()
clf.fit(x_train,y_train)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:17:15