已经通过mahout中trainlogistic训练出来模型了data.model,想问下如何使用这个模型来分类数据,网上很多使用runlogistic函数的都只是评估模型,我现在要的是使用这个模型,
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也有这个说明吧。
resources下面的数据donut.csv是原始数据集,donut-test.csv验证数据集这两个都是目标变量已经给出了的,我要的就是目标变量没有,然后通过model来求得目标变量,resources下面还有一个test_data.csv这个数据不知道是干什么的,感觉不像是用来生产用的数据。
mahout下的逻辑回归只能自己定义好目标向量训练出 评分函数。 如果自定义定义目标变量,这需要因子筛选方法。。 这需要你自己建立2个训练集。 两个训练集是对立的比如好坏,自己定义一个因素,判断这个因子大小是否影响这两个对立集。 如果有影响,才可以把这个因素放入目标变量。 逻辑回归只是把目标向量训练成评分函数。
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评估模型(其实已经包含评估分数,已经输出了)。
|