在机器学习PAI使用Pipeline组件训练出来的随机森林模型,怎么输出各个特征的权重呢?
在阿里云机器学习PAI中使用Pipeline组件训练出来的随机森林模型可以通过以下步骤输出各个特征的权重:
首先,您需要使用 joblib
或者 pickle
将模型序列化并保存到文件中。例如,如果您使用的是 joblib
库,可以按照以下方式将模型保存到文件中:
import joblib
# 训练好的随机森林模型
rf_model = ...
# 将模型保存到文件中
joblib.dump(rf_model, "model.pkl")
接着,在 Python 脚本中加载模型:
import joblib
# 加载随机森林模型
rf_model = joblib.load("model.pkl")
随机森林模型可以通过 feature_importances_ 属性获取每个特征的重要性。您可以按照以下方式访问该属性:
# 获取特征重要性
feature_importances = rf_model.feature_importances_
# 输出各个特征的权重
for i, importance in enumerate(feature_importances):
print(f"Feature {i}: {importance}")
在上述代码中,feature_importances_
属性返回一个数组,其中每个元素都是每个特征的重要性得分。您可以使用 for 循环遍历数组,并输出每个特征的权重得分。
在机器学习PAI中使用Pipeline组件训练出来的随机森林模型,可以通过RandomForestModelInfoBatchOp组件来获取模型的信息,包括每个特征的重要性。以下是一个简单的例子:
from pyalink.alink import *
from pyalink.alink.batch import *
# 读取源表
source = CsvSourceBatchOp() \
.setFilePath("train.csv") \
.setFieldDelimiter(",") \
.setSchemaStr("label int, f0 double, f1 double, f2 double")
# 将特征转换为向量
vectorizer = VectorAssembler() \
.setSelectedCols(["f0", "f1", "f2"]) \
.setOutputCol("features")
# 训练随机森林分类器
classifier = RandomForestClassifier() \
.setFeatureCols("features") \
.setLabelCol("label")
# 创建Pipeline
pipeline = Pipeline() \
.add(vectorizer) \
.add(classifier)
# 链接操作并运行
model = pipeline.fit(source).collectModel()
# 获取随机森林模型信息
model_info = RandomForestModelInfoBatchOp() \
.setModelInfo(model) \
.collect()
# 输出特征重要性
print("Feature Importance: ")
for feat_imp in model_info[0].featureImportance:
print(feat_imp.featureName, feat_imp.importance)
在这个例子中,我们首先读取源表,然后使用VectorAssembler组件将特征转换为向量。接着,我们训练了一个随机森林分类器,并将其与VectorAssembler组件一起打包到Pipeline中。然后,我们使用Pipeline.fit()方法对源表进行训练,并使用PipelineModel.collectModel()方法收集训练得到的模型。
接着,我们创建了一个RandomForestModelInfoBatchOp组件,并将收集到的模型信息传递给它。最后,我们遍历每个特征的重要性,并输出其名称和重要性。
训练op里边getModelInfo可以拿到特征重要性,Classifier上现在应该是只能print,可以试一下,有个缩略输出,enableLazyPrintModelInfo这个开关。此回答整理自钉群“Alink开源--用户群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
人工智能平台 PAI(Platform for AI,原机器学习平台PAI)是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务,内置140+种优化算法,具备丰富的行业场景插件,为用户提供低门槛、高性能的云原生AI工程化能力。