亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

SQL腳本實現算法模型的訓練,預測

標簽:
大數據

前言

搜索团队正好需要计算一些词汇的相似性,这个用Word2Vec是很方便的。于是我立马安排算法团队帮个忙弄下。但回头想想,因为这么点事,打断了算法手头的工作,这简直不能忍。

由于我司内部已经在使用基于StreamingPro的Skone平台,通过对SQL做enhance,已经能实现类似hive的脚本引擎了。如果上面的word2vec能直接也用类似sql的语言完成,那开发只要打开web,写几条SQL就自己完成了。

这个时候就给自己定了个目标:简单的算法,研发可以通过这个feature自己完成,尽可能减少对正在做攻关的算法团队的打搅。

使用演示

详细实现代码参看xql-dsl 分支。首先我们需要启动StreamingPro作为一个sql server ,

csv内容如下:

body
a b c
a d m
j d c
a b c
b b c

这个csv文件被映射为表名ct。只有一个字段body。现在我们需要对body字段进行切分,这个也可以通过sql来完成:

select split(body," ") as words from ct as new_ct;

新表叫new_ct,现在,可以开始训练了,把new_ct喂给word2vec即可:

train new_ct as word2vec.`/tmp/w2v_model` where inputCol="words";

word2vec表示算法名, /tmp/w2v_model 则表示把训练好的模型放在哪。where 后面是模型参数。

最后,我们注册一个sql函数:

register word2vec.`/tmp/w2v_model` as w2v_predict;

其中w2v_predict是自定义函数名。这样,我们在sql里就可以用这个函数了。我们来用一把:

select words[0] as w, w2v_predict(words[0]) as v from new_ct as result;

给一个词,就可以拿到这个词的向量了。

我们把它保存成json格式作为结果:

save result as csv.`/tmp/result`;



结果是这样的:

webp

[email protected]

最后完整的脚本如下:

load csv.`/tmp/test.csv` options header="True" as ct;
select split(body," ") as words from ct as new_ct;
train new_ct as word2vec.`/tmp/w2v_model` where inputCol="words";
register word2vec.`/tmp/w2v_model` as w2v_predict;
select words[0] as w, w2v_predict(words[0]) as v from new_ct as result;
save overwrite result as json.`/tmp/result`;

大家可以用postman测试:


webp

[email protected]

支持算法(不断更新)

总结

通过将机器学习算法SQL脚本化,很好的衔接了数据处理和训练,预测。同时服务化很好的解决了环境依赖问题。当然终究是没法取代写代码,但是简单的任务就可以用简单的方式解决了。



作者:祝威廉
链接:https://www.jianshu.com/p/70a8febdaf64


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
軟件工程師
手記
粉絲
47
獲贊與收藏
152

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消