- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试提取使用 Pyspark
训练过的随机森林分类器
模型的特征重要性。我引用了下面的文章来获取我训练的随机森林模型的特征重要性得分。
PySpark & MLLib: Random Forest Feature Importances
但是,当我使用本文中描述的方法时,出现以下错误
'CrossValidatorModel' object has no attribute 'featureImportances'
这是我用来训练模型的代码
cols = new_data.columns
stages = []
label_stringIdx = StringIndexer(inputCol = 'Bought_Fibre', outputCol = 'label')
stages += [label_stringIdx]
numericCols = new_data.schema.names[1:-1]
assembler = VectorAssembler(inputCols=numericCols, outputCol="features")
stages += [assembler]
pipeline = Pipeline(stages = stages)
pipelineModel = pipeline.fit(new_data)
new_data.fillna(0, subset=cols)
new_data = pipelineModel.transform(new_data)
new_data.fillna(0, subset=cols)
new_data.printSchema()
train_initial, test = new_data.randomSplit([0.7, 0.3], seed = 1045)
train_initial.groupby('label').count().toPandas()
test.groupby('label').count().toPandas()
train_sampled = train_initial.sampleBy("label", fractions={0: 0.1, 1: 1.0}, seed=0)
train_sampled.groupBy("label").count().orderBy("label").show()
labelIndexer = StringIndexer(inputCol='label',
outputCol='indexedLabel').fit(train_sampled)
featureIndexer = VectorIndexer(inputCol='features',
outputCol='indexedFeatures',
maxCategories=2).fit(train_sampled)
from pyspark.ml.classification import RandomForestClassifier
rf_model = RandomForestClassifier(labelCol="indexedLabel", featuresCol="indexedFeatures")
labelConverter = IndexToString(inputCol="prediction", outputCol="predictedLabel",
labels=labelIndexer.labels)
pipeline = Pipeline(stages=[labelIndexer, featureIndexer, rf_model, labelConverter])
paramGrid = ParamGridBuilder() \
.addGrid(rf_model.numTrees, [ 200, 400,600,800,1000]) \
.addGrid(rf_model.impurity,['entropy','gini']) \
.addGrid(rf_model.maxDepth,[2,3,4,5]) \
.build()
crossval = CrossValidator(estimator=pipeline,
estimatorParamMaps=paramGrid,
evaluator=BinaryClassificationEvaluator(),
numFolds=5)
train_model = crossval.fit(train_sampled)
请帮助解决上述错误并帮助提取特征
最佳答案
这是因为 CrossValidatorModel
没有特征重要性属性,但 RandomForestModel
模型有。
由于您使用Pipeline
和CrossValidator
来拟合数据,因此您需要获得最佳拟合的底层阶段型号:
# '2' is the index of your RandomForestModel inside of the Pipeline
your_model = cvModel.bestModel.stages[2]
var_imp = your_model.featureImportances
关于apache-spark - “CrossValidatorModel”对象没有属性 'featureImportances',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53586875/
我想找到在 Spark 1.4.x 的 CrossValidator 中构建最佳模型的 ParamGridBuilder 参数, 在 Pipeline Example在 Spark 文档中,他们通过在
我正在尝试提取使用 Pyspark 训练过的随机森林分类器模型的特征重要性。我引用了下面的文章来获取我训练的随机森林模型的特征重要性得分。 PySpark & MLLib: Random Forest
我使用逻辑回归和 spark-ml 管道训练了一个简单的 CrossValidatorModel。我可以预测新数据,但我想超越黑匣子并对系数进行一些分析 val lr = new LogisticR
Flink 是流式处理的明显选择,但是 Spark 已经成熟了 ML pipeline,是否可以在 Spark 中训练模型,将其另存为 CrossValidatorModel code> 并部署到 F
我是一名优秀的程序员,十分优秀!