我正在使用完整文件构建OneHotEncoder。
def buildOneHotEncoder(training_file_name, categoricalCols):
one_hot_encoder = OneHotEncoder(sparse=False)
df = pd.read_csv(training_file_name, skiprows=0, header=0)
df = df[categoricalCols]
df = removeNaN(df, categoricalCols)
logging.info(str(df.columns))
one_hot_encoder.fit(df)
return one_hot_encoder
def removeNaN(df, categoricalCols):
# Replace any NaN values
for col in categoricalCols:
df[[col]] = df[[col]].fillna(value=CONSTANT_FILLER)
return df
现在在分块处理相同文件时,我正在使用相同的编码器
for chunk in pd.read_csv(training_file_name, chunksize=CHUNKSIZE):
....
INPUT = chunk[categoricalCols]
INPUT = removeNaN(INPUT, categoricalCols)
one_hot_encoded = one_hot_encoder.transform(INPUT)
....
它给我错误'ValueError:转换期间在第2列中发现了未知类别['missing']'
我无法一次处理完整文件,因为在训练迭代期间必须使用所有内核的内存。
问题在于条款在哪里适用
df_merged_set_test = chunk.where(chunk ['weblab'] ==“缺失”)
我基于a字段过滤数据集,因此对于所有行,它都填充NaN。后来我将它们替换为丢失的标志。
正确方法