첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

TestProject.zip
0.01MB

▶ SourceModel.cs

using Microsoft.ML.Data;

namespace TestProject
{
    /// <summary>
    /// 소스 모델
    /// </summary>
    public class SourceModel
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Property
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 알코올 - Alcohol

        /// <summary>
        /// 알코올
        /// </summary>
        [LoadColumn(0)]
        public float Alcohol { get; set; }

        #endregion
        #region 사과산 - MalicAcid

        /// <summary>
        /// 사과산
        /// </summary>
        [LoadColumn(1)]
        public float MalicAcid { get; set; }

        #endregion
        #region 애쉬 - Ash

        /// <summary>
        /// 애쉬
        /// </summary>
        [LoadColumn(2)]
        public float Ash { get; set; }

        #endregion
        #region 애쉬 알카니티 - AshAlcanity

        /// <summary>
        /// 애쉬 알카니티
        /// </summary>
        [LoadColumn(3)]
        public float AshAlcanity { get; set; }

        #endregion
        #region 마그네슘 - Magnesium

        /// <summary>
        /// 마그네슘
        /// </summary>
        [LoadColumn(4)]
        public float Magnesium { get; set; }

        #endregion
        #region 전체 페놀 - TotalPhenols

        /// <summary>
        /// 전체 페놀
        /// </summary>
        [LoadColumn(5)]
        public float TotalPhenols { get; set; }

        #endregion
        #region 플라보노이드 - Flavanoids

        /// <summary>
        /// 플라보노이드
        /// </summary>
        [LoadColumn(6)]
        public float Flavanoids { get; set; }

        #endregion
        #region 비 플라보노이드 페놀 - NonflavanoidPhenols

        /// <summary>
        /// 비 플라보노이드 페놀
        /// </summary>
        [LoadColumn(7)]
        public float NonflavanoidPhenols { get; set; }

        #endregion
        #region 프로안토시아닌 - Proanthocyanins

        /// <summary>
        /// 프로안토시아닌
        /// </summary>
        [LoadColumn(8)]
        public float Proanthocyanins { get; set; }

        #endregion
        #region 색상 강도 - ColorIntensity

        /// <summary>
        /// 색상 강도
        /// </summary>
        [LoadColumn(9)]
        public float ColorIntensity { get; set; }

        #endregion
        #region 색조 - Hue

        /// <summary>
        /// 색조
        /// </summary>
        [LoadColumn(10)]
        public float Hue { get; set; }

        #endregion
        #region OD280 - OD280

        /// <summary>
        /// OD280
        /// </summary>
        [LoadColumn(11)]
        public float OD280 { get; set; }

        #endregion
        #region 프롤린 - Proline

        /// <summary>
        /// 프롤린
        /// </summary>
        [LoadColumn(12)]
        public float Proline { get; set; }

        #endregion
    }
}

 

728x90

 

▶ TargetModel.cs

using Microsoft.ML.Data;

namespace TestProject
{
    /// <summary>
    /// 타겟 모델
    /// </summary>
    public class TargetModel
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Property
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region PredictedClusterID

        /// <summary>
        /// 예측 클러스터 ID
        /// </summary>
        [ColumnName("PredictedLabel")]
        public uint PredictedClusterID;

        #endregion
        #region DistanceArray

        /// <summary>
        /// 거리 배열
        /// </summary>
        [ColumnName("Score")]
        public float[] DistanceArray;

        #endregion
    }
}

 

300x250

 

▶ Program.cs

using System;
using System.Linq;

using Microsoft.ML;
using Microsoft.ML.Data;

namespace TestProject
{
    /// <summary>
    /// 프로그램
    /// </summary>
    class Program
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Private

        #region 프로그램 시작하기 - Main()

        /// <summary>
        /// 프로그램 시작하기
        /// </summary>
        private static void Main()
        {
            string dataFilePath = "wine-clustering.csv";

            MLContext mlContext = new MLContext();

            IDataView sourceDataView = mlContext.Data.LoadFromTextFile<SourceModel>(dataFilePath, hasHeader : true, separatorChar : ',');

            string[] columnNameArray = sourceDataView.Schema.Select(column => column.Name).ToArray();

            var data = mlContext.Data.TrainTestSplit(sourceDataView, testFraction : 0.2);

            var pipeline = mlContext.Transforms.Concatenate("Feature", columnNameArray).Append(mlContext.Clustering.Trainers.KMeans("Feature", numberOfClusters : 3));

            var model = pipeline.Fit(data.TrainSet);

            IDataView testDataView = model.Transform(data.TestSet);

            ClusteringMetrics metrics = mlContext.Clustering.Evaluate(testDataView, scoreColumnName : "Score", featureColumnName : "Feature");

            PredictionEngine<SourceModel, TargetModel> predictionEngine = mlContext.Model.CreatePredictionEngine<SourceModel, TargetModel>(model);

            TargetModel target = predictionEngine.Predict
            (
                new SourceModel() 
                {
                    Alcohol             = 11,
                    Ash                 = 2.33f,
                    AshAlcanity         = 3.21f,
                    ColorIntensity      = 2.9f,
                    Flavanoids          = 1.54f,
                    Hue                 = 1.55f,
                    Magnesium           = 120, 
                    MalicAcid           = 1.44f,
                    NonflavanoidPhenols = 0.3f,
                    OD280               = 2.93f,
                    Proanthocyanins     = 1.72f,
                    TotalPhenols        = 3.86f,
                    Proline             = 1300
                }
            );

            Console.WriteLine($"예측 클러스터 ID : {target.PredictedClusterID}");
        }

        #endregion
    }
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요