Ejemplo n.º 1
0
		/// <summary> Adds one instance to the end of the set. 
		/// Shallow copies instance before it is added. Increases the
		/// size of the dataset if it is not large enough. Does not
		/// check if the instance is compatible with the dataset.
		/// 
		/// </summary>
		/// <param name="instance">the instance to be added
		/// </param>
		public virtual void  add(Instance instance)
		{
			Instance newInstance = (Instance) instance.copy();
			
			newInstance.Dataset = this;
			m_Instances.addElement(newInstance);
		}
Ejemplo n.º 2
0
		/// <summary> Evaluates the classifier on a single instance.
		/// 
		/// </summary>
		/// <param name="classifier">machine learning classifier
		/// </param>
		/// <param name="instance">the test instance to be classified
		/// </param>
		/// <returns> the prediction made by the clasifier
		/// </returns>
		/// <throws>  Exception if model could not be evaluated  </throws>
		/// <summary> successfully or the data contains string attributes
		/// </summary>
		public virtual double evaluateModelOnce(Classifier classifier, Instance instance)
		{
			
			Instance classMissing = (Instance) instance.copy();
			double pred = 0;
			classMissing.Dataset = instance.dataset();
			classMissing.setClassMissing();
			if (m_ClassIsNominal)
			{
				double[] dist = classifier.distributionForInstance(classMissing);
				pred = Utils.maxIndex(dist);
				//UPGRADE_WARNING: Data types in Visual C# might be different.  Verify the accuracy of narrowing conversions. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1042'"
				if (dist[(int) pred] <= 0)
				{
					pred = Instance.missingValue();
				}
				updateStatsForClassifier(dist, instance);
			}
			else
			{
				pred = classifier.classifyInstance(classMissing);
				updateStatsForPredictor(pred, instance);
			}
			return pred;
		}
Ejemplo n.º 3
0
		/// <summary> Calculates the class membership probabilities for the given test instance.
		/// 
		/// </summary>
		/// <param name="instance">the instance to be classified
		/// </param>
		/// <returns> predicted class probability distribution
		/// </returns>
		/// <exception cref="Exception">if instance could not be classified
		/// successfully
		/// </exception>
		public virtual double[] distributionForInstance(Instance instance)
		{
			
			instance = (Instance) instance.copy();
			instance.Dataset = m_NumericClassData;
			double[] pred = new double[m_NumClasses];
			double[] Fs = new double[m_NumClasses];
			for (int i = 0; i < m_NumGenerated; i++)
			{
				double predSum = 0;
				for (int j = 0; j < m_NumClasses; j++)
				{
					pred[j] = m_Classifiers[j][i].classifyInstance(instance);
					predSum += pred[j];
				}
				predSum /= m_NumClasses;
				for (int j = 0; j < m_NumClasses; j++)
				{
					Fs[j] += (pred[j] - predSum) * (m_NumClasses - 1) / m_NumClasses;
				}
			}

            return Calculateprobs(Fs);
		}