我有下面的模型,我想使用SparkML来估计。
val formula = new RFormula()
.setFormula("vtplus15predict~ vhisttplus15 + vhistt + vt + vtminus15 + Time + Length + Day")
.setFeaturesCol("features")
.setLabelCol("label")
formula.fit(data).transform(data)
注:特征为向量,标签为双精度
root
|-- features: vector (nullable = true)
|-- label: double (nullable = false)
我将我的MLP估计器定义如下:
val layers = Array[Int](6, 5, 8, 1) //I suspect this is where it went wrong
val mlp = new MultilayerPerceptronClassifier()
.setLayers(layers)
.setBlockSize(128)
.setSeed(1234L)
.setMaxIter(100)
// train the model
val model = mlp.fit(train)
不幸的是,我出现了以下错误:
使用Spark的默认log4j配置文件:org/apache/Spark/log4j defaults。属性
线程“main”组织中出现异常。阿帕奇。火花SparkException:作业因阶段失败而中止:阶段3.0中的任务0失败1次,最近的失败:阶段3.0中的任务0.0丢失(TID 3,localhost,executor driver):java。lang.ArrayIndexOutOfBoundsException:11 at org。阿帕奇。火花ml.分类。LabelConverter$。编码标签点(MultilayerPerceptronClassifier.scala:121)位于org。阿帕奇。火花ml.分类。多层概念分类器$$anonfun$3。在org上应用(MultilayerPerceptronClassifier.scala:245)。阿帕奇。火花ml.分类。多层概念分类器$$anonfun$3。在scala上应用(MultilayerPerceptronClassifier.scala:245)。收集迭代器$$anon$11。接下来(迭代器。scala:363)在scala。收集迭代器$GroupEditor。在scala上进行破坏性处理(迭代器。scala:935)。收集迭代器$GroupEditor。go(迭代器。scala:950)。。。
解决方案是首先找到允许逃离ArrayIndexOutBound的局部最优,然后使用蛮力搜索找到全局最优。Shaido建议找到n
例如,val层=Array[Int](6,5,8, n)。这假设特征向量的长度为6。-Shaido
所以让n
是一个大整数(n=100
)然后手动使用蛮力搜索得出一个好的解决方案(n=50
然后尝试n=32
-错误,n=35
-完美)。
谢多的功劳。
重新排列数据集,因为错误显示您的数组少于功能集中的数组,或者您的数据集具有提示错误的空集。我在从事MLP项目时遇到了这种错误。希望我的回答能帮助你。谢谢你伸出援手
org.apache.spark.ml.classification.LabelConverterlassifier.scala:121
这告诉我们数组超出了多层概念分类器(multilayerperceptronsider)的界限。scala文件,让我们看看那里的代码:
def encodeLabeledPoint(labeledPoint: LabeledPoint, labelCount: Int): (Vector, Vector) = {
val output = Array.fill(labelCount)(0.0)
output(labeledPoint.label.toInt) = 1.0
(labeledPoint.features, Vectors.dense(output))
}
它对数据集中的标签执行一次性编码。ArrayIndexOutOfBoundsException
发生是因为输出
数组太短。
通过返回代码,可以发现标签计数与层数组中的输出节点数相同。换句话说,输出节点的数量应该与类的数量相同。查看MLP的文档,有以下几行:
输出层中节点N的数量对应于类的数量。
因此,解决办法是:
>
重构数据以使其具有与网络输出节点相同数量的类。
注意:最终输出层应该始终是2个或更多,而不是1个,因为每个类应该有一个节点,单个类的问题没有意义。
我正在尝试从kafka中的主题将数据插入postgres数据库。我正在使用以下命令加载 sink-quick start-MySQL . properties如下 我得到的错误是 Postgres jar文件已经在文件夹中。有人能提出建议吗?
机器学习库也称为“SparkML”或“MLLib”,由常用的学习算法组成,包括分类,回归,聚类和协同过滤。 为什么要学习SparkML for Agile? Spark正在成为构建机器学习算法和应用程序的事实平台。 开发人员使用Spark在Spark框架中以可扩展和简洁的方式实现机器算法。 我们将通过该框架学习机器学习,其实用程序和算法的概念。 敏捷总是选择一个框架,它可以提供简短快速的结果。 M
我对Kafka connect很陌生。我想把我的信息从Kafka主题推到弹性搜索。在阅读了可用的文档之后,我从发行版tar下载并编译了弹性搜索接收器。拉链(https://github.com/confluentinc/kafka-connect-elasticsearch/releases) 我添加了弹性搜索属性文件,并将上述jar包含在类路径中。当我在独立模式下运行kafka connect时
尝试运行水槽作业时,我收到下面给出的错误。我正在云时代设置上运行它。 Kafka是来源 Morphline用作拦截器,从中创建avro记录 接收器为HDFS 完全相同的文件(morphline,avro schema等。水槽配置)。但是在另一个环境中,它会抛出这个错误。 我能够在水槽上找到相关代码:https://github.com/apache/flume/blob/trunk/flume-n
我对这两种方法的不同感到困惑,但我肯定我做错了什么。 下面我有一个工作示例和一个非工作示例。在工作示例中,我将变量测试器指定为“映射”,在非工作示例中,我尝试将其指定为映射。在第二个示例中,错误如下所示: 我没有看到tester变量的类型与myMap变量的类型之间的联系。 虽然Eran发布了对我的原始版本的解释,但它表明我应该使用收藏家。托马普而不是收藏家。groupBy,因为我的目标是为从“pr
我正在尝试设置Kafka Connect接收器,以便使用Datastax连接器将主题中的数据收集到Cassandra表中:https://downloads.Datastax.com/#AKC 运行一个直接在代理上运行的独立worker,运行Kafka 0.10.2.2-1: 但我有以下错误: 卡桑德拉或Kafka方面没有额外的错误。我在cassandra节点上看到活动连接,但没有任何东西到达密钥