答疑

1、查看书中的链接

【问题】
下面截图中,1-1和1-4链接在哪?
image.png

【答复】
按出版社要求,书中无法放链接的HTTP地址,可以访问如下页面查看:

2、预测一条数据从14秒到8毫秒

【问题】
Alink训练出的模型,再去预测为啥这么慢,预测一条数据需要14秒,用sklearn训练的模型预测只需要19毫秒,有大佬知道原因吗?

  1. System.out.println("开始预测");
  2. long start = System.currentTimeMillis();
  3. //定义数据源
  4. BatchOperator<?> data = new MemSourceBatchOp(new String[] {"svision-online.de/mgfi/administrator/components/com_babackup/classes/fx29id1.txt"}, "url");;
  5. //模型效果评估
  6. BatchOperator<?> predict = model.transform(data);
  7. predict.select(new String[] {"url", "pred"}).print();
  8. System.out.println("时间:" + (System.currentTimeMillis() - start));

用户根据反馈,改成LocalPredictor,预测时间 8毫秒

【答复】
你计算的是任务运行的时间。要是使用任务预测的话,你可以多计算一些条,譬如100万,这样可以摊平任务的起停时间;或者使用LocalPredictor测试。
你的场景需要使用LocalPredictor。参见教程1.5.5节 嵌入预测服务系统 ;23.4.2节 嵌入式预测

3、随机森林模型有模型储存方法吗

【问题】
随机森林模型有模型储存方法吗,就是我把训练好的模型保存下来,下次直接拿来用

【答复】
有啊,而且分批式训练保存及Pipeline训练保存两种方式。随机森林模型与其它分类模型的储存方法是一样的,参见教程1.5节简单示例中演示的逻辑回归模型。

4、切换Flink版本的问题

【问题】
代码没动,切换了flink版本就运行不了了,这是bug吗?flink.version 1.10.0没有问题,高于1.10的都运行不了
image.png

【答复】
这是由于没有切换Flink相关的jar包引起的。链接 https://github.com/alibaba/Alink#flink-112-%E7%9A%84-maven-%E4%BE%9D%E8%B5%96 中列举了使用不同的Flink版本所需的算法包情况。可以看到Flink1.9和1.10需要3个jar包,而Flink1.11、1.12和1.23则需要4个jar包。所以从Flink1.9到1.10,只需要修改版本号就行了;但是到1.12修版本号是不够的,还需要再引入jar包。

5、将array数据作为数据源

【问题】
请问下alink可以读取array的数据去建模吗?

【答复】
可以的,参见教程1.5.2节,分别展示了如何使用Java和Python进行转换。特别地,对于Python版教程有专门的章节进行介绍,详见第7.6节 “Python 数组、DataFrame 形式的数据和 Alink 批式数据之间的相互转换”。
Java:

  1. BatchOperator <?> train_set = new MemSourceBatchOp(
  2. new Row[] {
  3. Row.of(2009, 0.5),
  4. Row.of(2010, 9.36),
  5. Row.of(2011, 52.0),
  6. Row.of(2012, 191.0),
  7. Row.of(2013, 350.0),
  8. Row.of(2014, 571.0),
  9. Row.of(2015, 912.0),
  10. Row.of(2016, 1207.0),
  11. Row.of(2017, 1682.0),
  12. },
  13. new String[] {"x", "gmv"}
  14. );

注意:这里使用了Row[]数组,也可以使用Object[][]数组。

Python:

  1. df = pd.DataFrame(
  2. [
  3. [2009, 0.5],
  4. [2010, 9.36],
  5. [2011, 52.0],
  6. [2012, 191.0],
  7. [2013, 350.0],
  8. [2014, 571.0],
  9. [2015, 912.0],
  10. [2016, 1207.0],
  11. [2017, 1682.0]
  12. ]
  13. )
  14. train_set = BatchOperator.fromDataframe(df, schemaStr='x int, gmv double')