如何解决在 pyspark MLlib 决策树分类器中声明特征和目标
我想使用 pyspark.mllib.tree.DecisionTree
训练一个简单的决策树分类器。我已经习惯了这样的典型语法:声明一个模型,然后将一组特征和一个目标(作为单独的对象)显式传递给它的 fit
方法。
然而,从 the examples I have found 来看,pyspark 模型似乎只需要数据集,并且它们以某种方式确定哪些列是特征,哪些列是目标。
我不知道如何告诉 pyspark.mllib.tree.DecisionTree
obect 我的数据框中的某些列是特征,而其中一列是目标。这是我正在尝试做的可复制示例:
# Load breast cancer dataset
from sklearn.datasets import load_breast_cancer
# Save features in X and target in y
X,y = load_breast_cancer()['data'],load_breast_cancer()['target']
# Concatenate X and y into a single pandas dataset
data = pd.concat([pd.DataFrame(X,columns=['col' + str(i) for i in range(30)]),pd.DataFrame(y,columns=['target'])],axis=1)
# Convert pandas DataFrame to pyspark DataFrame
data = spark.createDataFrame(data)
# Import DT model
from pyspark.mllib.tree import DecisionTree
# Declare trained object (how do I tell the model which columns in `data` are features?)
clf = DecisionTree.trainClassifier(data,numClasses=2,categoricalFeaturesInfo={},impurity='gini',maxDepth=5,maxBins=32)
引发以下错误:
遇到错误:数据应该是LabeledPoint的RDD 回溯(最近一次通话):文件 “/usr/lib/spark/python/lib/pyspark.zip/pyspark/mllib/tree.py”,行 217,在trainClassifier中 杂质,maxDepth,maxBins,minInstancesPerNode,minInfoGain)文件“/usr/lib/spark/python/lib/pyspark.zip/pyspark/mllib/tree.py”, 第 142 行,在 _train assert isinstance(first,LabeledPoint),"the data should be RDD of LabeledPoint" AssertionError: the data should be RDD of LabeledPoint
我的问题是:如何将 data
传递给 DecisionTree.trainClassifier
?
我的猜测是 data
应该有一些属性可以帮助模型从目标中分辨出特征。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。