我正在尝试通过 Mahout 分类器示例(donut.csv)。但我发现,简单地更改标题行中某些列的名称,并在分类器命令中更改相应的预测变量名称,会导致不同的模型。这根本不符合逻辑。
首先,您通过以下方式获得 donut.csv
mahout cat donut.csv |tail -40 > donut0.csv
(“尾巴”是因为 mahout cat 产生了一些初始信息行)
然后我们使用以下命令来训练 donut0.csv :(正如“Mahout in action”一书中所建议的那样)
mahout trainlogistic --input donut0.csv \
--output ./model \
--target color --categories 2 \
--predictors x y a b c --types numeric \
--features 20 --passes 100 --rate 50
它给出了以下输出
color ~ 7.068*Intercept Term + 0.581*a + -1.369*b + -25.059*c + 0.581*x + 2.319*y
Intercept Term 7.06759
a 0.58123
b -1.36893
c -25.05945
x 0.58123
y 2.31879
0.000000000 0.000000000 0.000000000 0.000000000 0.000000000 -1.368933989 0.000000000 0.000000000 0.000000000 0.000000000 0.581234210 0.000000000 0.000000000 7.067587159 0.000000000 0.000000000 0.000000000 2.318786209 0.000000000 -25.059452292
12/04/27 09:29:21 INFO driver.MahoutDriver: Program took 789 ms (Minutes: 0.01315)
但如果只是将标题中的“x”列更改为“xa”,并在命令中更改相应的预测器名称,则输出模型会完全改变。
$ head -3 donut4.csv
xa,y,shape,color,k,k0,xx,xy,yy,a,b,c,bias
0.923307513352484,0.0135197141207755,21,20,4,8,0.852496764213146,0.0124828536260896,0.000182782669907495,0.923406490600458,0.0778750292332978,0.644866125183976,1
0.711011884035543,0.909141522599384,22,20,3,9,0.505537899239772,0.64641042683833,0.826538308114327,1.15415605849213,0.953966686673604,0.46035073663368,1
mahout trainlogistic --input donut4.csv \
--output ./model \
--target color --categories 2 \
--predictors xa y a b c --types numeric \
--features 20 --passes 100 --rate 50
color ~ 6.380*Intercept Term + -1.913*a + -0.577*b + -23.236*c + 2.647*xa + 3.009*y
Intercept Term 6.38017
a -1.91308
b -0.57676
c -23.23552
xa 2.64657
y 3.00925
0.000000000 0.000000000 0.000000000 0.000000000 0.000000000 -0.576759549 0.000000000 0.000000000 2.646572912 0.000000000 -1.913075634 0.000000000 0.000000000 6.380173126 0.000000000 0.000000000 0.000000000 3.009245162 0.000000000 -23.235521029
12/04/27 10:21:10 INFO driver.MahoutDriver: Program took 728 ms (Minutes: 0.012133333333333333)
我还没有验证新模型,也许它也适合数据,但简单地更改名称应该不会影响算法的工作方式。正确的??
谢谢杨