场景:一般分类预测直接输出类别标记,不过有些情况需要输出对应类别的概率值,比如判定为正例的概率是0.6,而判定为负例的概率是0.3,那自然标记为正例,这里就是看ML用classDistribution输出各类别的概率值。参考代码如下:

/*** This file is part of the Java Machine Learning Library* * The Java Machine Learning Library is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation; either version 2 of the License, or* (at your option) any later version.* * The Java Machine Learning Library is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the* GNU General Public License for more details.* * You should have received a copy of the GNU General Public License* along with the Java Machine Learning Library; if not, write to the Free Software* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA* * Copyright (c) 2006-2012, Thomas Abeel* * Project: http://java-ml.sourceforge.net/* */
package com.gddx;import java.io.File;
import java.util.Map;
import java.util.Random;import be.abeel.util.Pair;
import net.sf.javaml.classification.Classifier;
import net.sf.javaml.classification.tree.RandomForest;
import net.sf.javaml.core.Dataset;
import net.sf.javaml.core.DenseInstance;
import net.sf.javaml.core.Instance;
import net.sf.javaml.sampling.Sampling;
import net.sf.javaml.tools.data.FileHandler;/*** Tutorial for the random forest classifier.* * @author Thomas Abeel* */
public class TutorialRandomForest {/*** Shows the default usage of the random forest algorithm.*/public static void main(String[] args) throws Exception {/* Load a data set */Dataset ori_data = FileHandler.loadDataset(new File("D:\\tmp\\javaml-0.1.7-src\\UCI-small\\iris\\iris.data"), 4, ",");Sampling s = Sampling.SubSampling;Pair<Dataset, Dataset> sam_data = s.sample(ori_data, (int) (ori_data.size() * 0.8));/** Contruct a RF classifier that uses 5 neighbors to make a decision.*/Classifier rf = new RandomForest(50, false, 3, new Random());rf.buildClassifier(sam_data.x());//80%样本训练/* 输出预测的类别概率 */for(Instance inst:sam_data.y()){  //20%样本验证Map<Object,Double> mprob=rf.classDistribution(inst);//输出类别的概率,[0,1]System.out.println(mprob);       }}}

执行结果:

{Iris-virginica=0.0, Iris-setosa=1.0000000000000004, Iris-versicolor=0.0}
{Iris-virginica=0.0, Iris-setosa=1.0000000000000004, Iris-versicolor=0.0}
{Iris-virginica=0.0, Iris-setosa=1.0000000000000004, Iris-versicolor=0.0}
{Iris-virginica=0.0, Iris-setosa=1.0000000000000004, Iris-versicolor=0.0}
{Iris-virginica=0.0, Iris-setosa=1.0000000000000004, Iris-versicolor=0.0}
{Iris-virginica=0.0, Iris-setosa=1.0000000000000004, Iris-versicolor=0.0}
{Iris-virginica=0.0, Iris-setosa=1.0000000000000004, Iris-versicolor=0.0}
{Iris-virginica=0.0, Iris-setosa=1.0000000000000004, Iris-versicolor=0.0}
{Iris-virginica=0.0, Iris-setosa=1.0000000000000004, Iris-versicolor=0.0}
{Iris-virginica=0.0, Iris-setosa=1.0000000000000004, Iris-versicolor=0.0}
{Iris-virginica=0.0, Iris-setosa=0.7400000000000003, Iris-versicolor=0.25999999999999995}
{Iris-virginica=0.0, Iris-setosa=1.0000000000000004, Iris-versicolor=0.0}
{Iris-virginica=0.0, Iris-setosa=0.0, Iris-versicolor=1.0000000000000004}
{Iris-virginica=0.0, Iris-setosa=0.0, Iris-versicolor=1.0000000000000004}
{Iris-virginica=0.0, Iris-setosa=0.0, Iris-versicolor=1.0000000000000004}
{Iris-virginica=0.08, Iris-setosa=0.0, Iris-versicolor=0.9200000000000005}
{Iris-virginica=0.46000000000000013, Iris-setosa=0.0, Iris-versicolor=0.5400000000000001}
{Iris-virginica=0.0, Iris-setosa=0.0, Iris-versicolor=1.0000000000000004}
{Iris-virginica=0.0, Iris-setosa=0.0, Iris-versicolor=1.0000000000000004}
{Iris-virginica=0.0, Iris-setosa=0.0, Iris-versicolor=1.0000000000000004}
{Iris-virginica=0.0, Iris-setosa=0.0, Iris-versicolor=1.0000000000000004}
{Iris-virginica=1.0000000000000004, Iris-setosa=0.0, Iris-versicolor=0.0}
{Iris-virginica=1.0000000000000004, Iris-setosa=0.0, Iris-versicolor=0.0}
{Iris-virginica=0.32, Iris-setosa=0.0, Iris-versicolor=0.6800000000000003}
{Iris-virginica=1.0000000000000004, Iris-setosa=0.0, Iris-versicolor=0.0}
{Iris-virginica=1.0000000000000004, Iris-setosa=0.0, Iris-versicolor=0.0}
{Iris-virginica=1.0000000000000004, Iris-setosa=0.0, Iris-versicolor=0.0}
{Iris-virginica=1.0000000000000004, Iris-setosa=0.0, Iris-versicolor=0.0}
{Iris-virginica=1.0000000000000004, Iris-setosa=0.0, Iris-versicolor=0.0}
{Iris-virginica=0.9000000000000005, Iris-setosa=0.0, Iris-versicolor=0.1}

Java机器学习库ML之七分类预测输出概率值相关推荐

  1. Java机器学习库ML之六关于模型迭代训练的思考

    我遇到的场景是:样本集有5000万条,接近5个G,那么这样的样本集一次导入训练,我放着一天一夜都没跑出结果,机器性能还特别好,是64位linux有128G内存. 针对这样的情况,我想到的是两种思路: ...

  2. Java机器学习库ML之一Dataset和Instance

    Java机器学习库ML官网:http://java-ml.sourceforge.net/ 对于一个机器学习库来说,最基础就是数据处理能力,ml库给了dataset和instance两个类,datas ...

  3. Java机器学习库ML之四模型训练和预测示例

    基于ML库机器学习的步骤: 1)样本数据导入: 2)样本数据特征抽取和特征值处理(结合模型需要归一化或离散化):这里本文没有做处理,特征选择和特征值处理本身就很大: 3)样本集划分训练集和验证集: 4 ...

  4. Java机器学习库ML之五样本不均衡

    样本不均衡的问题是指训练集中类别之间的样本数据量比例失衡.有研究表明,部分学习任务,在类别出现1∶35比例时就会使某些分类学习方法无效,甚至1∶10比例也会.样本不均衡导致的问题有: 1)少数类所包含 ...

  5. Java机器学习库ML之二Feature Selection(特征选择)

    机器学习中训练模型的前提必备工作就是特征选择,起到降维和降低计算开销的目的,当然在获取尽可能小的特征子集的同时,应不显著降低分类精度.不影响类分布.保持特征子集的稳定适应性强等. ML库提供了特征选择 ...

  6. Java机器学习库ML之八关于模型迭代训练的试验

    前文提到因为数据集过大,只能拆分然后依次迭代训练,实验发现对结果有所偏差,参考代码如下: package com.vip;import java.io.File; import java.util.M ...

  7. Java机器学习库ML之十一线性SVM

    线性SVM的原理就不多说了,最强大的就是libsvm库(ml库也是用这个),参考:http://blog.csdn.net/fjssharpsword/article/details/53883340 ...

  8. Java机器学习库ML之十模型选择准则AIC和BIC

    学习任务所建立的模型多数是参数估计并采用似然函数作为目标函数,当训练数据足够多时,可以不断提高模型精度,但是以提高模型复杂度为代价的,同时也带来一个机器学习中非常普遍的问题--过拟合.模型选择问题是在 ...

  9. Java机器学习库ML之九交叉验证法(Cross Validation)

    交叉验证(Cross Validation,CV)是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分 ...

最新文章

  1. PTA-1011——World Cup Betting
  2. VMware虚拟机的联网(图)
  3. 温故js系列(7)-数组去重由慢到快由繁到简
  4. ug链轮设计软件_同为三维设计软件,solidworks与ug有何不同
  5. 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 ne
  6. Win11如何设置滚动条 Win11滚动条设置教程
  7. 《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——4.7 文本编辑工具vi...
  8. Android基础-Content Provider
  9. ASP.NET 文件后缀名详解
  10. 详解Unity中的射线与射线检测
  11. java se官网_Java下载|Java SE Development Kit官方下载-太平洋下载中心
  12. linux SysV IPC实现
  13. 计算机打表格图,怎么把电脑整个表格截屏,表格太长,还有部(怎么把excle表格截图)...
  14. Tableau实战 Tableau官网各版块访问情况(四)各网址情况分析
  15. 涨分神器-基于PPYOLOE的切图和拼图解决方案
  16. 阿里天池数据分析入门 利用Pandas分析数据
  17. SK海力士加入日韩美三国财团 收购东芝芯片业务
  18. Luajit作者给的Lua源码的阅读顺序
  19. 实验一-Hadoop的安装与使用
  20. 预装Win 8.1 Pro环境下安装Win 7双系统

热门文章

  1. ddl是什么意思网络语_DDL语句是啥
  2. isdigit函数python检测数字个数_Python isdecimal isdigit isnumeric区别
  3. 函数名的应用(第一对象) 闭包 装饰器
  4. (实际开发大数据分析系统)网络爬虫获取数据与销售数据分析系统
  5. 网站添加到IIS和附件进程调试(新手使用篇)
  6. 【Android 界面效果9】9patch图片
  7. 针对Chrome的css的hack写法
  8. Power-- 1.charge Fuel gauge
  9. Android 7.0 init.rc的一点改变
  10. AA065VD数据线连接错位的现象及分析总结