Alink在线学习(Online Learning)之Java示例【四】

上一篇我们训练并保存了特征工程处理模型,我们这里需要使用特征工程处理模型,将批式原始训练数据转化为批式向量训练数据;将流式原始训练数据转化为流式向量训练数据;将流式原始预测数据转化为流式向量预测数据。

批式原始训练数据为:

CsvSourceBatchOp trainBatchData = new CsvSourceBatchOp()
	.setFilePath("http://alink-release.oss-cn-beijing.aliyuncs.com/data-files/avazu-small.csv")
	.setSchemaStr(schemaStr);

我们可以通过定义一个流式数据源,并按1:1的比例实时切分数据,从而得到流式原始训练数据、流式原始预测数据。

// prepare stream train data
CsvSourceStreamOp data = new CsvSourceStreamOp()
	.setFilePath("http://alink-release.oss-cn-beijing.aliyuncs.com/data-files/avazu-ctr-train-8M.csv")
	.setSchemaStr(schemaStr);

// split stream to train and eval data
SplitStreamOp spliter = new SplitStreamOp().setFraction(0.5).linkFrom(data);
StreamOperator train_stream_data = spliter;
StreamOperator test_stream_data = spliter.getSideOutput(0);

 

通过PipelineModel.load()方法,可以载入前面保存的特征工程处理模型。

// load pipeline model
PipelineModel feature_pipelineModel = PipelineModel.load(FEATURE_PIPELINE_MODEL_FILE);

 

Alink的PipelineModel既能预测批式数据,也可以预测流式数据,而且调用方式系统,使用模型实例的transform方法即可。

批式向量训练数据可以通过如下代码得到:

feature_pipelineModel.transform(trainBatchData)

流式向量训练数据可以通过如下代码得到:

feature_pipelineModel.transform(train_stream_data)

流式向量预测数据可以通过如下代码得到:

feature_pipelineModel.transform(test_stream_data)

 

进一步,我们通过批式向量训练数据可以训练出一个线性模型作为后面在线学习FTRL算法的初始模型。如下面脚本所示,首先定义逻辑回归分类器lr,然后将批式向量训练数据“连接”到此分类器,输出结果便为逻辑回归模型。

// train initial batch model
LogisticRegressionTrainBatchOp lr = new LogisticRegressionTrainBatchOp()
	.setVectorCol(vecColName)
	.setLabelCol(labelColName)
	.setWithIntercept(true)
	.setMaxIter(10);

BatchOperator initModel = feature_pipelineModel.transform(trainBatchData).link(lr);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值