菜鸟求助,mahout训练出来的分类模型如何用来分类数据

Pory 2014-11-06 08:05:52
已经通过mahout中trainlogistic训练出来模型了data.model,想问下如何使用这个模型来分类数据,网上很多使用runlogistic函数的都只是评估模型,我现在要的是使用这个模型,求大神指点下。
...全文
969 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dencin1989 2017-06-28
  • 打赏
  • 举报
回复
楼主,我也碰到和你一样的问题,训练出来的模型 不知道怎么使用。看了官方文档,也只介绍了训练 和 测试。
qq_36713060 2017-06-21
  • 打赏
  • 举报
回复
请问楼主知道如何使用模型进行分类了吗
Pory 2014-11-13
  • 打赏
  • 举报
回复
引用 6 楼 baifanwudi 的回复:
我压根没看你懂你到底要做什么。 tranlogistic训练出的model,mahout喜欢把输出文件弄成序列化,以方便第二次读入。 比如这篇文章 http://www.tuicool.com/articles/FbQ7Vb6 中 ./mahout trainlogistic --input /data/mahout-data/donut.csv --output /data/mahout-output/model2 --target color --categories 2 --predictors x y a b c --types numeric --features 20 --passes 100 --rate 50中的 --output /data/mahout-output/model2就是模型输出文件。 当他进行./mahout runlogistic --input /data/mahout-data/donut-test.csv --model /data/mahout-output/model2 --scores --auc --confusion中利用tranlogistic输出文件。 在输出结果中,scores打印预测值和原始值对比 "target","model-output","log-likelihood" 0,0.009,-0.009241 0,0.000,-0.000481 1,0.985,-0.015038 1,0.991,-0.009407 0,0.001,-0.000883 1,0.974,-0.026000 1,0.823,-0.194875 0,0.041,-0.042015 在runlogistic.java中看它score输出那个行 if (showScores) { output.printf(Locale.ENGLISH, "\"%s\",\"%s\",\"%s\"\n", "target", "model-output", "log-likelihood"); } 。。。 if (showScores) { output.printf(Locale.ENGLISH, "%d,%.3f,%.6f\n", target, score, lr.logLikelihood(target, v)); } 如果你只要用model评分结果,只要改写下output只打印出score就行了。target表示数据test原始值,score表示你利用模型评分出来的。 runlogstic.java开头有 LogisticModelParameters lmp = LogisticModelParameters.loadFrom(new File(modelFile)); 这个就是导入你利用ranlogistic的model。 ===================================================================== 如果你想怎么donut.csv中x,y,a,b,为什么选这些因素, 因为他测试模型利用x y a b c预测color因素的。 这个需要你自己建立筛选因子,来圈定预测变量因素。那个比方判断苹果是否难吃标准,是否烂了这个因素,可以当做评判标准,烂了肯定不好吃。但是苹果大小这个因素,肯定不能当判断标准,不是苹果小就难吃了。 这就意味着,判断苹果好吃,需要有特定因素。 如果你想圈定特定因素,需要百度 筛选因子评分模型。 ======================================== mahout只能根据你已经筛选后的因子,已经收集的变量值,评估预测变量。 也就是trainlogistic建立模型, runlogistic评估模型(其实已经包含评估分数,已经输出了)。 ========================================= mahout下逻辑回归没怎么用过,再问就不懂了。
多谢了,讲的已经够清楚了。
小白鸽 2014-11-10
  • 打赏
  • 举报
回复
我压根没看你懂你到底要做什么。 tranlogistic训练出的model,mahout喜欢把输出文件弄成序列化,以方便第二次读入。 比如这篇文章 http://www.tuicool.com/articles/FbQ7Vb6 中 ./mahout trainlogistic --input /data/mahout-data/donut.csv --output /data/mahout-output/model2 --target color --categories 2 --predictors x y a b c --types numeric --features 20 --passes 100 --rate 50中的 --output /data/mahout-output/model2就是模型输出文件。 当他进行./mahout runlogistic --input /data/mahout-data/donut-test.csv --model /data/mahout-output/model2 --scores --auc --confusion中利用tranlogistic输出文件。 在输出结果中,scores打印预测值和原始值对比 "target","model-output","log-likelihood" 0,0.009,-0.009241 0,0.000,-0.000481 1,0.985,-0.015038 1,0.991,-0.009407 0,0.001,-0.000883 1,0.974,-0.026000 1,0.823,-0.194875 0,0.041,-0.042015 在runlogistic.java中看它score输出那个行 if (showScores) { output.printf(Locale.ENGLISH, "\"%s\",\"%s\",\"%s\"\n", "target", "model-output", "log-likelihood"); } 。。。 if (showScores) { output.printf(Locale.ENGLISH, "%d,%.3f,%.6f\n", target, score, lr.logLikelihood(target, v)); } 如果你只要用model评分结果,只要改写下output只打印出score就行了。target表示数据test原始值,score表示你利用模型评分出来的。 runlogstic.java开头有 LogisticModelParameters lmp = LogisticModelParameters.loadFrom(new File(modelFile)); 这个就是导入你利用ranlogistic的model。 ===================================================================== 如果你想怎么donut.csv中x,y,a,b,为什么选这些因素, 因为他测试模型利用x y a b c预测color因素的。 这个需要你自己建立筛选因子,来圈定预测变量因素。那个比方判断苹果是否难吃标准,是否烂了这个因素,可以当做评判标准,烂了肯定不好吃。但是苹果大小这个因素,肯定不能当判断标准,不是苹果小就难吃了。 这就意味着,判断苹果好吃,需要有特定因素。 如果你想圈定特定因素,需要百度 筛选因子评分模型。 ======================================== mahout只能根据你已经筛选后的因子,已经收集的变量值,评估预测变量。 也就是trainlogistic建立模型, runlogistic评估模型(其实已经包含评估分数,已经输出了)。 ========================================= mahout下逻辑回归没怎么用过,再问就不懂了。
Pory 2014-11-09
  • 打赏
  • 举报
回复
引用 4 楼 baifanwudi 的回复:
mahout下的逻辑回归只能自己定义好目标向量训练出 评分函数。 如果自定义定义目标变量,这需要因子筛选方法。。 这需要你自己建立2个训练集。 两个训练集是对立的比如好坏,自己定义一个因素,判断这个因子大小是否影响这两个对立集。 如果有影响,才可以把这个因素放入目标变量。 逻辑回归只是把目标向量训练成评分函数。
你好,能不能麻烦你再说详细点呢?而且的出来的这个model里面是什么呢?是逻辑回归函数吗?用notepad++打开都是乱码的。
小白鸽 2014-11-07
  • 打赏
  • 举报
回复
mahout下的逻辑回归只能自己定义好目标向量训练出 评分函数。 如果自定义定义目标变量,这需要因子筛选方法。。 这需要你自己建立2个训练集。 两个训练集是对立的比如好坏,自己定义一个因素,判断这个因子大小是否影响这两个对立集。 如果有影响,才可以把这个因素放入目标变量。 逻辑回归只是把目标向量训练成评分函数。
Pory 2014-11-06
  • 打赏
  • 举报
回复
引用 2 楼 baifanwudi 的回复:
http://www.tuicool.com/articles/FbQ7Vb6 有没有参考价值donut.csv原数据集,donut-test.csv验证数据集 都能在mahout 下examples/src/resources找到
resources下面的数据donut.csv是原始数据集,donut-test.csv验证数据集这两个都是目标变量已经给出了的,我要的就是目标变量没有,然后通过model来求得目标变量,resources下面还有一个test_data.csv这个数据不知道是干什么的,感觉不像是用来生产用的数据。
小白鸽 2014-11-06
  • 打赏
  • 举报
回复
http://www.tuicool.com/articles/FbQ7Vb6 有没有参考价值donut.csv原数据集,donut-test.csv验证数据集 都能在mahout 下examples/src/resources找到
小白鸽 2014-11-06
  • 打赏
  • 举报
回复
trainlogistic,没弄过。 找了下这个类。 我看下mahout下代码,是逻辑回归? 上面说明--“Train a logistic regression for the examples from Chapter 13 of Mahout in Action” 你可以看下mahout下面的org.apache.mahout.classifier.sgd这个包 mahout自带的example里面sgd也有这个说明吧。

20,811

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧