コード例 #1
0
 private void Initialize(int id, bool malignant, TumourFeatures mean,
                         TumourFeatures standardError, TumourFeatures extreme)
 {
     Id            = id;
     Malignant     = malignant;
     Mean          = mean;
     StandardError = standardError;
     Extreme       = extreme;
 }
コード例 #2
0
        public double CalculateSimilarity(TumourFeatures other, List <float> weights)
        {
            float maxRadius           = 30;
            float maxTexture          = 31;
            float maxPerimeter        = 200;
            float maxArea             = 2500;
            float maxConcavity        = 140;
            float maxConcavePoints    = 340;
            float maxSymmetry         = 400;
            float maxFractalDimension = 250;

            float minRadius           = 1;
            float minTexture          = 1;
            float minPerimeter        = 1;
            float minArea             = 100;
            float minConcavity        = 1;
            float minConcavePoints    = 10;
            float minSymmetry         = 0;
            float minFractalDimension = 0;

            List <float> similarities = new List <float>()
            {
                1 - (Math.Abs(other.Radius - this.Radius) / maxRadius - minRadius),
                1 - (Math.Abs(other.Texture - this.Texture) / maxTexture - minTexture),
                1 - (Math.Abs(other.Perimeter - this.Perimeter) / maxPerimeter - minPerimeter),
                1 - (Math.Abs(other.Area - this.Area) / maxArea - minArea),
                1 - (Math.Abs(other.Concavity - this.Concavity) / maxConcavity - minConcavity),
                1 - (Math.Abs(other.ConcavePoints - this.ConcavePoints) / maxConcavePoints - minConcavePoints),
                1 - (Math.Abs(other.Symmetry - this.Symmetry) / maxSymmetry - minSymmetry),
                1 - (Math.Abs(other.FractalDimension - this.FractalDimension) / maxFractalDimension - minFractalDimension)
            };



            float similarityTotal = 0;
            float weightSum       = 0;

            for (int index = 0; index < similarities.Count; index++)
            {
                similarityTotal += weights[index] * similarities[index];
                weightSum       += weights[index];
            }

            similarityTotal = similarityTotal / weightSum;

            return(similarityTotal);
        }