本文是一次手把手的使用jupter跑机器学习的教程,训练出来的结果不保证可用。环境为jupter,可以跳过数据准备部分直接看Python脚本。采用wifi数据,选择2个特征,使用逻辑回归进行训练。
uid2wifi 评分
uid2wifi模型训练
基础数据为用户使用wifi的数据,训练出来的最后得分为用户和该wifi的紧密度,采取的特征为用户使用对应wifi的频率。
数据准备
下载hive中打好分数的数据,prepare_data -i tmp.uid2wifi_feature -o . --merge true -db bi
。 tmp.uid2wifi_feature数据取10天使用频率32周的flag认为1,只使用过一次的为0.总共5个特征,分别是hour_count,ten_days_count,night_count,daytime_count,weekend_count
。训练结果5个特征的没有2个特征的效果好,2个最终采取2个特征hour_count,ten_days_count
。
抽取训练数据
|
|
python的模型训练脚本
|
|
uid2wifi 模型测试
数据准备
随机抽取1000条数据。prepare_data -i tmp.uid2wifi_feature -o . --merge true -db bi
,
python的测试脚本
|
|
特征权重(array([[ 0.94491135, 2.06726915]]), array([-14.6439925]))。
对应的公式 y=0.94491135*hour_count + 2.06726915*ten_days_count - -14.6439925
对应的得分为 score=(1/( 1 + Math.pow(Math.E,(-1*y))))
。公式比较简单,直接写个方法,比到处pml文件更加方便。
生成pml文件
- 安装依赖包:
pip install sklearn2pmml -t /notebook/shared/extra/
- 下载把二进制文件转换为pml文件的工具:git clone https://github.com/jpmml/jpmml-sklearn.git
- 编译jpmml-sklearn:mvn clean install -D skipTests
- 使用python脚本输出二进制文件
|
|
- 把二进制文件转换成Pml文件.
java -jar target/jpmml-sklearn-executable-1.5-SNAPSHOT.jar --pkl-input ~/uid-wifi-score.pkl.z --pmml-output uid-wifi-score.pmml
大功告成