2015-12-18 43 views
0

我正在查看Spark MLLib中決策樹的文檔。這是一行代碼爲什麼Spark MLLib中的決策樹的輸入LibSVM數據格式如下所示?

data = MLUtils.loadLibSVMFile(sc, 'data/mllib/sample_libsvm_data.txt') 

加載輸入數據。當我打開sample_libsv_data.txt文件,其中一條線看起來像:

0 128:51 129:159 130:253 131:159 132:50 155:48 156:238 157:252 158:252 159:252 160:237 182:54 183:227 184:253 185:252 186:239 187:233 188:252 189:57 190:6 208:10 209:60 210:224 211:252 212:253 213:252 214:202 215:84 216:252 217:253 218:122 236:163 237:252 238:252 239:252 240:253 241:252 242:252 243:96 244:189 245:253 246:167 263:51 264:238 265:253 266:253 267:190 268:114 269:253 270:228 271:47 272:79 273:255 274:168 290:48 291:238 292:252 293:252 294:179 295:12 296:75 297:121 298:21 301:253 302:243 303:50 317:38 318:165 319:253 320:233 321:208 322:84 329:253 330:252 331:165 344:7 345:178 346:252 347:240 348:71 349:19 350:28 357:253 358:252 359:195 372:57 373:252 374:252 375:63 385:253 386:252 387:195 400:198 401:253 402:190 413:255 414:253 415:196 427:76 428:246 429:252 430:112 441:253 442:252 443:148 455:85 456:252 457:230 458:25 467:7 468:135 469:253 470:186 471:12 483:85 484:252 485:223 494:7 495:131 496:252 497:225 498:71 511:85 512:252 513:145 521:48 522:165 523:252 524:173 539:86 540:253 541:225 548:114 549:238 550:253 551:162 567:85 568:252 569:249 570:146 571:48 572:29 573:85 574:178 575:225 576:253 577:223 578:167 579:56 595:85 596:252 597:252 598:252 599:229 600:215 601:252 602:252 603:252 604:196 605:130 623:28 624:199 625:252 626:252 627:253 628:252 629:252 630:233 631:145 652:25 653:128 654:252 655:253 656:252 657:141 658:37 

我可以理解,第一個元素是類標籤(0),我知道決策樹算法,但我不明白爲什麼每個功能都像一個元組?我們不應該只有代表功能的數字嗎?這裏128:51作爲特徵值的含義是什麼?

回答

2

128:51作爲特徵值在這裏意味着列128中存在值51。這是在svmlight中首次引入的SVMLight格式,並且適用於表示稀疏向量。所有未按名稱提及的索引都從列表中省略,且這些特徵的值爲0。換句話說,在你的例子中,從1到127的所有列都是0。

注意:上述Spark稀疏矢量中列的索引從0開始。因此,索引爲0的列和0:100是SVMLight格式中的可能條目。