-
ML .NET MSSQL 연동 [2]AI/ML.NET 2020. 11. 23. 17:07728x90
데이터베이스에서 데이터를 가져와서 학습모델을 만들고자 할때
보통 ML예제를 보면 전부 File에서 가져오는 예제들이다.
데이터베이스를 바로 연동하고 그후 데이터 준비 및 알고리즘 선택은 같게 움직인다.
일단 데이터베이스 연동 부분만 추가 하도록 한다.
string rootDir = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "../../../")); string dbFilePath = Path.Combine(rootDir, "Data", "DailyDemand.mdf"); string modelPath = Path.Combine(rootDir, "MLModel.zip"); var connectionString = $"Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename={dbFilePath};Integrated Security=True;Connect Timeout=30;"; MLContext mlContext = new MLContext(); DatabaseLoader loader = mlContext.Data.CreateDatabaseLoader<ModelInput>(); string query = "SELECT RentalDate, CAST(Year as REAL) as Year, CAST(TotalRentals as REAL) as TotalRentals FROM Rentals"; DatabaseSource dbSource = new DatabaseSource(SqlClientFactory.Instance, connectionString, query); IDataView dataView = loader.Load(dbSource);
connectionString에 우리가 일반적으로 많이 사용하는 연결 문구를 넣어주면 된다. 위 코드는 .mdf파일 쪽으로 연결되도록 되어 있다.
select 부분에 CAST as REAL을 한 이유는 REAL 형식은 ML.NET 알고리즘에서 예상하는 입력 형식인 단정밀도 부동 소수점 값 또는 Single로 표현된다. int나 decimal 인 경우 CAST해줘야 학습을 진행 할 수 있다.
Load를 이용해서 IDataView에 로드해서 이후 데이터 정규화를 해서 학습데이터를 준비해준다.
데이터 준비 및 알고리즘 선택은 다음 포스트에 하도록 하겠다.
localhost에 연결한다고 반나절이 날아갔다. 위 코드처럼 연결을 해도 로컬에 모델이 생기고 그 모델을 가져다 로컬에서 학습하는 구조로 되어 있다.
만약 실행을 시킨다면 서버에서 실행하도록 해야한다.
728x90반응형'AI > ML.NET' 카테고리의 다른 글
ML.NET MSSQL 연동 [5] (0) 2020.12.01 ML.NET MSSQL 연동 [4] (0) 2020.11.24 ML.NET MSSQL 연동 [3] (0) 2020.11.23 ML.NET 사용 선형회귀분석 [1] (0) 2020.11.20