如何使用Libsvm数据集格式(如Mnist)训练朴素贝叶斯模型?

我从这里下载了Mnist数据,其格式如下所示 https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html#mnist

$ head -1 mnist5 153:3 154:18 155:18 156:18 157:126 158:136 159:175 160:26 161:166 162:255 163:247 164:127 177:30 178:36 179:94 180:154 181:170 182:253 183:253 184:253 185:253 186:253 187:225 188:172 189:253 190:242 191:195 192:64 204:49 205:238 206:253 207:253 208:253 209:253 210:253 211:253 212:253 213:253 214:251 215:93 216:82 217:82 218:56 219:39 232:18 233:219 234:253 235:253 236:253 237:253 238:253 239:198 240:182 241:247 242:241 261:80 262:156 263:107 264:253 265:253 266:205 267:11 269:43 270:154 290:14 291:1 292:154 293:253 294:90 320:139 321:253 322:190 323:2 348:11 349:190 350:253 351:70 377:35 378:241 379:225 380:160 381:108 382:1 406:81 407:240 408:253 409:253 410:119 411:25 435:45 436:186 437:253 438:253 439:150 440:27 464:16 465:93 466:252 467:253 468:187 494:249 495:253 496:249 497:64 519:46 520:130 521:183 522:253 523:253 524:207 525:2 545:39 546:148 547:229 548:253 549:253 550:253 551:250 552:182 571:24 572:114 573:221 574:253 575:253 576:253 577:253 578:201 579:78 597:23 598:66 599:213 600:253 601:253 602:253 603:253 604:198 605:81 606:2 623:18 624:171 625:219 626:253 627:253 628:253 629:253 630:195 631:80 632:9 649:55 650:172 651:226 652:253 653:253 654:253 655:253 656:244 657:133 658:11 677:136 678:253 679:253 680:253 681:212 682:135 683:132 684:16

然后我尝试使用R的naiveBayes包,但遇到了错误

naiveBayes公式接口只能处理数据框或数组

以下是我所做的操作:

加载R接口:./bin/sparkR –master “local[2]”

> training <- loadDF(sqlContext, "~/Downloads/mnist", "libsvm")> trainingSparkDataFrame[label:double, features:vector]> head(training)  label                      features1     0 <environment: 0x7fa8ef236630>2     1 <environment: 0x7fa8edc3d708>3     1 <environment: 0x7fa8edc561b8>4     1 <environment: 0x7fa8edc6aa30>5     1 <environment: 0x7fa8edc72aa0>6     0 <environment: 0x7fa8edc79ab0>> model <- naiveBayes(label ~ features, training)Error in naiveBayes.formula(label ~ features, training) :  naiveBayes公式接口只能处理数据框或数组

我猜测这是因为“features”类型是向量,R无法解析它。我做错了什么吗?或者如何在R中处理这种向量类型以正确地获得朴素贝叶斯模型?

非常感谢。


回答:

我想我找到了在构建朴素贝叶斯模型时的问题。我通过library(e1071)导入了R的naiveBayes包

但如果使用R包,我应该将> training SparkDataFrame[label:double, features:vector]转换为R可识别的数据格式,即数组或数据框。

当我切换到Spark内置方法spark.naiveBayes()来构建模型时,模型就成功生成,如下所示:

model <- spark.naiveBayes(training, label ~ features)

因为内置的spark.naiveBayes()SparkDataFrame类型是配套的

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注