我在机器学习项目中尝试使用KDDCup 99数据。我决定使用Spark MLLib,并首先尝试使用随机森林。我参考了这里的随机森林分析示例。
https://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/mllib/JavaRandomForestClassificationExample.javahttps://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/mllib/JavaRandomForestRegressionExample.java
他们使用的数据格式如下所示。
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
KDDCup数据的格式如下所示。
0,tcp,http,SF,215,45076,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0.00,0.00,0.00,0.00,1.00,0.00,0.00,0,0,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,normal.
问题1:请问有人能指导我一下Spark示例中使用的数据的因素是什么吗?我明白第一列0
表示标签(真/假),数据是用空格分隔的。但我不明白:
分隔的数字对是什么意思。
问题2:我也不确定如何将我的KDDCup 99数据字符串转换为随机森林的数值。Spark MLLib中有内置的函数可以做到这一点吗?
问题3:任何使用真实世界数据的Spark MLLib示例都将非常有帮助。
谢谢
回答:
最终,我找到了将KDDCup 99数据集导入Spark的方法。我通过读取属性文件将字符串数据向量化为整数索引。同时,我将标签放在记录的开头。我还使用Python代码将最终的KDDCup数据转换为Libsvm数据格式。我处理整个过程的代码可以在下面的GitHub存储库中找到。https://github.com/keyurgolani/RandomForestSpark.git
感谢Addy的贡献,我才能够解决这些问题。