ML.NET을 이용한 머신 러닝의 두 번째 Review 내용입니다. 주어진 디바이스 제조 환경의 조건에 따라 제조 머신의 오류 여부를 예측하는 예제입니다.
클래스 라이브러리 만들기
1. 새 프로젝트를 클래스 라이브러리로 선택하여 다음을 누릅니다.
2. 프로젝트 이름을 PredictiveMaintenance로 입력합니다.
3. 나머지는 그대로 두고 다음과 만들기를 누릅니다.
Machine Learning Model(ML.NET) 추가하기
1. 프로젝트가 만들어지면 추가 > Machine Learning Model... 을 선택합니다.
2. 새 항목 추가 대화상자에서 Machine Learning Model(ML.NET)을 선택합니다.
3. 이름은 PredictiveMaintenanceModel.mbconfig로 입력하고 추가를 선택합니다.
Model Builder 선택하기
시나리오 선택화면에서 Model Builder를 선택해야 합니다. Data classification을 선택합니다.
학습 환경 선택하기
데이터 분류 시나리오는 로컬(CPU) 환경만 제공합니다. 다음 단계를 누릅니다.
데이터 준비하기
1. 데이터 다운로드를 클릭하여 ai4i2020.csv파일을 다운로드합니다.
2. 다운로드한 파일을 열어 첫번째 row에 있는 [K], [rpm], [Nm], [min] 문자들을 제거합니다. 그러고 나서 다시 저장합니다.
3. 데이터 추가 화면에서 파일(. csv,. tsv,. txt)을 선택하고 찾아보기에서 위에서 저장한 csv파일을 선택합니다.
학습 모델 선택
1. 학습시간을 30초로 설정하고 학습 시작 클릭합니다.
2. 학습이 완료되면 총 62개의 모델을 탐색한 결과 99.90%의 정확도를 갖는 FastTreeOva가 선택된 걸 확인할 수 있습니다.
평가
다음 단계를 선택하면 평가창이 나옵니다. 다음 주어진 데이터를 입력하여 예측을 수행합니다.
Heat | Value |
Product ID | L47340 |
Type | L |
air temperature | 298.4 |
process temperature | 308.2 |
rotational speed | 1282 |
torque | 60.7 |
tool wear | 216 |
OSF | 1 |
예측 결과 92% 확률로 Machine failure가 발생합니다.
코드 사용하기
그다음은 위에서 만든 클래스 라이브러리를 활용하여 다른 프로젝트에 활요하는 것이지만 만들어 진건 빈 클래스라서 당장 활용하기는 힘듭니다. 콘솔 프로젝트를 하나 추가하여 다음과 같이 입력하고 실행합니다. Project templates에서 Console app를 추가합니다.
새로 추가된 Console app 프로젝트를 시작프로젝트로 설정하고 실행합니다. 아래는 Program.cs의 내용입니다.
using System;
namespace PredictiveMaintenanceModel_ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
// Create single instance of sample data from first line of dataset for model input
PredictiveMaintenanceModel.ModelInput sampleData = new PredictiveMaintenanceModel.ModelInput()
{
UDI = 1F,
Product_ID = @"M14860",
Type = @"M",
Air_temperature = 298.1F,
Process_temperature = 308.6F,
Rotational_speed = 1551F,
Torque = 42.8F,
Tool_wear = 0F,
TWF = 0F,
HDF = 0F,
PWF = 0F,
OSF = 0F,
RNF = 0F,
};
// Make a single prediction on the sample data and print results
var predictionResult = PredictiveMaintenanceModel.Predict(sampleData);
Console.WriteLine("Using model to make single prediction -- Comparing actual Machine_failure with predicted Machine_failure from sample data...\n\n");
Console.WriteLine($"UDI: {1F}");
Console.WriteLine($"Product_ID: {@"M14860"}");
Console.WriteLine($"Type: {@"M"}");
Console.WriteLine($"Air_temperature: {298.1F}");
Console.WriteLine($"Process_temperature: {308.6F}");
Console.WriteLine($"Rotational_speed: {1551F}");
Console.WriteLine($"Torque: {42.8F}");
Console.WriteLine($"Tool_wear: {0F}");
Console.WriteLine($"Machine_failure: {0F}");
Console.WriteLine($"TWF: {0F}");
Console.WriteLine($"HDF: {0F}");
Console.WriteLine($"PWF: {0F}");
Console.WriteLine($"OSF: {0F}");
Console.WriteLine($"RNF: {0F}");
Console.WriteLine($"\n\nPredicted Machine_failure: {predictionResult.Prediction}\n\n");
Console.WriteLine("=============== End of process, hit any key to finish ===============");
Console.ReadKey();
}
}
}
결과
Using model to make single prediction -- Comparing actual Machine_failure with predicted Machine_failure from sample data...
UDI: 1
Product_ID: M14860
Type: M
Air_temperature: 298.1
Process_temperature: 308.6
Rotational_speed: 1551
Torque: 42.8
Tool_wear: 0
Machine_failure: 0
TWF: 0
HDF: 0
PWF: 0
OSF: 0
RNF: 0
Predicted Machine_failure: 0
=============== End of process, hit any key to finish ===============
'Machine Learning > C# ML.NET' 카테고리의 다른 글
ML.NET 시작하기 (1) | 2023.01.14 |
---|
댓글