Here is an example of a Ludwig tutorial in Jupyter Notebook format:

This is a complete example of training a model for binary classification.

Download The Adult Census Income dataset
Adult Census Income is an extract of 1994 Census data for predicting whether a person's income exceeds $50K per year. The data set consists of over 49K records with 14 attributes with missing data.

```ludwig datasets download adult\_census\_income```
This command will create a dataset adult\_census\_income.csv in the current directory.

The columns in the dataset are

column description
age numeric variable, age of person
workclass categorical variable, Type of empolyment
fnlwgt numeric variable, no defintion
education categorical variable, education level
education-num nmeric variable, no definition
marital-status categorical variable, marital status
occupation categorical variable, occupation
relationship categorical variable, Relationship to household
race categorical variable, race
sex categorical variable, gender
capital-gain numeric variable, no definition
capital-loss numeric variable, no definition
hours-per-week numeric variable, hours worked per week
native-country categorical variable, Country of origin
income binary variable, " <=50K" or " >50K"
split numeric variable, indicating data split training(0), test(2)

Train
The Ludwig configuration file describes the machine learning task. There is a vast array of options to control the learning process. This example only covers a small fraction of the options. Only the options used in this example are described. Please refer to the Configuration Section for all the details.

First, the defaults section defines the global preprocessing options. All numeric features are z-scored normalized, i.e., mean centered and scaled by the standard deviation. Numeric missing values are filled in with the mean of non-missing values.

The input\_features section describes each of the predictor variables, i.e., the column name and type of input variable: number or category

The 'combiner' section defines how the input features are combined to be passed to the output decoder. This example uses the concat combiner, which simply concatenates the output of the input feature encoders. The combined data is passed through a three layer fully connected network of 128 cells in each layer with dropout regularization.

Next the output\_features are defined. In this example, there is one response variable called income. This is a binary feature with two possible values: " <=50K" or " >50K". Because thes values are not conventional binary values, i.e., "True" and "False", a feature specific preprocessing option is specified to indicate which string (" >50K") is interpreted as "True". A four layer fully connected decoder of 32 cells in each layer is specified for this output feature.

The last section in this configuration file describes options for how the the trainer will operate. In this example the trainer will process the training data for 10 epochs. The optimizer type is "adam".
```
defaults:
 number:
 preprocessing:
 normalization: zscore
 missing\_value\_strategy: fill\_with\_mean

input\_features:
 - name: age
 type: number
 - name: workclass
 type: category
 - name: fnlwgt
 type: number
 - name: education
 type: category
 - name: education-num
 type: number
 - name: marital-status
 type: category
 - name: occupation
 type: category
 - name: relationship
 type: category
 - name: race
 type: category
 - name: sex
 type: category
 - name: capital-gain
 type: number
 - name: capital-loss
 type: number
 - name: hours-per-week
 type: number
 - name: native-country
 type: category

output\_features:
 - name: income
 type: binary
 preprocessing:
 fallback\_true\_label: " >50K"
 decoder:
 num\_fc\_layers: 4
 output\_size: 32

trainer:
 epochs: 10
 optimizer:
 type: adam
```

Train the model.

```
# Trains the model. This cell might take a few minutes.
train\_stats, preprocessed\_data, output\_directory = model.train(training\_set=train\_df,
 test\_set=test\_df)
```
Evaluate
```
# Generates predictions and performance statistics for the test set.
test\_stats, predictions, output\_directory = model.evaluate(
 eval\_df,
 collect\_predictions=True,
 collect\_overall\_stats=True,
 skip\_save\_eval\_stats=False,
 skip\_save\_predictions=False,
 output\_directory="test\_results",
 return\_type="dict"
)
```

Visualize Metrics
ROC Curve
```
from ludwig.visualize import roc\_curves

roc\_curves(
 [predictions['income']['probabilities']],
 eval\_df['income'],
 preprocessed\_data[-1],
 'income',
 '1',
 model\_names=["Adult Census Income"],
 output\_directory='visualization',
 file\_format='png'
)
```

Binary Threshold Metrics
```
from ludwig.visualize import binary\_threshold\_vs\_metric

binary\_threshold\_vs\_metric(
 [predictions["income"]["probabilities"]],
 eval\_df["income"],
 preprocessed\_data[-1],
 "income",
 ["accuracy", "precision", "recall", "f1"],
 1,
 model\_names=["Adult Census Income"],
 output\_directory="visualization",
 file\_format="png",
)
```

Predictions
```
predictions, prediction\_results = model.predict(dataset=eval\_df, skip\_save\_predictions=False, output\_directory="predictions\_results")
```
Sample predictions
다음은 Jupyter 노트북 형식의 루드비히 튜토리얼 예제입니다:이진 분류를 위한 모델 훈련의 완전한 예입니다.성인 인구조사 소득 데이터 세트 다운로드성인 인구조사 소득은 개인의 소득이 연간 5만 달러를 초과하는지 여부를 예측하기 위한 1994년 인구조사 데이터의 추출입니다. 이 데이터 집합은 데이터가 누락된 14개의 속성을 가진 49,000개 이상의 레코드로 구성되어 있습니다.```ludwig 데이터 집합 다운로드 성인\_census\_income```이 명령은 현재 디렉터리에 성인\_census\_income.csv 데이터 집합을 생성합니다.데이터 집합의 열은 다음과 같습니다.열 설명나이 숫자 변수, 사람의 나이직종 범주형 변수, 직종 유형fnlwgt 숫자 변수, 정의 없음education 범주형 변수, 교육 수준교육 숫자 변수, 정의 없음결혼 상태 범주형 변수, 결혼 상태직업 범주형 변수, 직업관계 범주형 변수, 가구와의 관계인종 범주형 변수, 인종성별 범주형 변수, 성별자본 이득 숫자 변수, 정의 없음자본 손실 숫자 변수, 정의 없음주당 근무 시간 숫자 변수, 주당 근무 시간출신 국가 범주형 변수, 출신 국가소득 이항 변수, " <=50,000" 또는 " >50,000"분할 숫자 변수, 데이터 분할을 나타내는 훈련(0), 테스트(2)Train루드비히 구성 파일은 머신러닝 작업을 설명합니다. 학습 과정을 제어할 수 있는 다양한 옵션이 있습니다. 이 예제에서는 옵션 중 일부만 다룹니다. 이 예제에서는 사용된 옵션만 설명합니다. 자세한 내용은 구성 섹션을 참조하세요.먼저 기본값 섹션에서는 전역 전처리 옵션을 정의합니다. 모든 숫자 특징은 z-점수 정규화, 즉 평균을 중앙에 두고 표준 편차에 따라 배율을 조정합니다. 숫자 결측값은 결측되지 않은 값의 평균으로 채워집니다.입력\_기능 섹션은 각 예측 변수, 즉 열 이름과 입력 변수의 유형(숫자 또는 범주)을 설명합니다.'결합기' 섹션은 입력 특징이 결합되어 출력 디코더로 전달되는 방식을 정의합니다. 이 예제에서는 입력 피처 인코더의 출력을 단순히 연결하는 컨냇 결합기를 사용합니다. 결합된 데이터는 드롭아웃 정규화를 통해 각 레이어에 128개의 셀로 구성된 3계층 완전 연결 네트워크를 통과합니다.다음으로 출력\_features가 정의됩니다. 이 예제에는 소득이라는 응답 변수가 하나 있습니다. 이것은 두 가지 가능한 값을 가진 이진 특징입니다: " <=50,000" 또는 " >50,000". 이 값은 일반적인 이진 값, 즉 "True"와 "False"가 아니므로 어떤 문자열(">50,000")이 "True"로 해석되는지를 나타내는 특징별 전처리 옵션이 지정됩니다. 이 출력 기능에는 각 레이어에 32개의 셀로 구성된 4계층 완전 연결 디코더가 지정됩니다.이 구성 파일의 마지막 섹션에서는 트레이너의 작동 방식에 대한 옵션을 설명합니다. 이 예에서는 트레이너가 10개의 에포크에 대한 훈련 데이터를 처리합니다. 최적화 유형은 "adam"입니다.```기본값입니다: 숫자: 전처리: 정규화: zscore missing\_value\_strategy: fill\_with\_mean입력\_기능: - name: age 유형: 숫자 - 이름: 직급 유형: 카테고리 - 이름: FNLWGT 유형: 숫자 - 이름: 교육 유형: 카테고리 - 이름: 교육 번호 유형: 숫자 - 이름: 결혼 상태 유형: 카테고리 - 이름: 직업 유형: 카테고리 - 이름: 관계 유형: 카테고리 - 이름: 인종 유형: 카테고리 - 이름: 성별 유형: 카테고리 - 이름: 자본 이득 유형: 숫자 - 이름: 자본 손실 유형: 숫자 - 이름: 주당 시간 유형: 숫자 - name: 모국 유형: 카테고리output\_features: - name: 소득 유형: 바이너리 전처리: FALLBACK\_TRUE\_LABEL: " >50K" 디코더: NUM\_FC\_레이어: 4 output\_size: 32trainer: epochs: 10 optimizer: 유형: 아담```모델을 훈련합니다.```# 모델을 훈련합니다. 이 셀은 몇 분 정도 걸릴 수 있습니다.train\_stats, preprocessed\_data, output\_directory = model.train(training\_set=train\_df, test\_set=test\_df)```평가```# 테스트 세트에 대한 예측 및 성능 통계를 생성합니다.test\_stats, predictions, output\_directory = model.evaluate( eval\_df, collect\_predictions=True, collect\_overall\_stats=True, skip\_save\_eval\_stats=False, skip\_save\_predictions=False, output\_directory="test\_results", 반환\_type="딕셔너리")```지표 시각화ROC 곡선```ludwig.visualize에서 roc\_curves 가져 오기roc\_curves( [예측['소득']['확률']], eval\_df['income'], preprocessed\_data[-1], '소득', '1', model\_names=["성인 인구조사 소득"], output\_directory='시각화', file\_format='png')```이진 임계값 메트릭```ludwig.visualize에서 임포트 바이너리\_임계값\_vs\_메트릭binary\_threshold\_vs\_metric( [예측["소득"]["확률"]], eval\_df["income"], preprocessed\_data[-1], "소득", ["정확도", "정밀도", "리콜", "F1"], 1, model\_names=["성인 인구조사 소득"], outpu