0
点赞
收藏
分享

微信扫一扫

AutoGluon多维输出学习

AutoGluon 的 TabularPredictor 不直接支持多输出(多标签)任务。如果你想对多个目标进行预测,可以考虑以下几种方法:

方法 1: 针对每个目标分别训练模型

你可以对每个目标标签单独创建并训练一个 TabularPredictor 实例。示例如下:

import pandas as pd  
from autogluon.tabular import TabularPredictor  

# 创建示例数据  
data = {  
    'feature1': [1, 2, 3, 4],  
    'feature2': [5, 6, 7, 8],  
    'target1': [1, 0, 1, 0],  
    'target2': [0, 1, 1, 0]  
}  
train_data = pd.DataFrame(data)  

# 针对每个目标训练独立的预测器  
predictor1 = TabularPredictor(label='target1').fit(train_data)  
predictor2 = TabularPredictor(label='target2').fit(train_data)  

# 进行预测  
predictions1 = predictor1.predict(train_data)  
predictions2 = predictor2.predict(train_data)  

# 合并预测结果  
results = pd.DataFrame({'target1_pred': predictions1, 'target2_pred': predictions2})  
print(results)

方法 2: 使用有序连续值的多任务学习

如果你的任务是回归类,且目标是相关的,你可以考虑将任务转化为多任务学习问题,使用支持多任务的深度学习框架(如 PyTorch/Keras 等)来训练模型。

方法 3: 处理多输出任务的库

考虑使用 scikit-learn 中的 MultiOutputRegressor 或 MultiOutputClassifier 来处理多目标任务。如下为示例:

from sklearn.multioutput import MultiOutputClassifier  
from sklearn.ensemble import RandomForestClassifier  
import pandas as pd  

# 创建示例数据  
data = {  
    'feature1': [1, 2, 3, 4],  
    'feature2': [5, 6, 7, 8],  
    'target1': [1, 0, 1, 0],  
    'target2': [0, 1, 1, 0]  
}  
train_data = pd.DataFrame(data)  

X = train_data[['feature1', 'feature2']]  
y = train_data[['target1', 'target2']]  

# 使用 MultiOutputClassifier  
classifier = MultiOutputClassifier(RandomForestClassifier())  
classifier.fit(X, y)  

# 进行预测  
predictions = classifier.predict(X)  
pred_df = pd.DataFrame(predictions, columns=['target1_pred', 'target2_pred'])  
print(pred_df)

总结

  • AutoGluon 的 TabularPredictor 仅支持单一目标标签的训练。
  • 若要处理多标签或多维输出任务,可以考虑方法 1(单独训练模型),或使用像 scikit-learn 这样的工具处理多输出任务。
  • 如果目标之间存在关联且适合多任务学习,可以转向深度学习框架
举报

相关推荐

0 条评论