⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myclassifier.java

📁 Java语言实现的支持向量机的源码。对研究人工智能的朋友有用。
💻 JAVA
字号:
package util;

import weka.classifiers.Classifier;
import weka.classifiers.Evaluation;
import weka.core.Instance;
import weka.core.Instances;

public class MyClassifier
{
	private Classifier my_classifier; //分类器

	//构造函数. 初始化选择分类算法
	public MyClassifier(Instances data, Classifier specific_classifier)
			throws Exception
	{
		my_classifier=specific_classifier;
		my_classifier.buildClassifier(data);
	}

	//返回一个分类器对象
	public Classifier getClassifier()
	{
		return my_classifier;
	}

	public MyClassifier getC() throws Exception
	{
		return (MyClassifier) this.clone();
	}

	// 用测试集test对分类器进行测试,返回其分类的正确率
	public double getAccuracy(Instances test) throws Exception
	{
		Evaluation eTest = new Evaluation(test);
		eTest.evaluateModel(my_classifier, test);
		double correct = eTest.correct(); //正确分类的个数
		double acc = 100 * correct / test.numInstances(); // 正确率
		return acc;
	}

	//取得对一个样本in进行分类的置信度,即概率较大的那一类别的概率
	public double getConfidence(Instance in) throws Exception
	{
		double[] fDistribution = my_classifier.distributionForInstance(in);
		int indexOfMax = getMax_ofindex(fDistribution); //概率较大者的下标
		return fDistribution[indexOfMax];
	}

	//整一个样本集的置信度
	public double getConfidence(Instances in) throws Exception
	{
		double t = 0.0;
		for (int i = 0; i < in.numInstances(); i++)
		{
			double[] fDistribution = my_classifier.distributionForInstance(in
					.instance(i));
			int indexOfMax = getMax_ofindex(fDistribution); //概率较大者的下标
			t += fDistribution[indexOfMax];
		}
		return t / in.numInstances();
	}

	public double getConfidencePart(Instances in,double p)throws Exception
	{
		double t=0.0;
		int n=in.numInstances();
		double[] conf=new double[n];
		
		for(int i=0;i<n;i++)
		{
			double[] fDistribution=my_classifier.distributionForInstance(in.instance(i));
			int indexOfMax=getMax_ofindex(fDistribution);
			conf[i]=fDistribution[indexOfMax];
		}

		conf=MySort.increSort(conf);
		int index=(int)p*n;
		
		for(int i=0;i<index;i++)
		{
			t+=conf[i];
		}
		
		return t/index;
	}
	//返回in被分类的类别标签(类别编号)
	public double classifyInstance(Instance in) throws Exception
	{
		return my_classifier.classifyInstance(in);
	}

	//找最大者的下标
	private int getMax_ofindex(double[] d)
	{
		int max = 0;
		for (int i = 0; i < d.length; i++)
			if (d[max] < d[i])
				max = i;
		return max;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -