如何将词嵌入与聚类ID特征结合用于文本分类
将簇ID作为特征加入文本分类模型的方法
你考虑的独热编码+词嵌入拼接是完全可行的方案,也是这类场景下的常规操作,下面给你具体的实现步骤:
步骤1:对簇ID进行独热编码
假设你的Data里有一列叫cluster_id,存储1-3的簇编号,用pandas的get_dummies就能快速生成独热编码:
import pandas as pd # 生成独热编码,prefix参数用来标记特征来源 cluster_onehot = pd.get_dummies(Data['cluster_id'], prefix='cluster')
步骤2:拼接词嵌入与独热编码特征
把原来的词嵌入矩阵和独热编码的特征列拼接在一起,形成新的特征矩阵X_combined:
import numpy as np # 将原词嵌入转为DataFrame(方便和独热编码按索引对齐拼接) word_emb_df = pd.DataFrame(X, index=Data.index) # 按列拼接两种特征 X_combined = pd.concat([word_emb_df, cluster_onehot], axis=1).values
步骤3:用新特征矩阵训练模型
替换原来的X为拼接后的X_combined,后续训练流程和原代码一致:
y = Data['category'].values indices = filtered_products.index.values # 拆分训练测试集 X_train, X_test, y_train, y_test, indices_train, indices_test = train_test_split( X_combined, y, indices, test_size=0.3, random_state=428 ) # 训练SVM模型 clf = svm.SVC(C=1.0, kernel='linear', degree=3, gamma='auto') DSVM = clf.fit(X_train, y_train) prediction = DSVM.predict(X_test) # 输出评估结果 print(metrics.classification_report(y_test, prediction))
额外注意事项
- 不要直接把簇ID(1-3)作为数值特征加入模型,因为簇是分类标识,没有数值大小关系,模型会错误解读这种顺序关系,独热编码是更合理的选择。
- 如果后续簇数量增加,独热编码会导致特征维度膨胀,那时可以考虑用标签编码后再做嵌入,但当前3个簇的场景下,独热编码足够简单有效。
内容的提问来源于stack exchange,提问作者neuron
相关产品推荐
相关产品推荐

