使用机器学习和大数据预测心脏病
咨询电话/微信:13061694649
设计模型生成和存储层如上图所示,原始文件要么被HDFS获取,要么被程序导入到HDFS。该文件或数据也可以通过Kafka的topics接收和使用spark streaming读取。对于本文和在GitHub上的示例代码的例子,我假设原文件驻留在HDFS。 这些文件通过用Java(也可以是python或scala )编写的Spark程序读取。 这些文件包含必须被转换为模型所需要的格式的数据。该模型需要的全是数字。?一些为空或没有值的数据点会被一个大的值,如“99”,取代。这种取代没有特定的意义,它只帮助我们通过数据的非空校验。同样的,最后的“num”参数基于用户是否有心脏病转换为数字“1”或“0”。因此在最后的“num”字段中,大于“1”的任何值会被转换为“1”,这意味着心脏病的存在。 数据文件现在被读到RDD去了。 对于这个数据集,我使用了朴素贝叶斯算法(这个算法在垃圾邮件过滤器中被使用)。利用机器学习库Spark (mllib),算法现在在被数据集中的数据训练。请注意:决策树算法在这个例子中可能也能给出很好的结果。 算法训练后,模型被存储到了hdfs额外的存储空间,用于在将来对测试数据进行预测。 下面是上面描述的行为的一段代码的截取: SparkConfAndCtxBuilder ctxBuilder = new SparkConfAndCtxBuilder(); JavaSparkContext jctx = ctxBuilder.loadSimpleSparkContext("Heart Disease Detection App","local");//读取数据到RDD,数据是逐行分割的字符串格式JavaRDD<String> dsLines = jctx.textFile(trainDataLoc); ? ? ? ?// 使用适配器类解析每个文本行 ? ? ? ?// 现在数据已经被转换成模型需要的格式了JavaRDD<LabeledPoint> _modelTrainData = dsLines.map(new DataToModelAdapterMapper()); ? ?//我们需要的模型在被数据训练 ? ? ? ?//你可以替代下面的代码,来尝试使用决策树模型,并比较返回数据的精度NaiveBayesModel _model = NaiveBayes.train(_modelTrainData.rdd()); _model.save(jctx.sc(),modelStorageLoc); ctxBuilder.closeCtx(); (编辑:淮安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |