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

如何将含文本的CSV转为RecordIO格式?解决Unsupported dtype报错

解决RecordIO转换时「ValueError: Unsupported dtype object on array」错误

这个错误的核心原因是你使用的smac.write_numpy_to_dense_tensor只支持数值型numpy数组,但你传入的X是文本类型的数组(dtype为object),因此触发了不支持的类型错误,必须调整数据格式。

调整步骤及示例代码

  1. 先将文本特征转换为数值型数据(可选用TF-IDF、词嵌入等方法),同时对标签做编码处理:
import io
import sagemaker.amazon.common as smac
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.preprocessing import LabelEncoder
import pandas as pd
import numpy as np

# 加载数据集(示例)
df = pd.DataFrame({
    'Label': ['label a', 'label b'],
    'Subject': ['Test one', 'Test two'],
    'Body': ['Test Body', 'Test second']
})

# 合并Subject和Body作为统一文本特征
df['combined_text'] = df['Subject'] + ' ' + df['Body']

# 用TF-IDF将文本转为数值矩阵
tfidf = TfidfVectorizer()
X = tfidf.fit_transform(df['combined_text']).toarray()

# 对标签做编码,转为数值型数组
le = LabelEncoder()
y = le.fit_transform(df['Label']).reshape(-1, 1)

# 写入RecordIO格式
buf = io.BytesIO()
smac.write_numpy_to_dense_tensor(buf, X, y)
buf.seek(0)
  1. 关键注意点:
  • 确保X和y最终都是数值型numpy数组(比如float32、int32类型),绝对不能保留object类型的文本数据。
  • 除TF-IDF外,也可选用Word2Vec、BERT嵌入等其他文本向量化方法,只要输出为数值矩阵即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:20:38