강의 홍보
1줄 요약
- 관리자 실행해서 아나콘다 가상 환경을 만든 후, 새로운 패키지를 설치한다.
PyCaret 설치 방법 (Windows 10)
- 윈도우 10 환경에서 PyCaret 패키지를 설치해봅니다.
- 아나콘다 설치에 관한 내용은 생략합니다. 다만, 이 때, 필요한 것은 환경변수에 추가가 되어 있어야 합니다.
가상환경 설정
- 새로운 가상환경을 만듭니다. (이게 제일 편합니다.)
명령프롬프트
를 관리자로 실행합니다.
C:\Users\hkit\Desktop\pycaret
- 이 때, 적정한 경로로 이동한 후, 아래 명령어를 입력합니다.
- 먼저 가상환경을 만듭니다.
$ conda create --name yourenvname python=3.8
- 필자는 yourenvname 대신에, pycaret이라고 새로 이름을 지었습니다.
- 그 후에, 가상환경에 접속합니다. (이게 중요합니다!)
$ conda activate yourenvname
$ pip install pycaret
PyCaret
을 설치하기 위해서 Scikit-Learn
, Pandas
등을 사전에 먼저 설치할 필요가 없습니다. 만약 설치가 되어 있다면, 버전 충돌이 발생할 수가 있습니다. 즉, 이 때에는 기존에 설치된 패키지를 삭제 후 재 설치를 해야 합니다. 이러한 번거로움을 겪지 않기 위해, 새로운 가상 환경을 아예 만들어 설치하는 것이 훨씬 간편합니다.
- 만약 패키지 의존성을 확인하고 싶다면, 패키지 Github의 requirements.txt을 확인하시기를 바랍니다.
- 즉,
pip install pycaret
과 함께, 자동으로 설치가 됩니다.
주피터 노트북 실행
- 이제 주피터 노트북을 실행하여 Sample 코드를 작성해봅니다.
- 아나콘다를 관리자로 실행한 후, 아래 화면처럼 방금전에 만든 가상환경 이름을 찾아서 클릭합니다.
- 처음 작업하는 것이라면, 대개 아래 그림 처럼 Jupyter Notebook이나 Lab에서 설치를 먼저 해줘야 합니다.
- 필자는 Jupyter Lab을 좋아하기 때문에, Jupyter Lab을 설치 실행합니다.
Tutorial 확인
from pycaret.datasets import get_data
dataset = get_data('credit')
dataset.shape
|
LIMIT_BAL |
SEX |
EDUCATION |
MARRIAGE |
AGE |
PAY_1 |
PAY_2 |
PAY_3 |
PAY_4 |
PAY_5 |
... |
BILL_AMT4 |
BILL_AMT5 |
BILL_AMT6 |
PAY_AMT1 |
PAY_AMT2 |
PAY_AMT3 |
PAY_AMT4 |
PAY_AMT5 |
PAY_AMT6 |
default |
0 |
20000 |
2 |
2 |
1 |
24 |
2 |
2 |
-1 |
-1 |
-2 |
... |
0.0 |
0.0 |
0.0 |
0.0 |
689.0 |
0.0 |
0.0 |
0.0 |
0.0 |
1 |
1 |
90000 |
2 |
2 |
2 |
34 |
0 |
0 |
0 |
0 |
0 |
... |
14331.0 |
14948.0 |
15549.0 |
1518.0 |
1500.0 |
1000.0 |
1000.0 |
1000.0 |
5000.0 |
0 |
2 |
50000 |
2 |
2 |
1 |
37 |
0 |
0 |
0 |
0 |
0 |
... |
28314.0 |
28959.0 |
29547.0 |
2000.0 |
2019.0 |
1200.0 |
1100.0 |
1069.0 |
1000.0 |
0 |
3 |
50000 |
1 |
2 |
1 |
57 |
-1 |
0 |
-1 |
0 |
0 |
... |
20940.0 |
19146.0 |
19131.0 |
2000.0 |
36681.0 |
10000.0 |
9000.0 |
689.0 |
679.0 |
0 |
4 |
50000 |
1 |
1 |
2 |
37 |
0 |
0 |
0 |
0 |
0 |
... |
19394.0 |
19619.0 |
20024.0 |
2500.0 |
1815.0 |
657.0 |
1000.0 |
1000.0 |
800.0 |
0 |
5 rows × 24 columns
(24000, 24)
data = dataset.sample(frac=0.95, random_state=786)
data_unseen = dataset.drop(data.index)
data.reset_index(inplace=True, drop=True)
data_unseen.reset_index(inplace=True, drop=True)
print('Data for Modeling: ' + str(data.shape))
print('Unseen Data For Predictions: ' + str(data_unseen.shape))
Data for Modeling: (22800, 24)
Unseen Data For Predictions: (1200, 24)
from pycaret.classification import *
exp_clf101 = setup(data = data, target = 'default', session_id=123)
|
Description |
Value |
0 |
session_id |
123 |
1 |
Target |
default |
2 |
Target Type |
Binary |
3 |
Label Encoded |
0: 0, 1: 1 |
4 |
Original Data |
(22800, 24) |
5 |
Missing Values |
False |
6 |
Numeric Features |
14 |
7 |
Categorical Features |
9 |
8 |
Ordinal Features |
False |
9 |
High Cardinality Features |
False |
10 |
High Cardinality Method |
None |
11 |
Transformed Train Set |
(15959, 88) |
12 |
Transformed Test Set |
(6841, 88) |
13 |
Shuffle Train-Test |
True |
14 |
Stratify Train-Test |
False |
15 |
Fold Generator |
StratifiedKFold |
16 |
Fold Number |
10 |
17 |
CPU Jobs |
-1 |
18 |
Use GPU |
False |
19 |
Log Experiment |
False |
20 |
Experiment Name |
clf-default-name |
21 |
USI |
7858 |
22 |
Imputation Type |
simple |
23 |
Iterative Imputation Iteration |
None |
24 |
Numeric Imputer |
mean |
25 |
Iterative Imputation Numeric Model |
None |
26 |
Categorical Imputer |
constant |
27 |
Iterative Imputation Categorical Model |
None |
28 |
Unknown Categoricals Handling |
least_frequent |
29 |
Normalize |
False |
30 |
Normalize Method |
None |
31 |
Transformation |
False |
32 |
Transformation Method |
None |
33 |
PCA |
False |
34 |
PCA Method |
None |
35 |
PCA Components |
None |
36 |
Ignore Low Variance |
False |
37 |
Combine Rare Levels |
False |
38 |
Rare Level Threshold |
None |
39 |
Numeric Binning |
False |
40 |
Remove Outliers |
False |
41 |
Outliers Threshold |
None |
42 |
Remove Multicollinearity |
False |
43 |
Multicollinearity Threshold |
None |
44 |
Clustering |
False |
45 |
Clustering Iteration |
None |
46 |
Polynomial Features |
False |
47 |
Polynomial Degree |
None |
48 |
Trignometry Features |
False |
49 |
Polynomial Threshold |
None |
50 |
Group Features |
False |
51 |
Feature Selection |
False |
52 |
Feature Selection Method |
classic |
53 |
Features Selection Threshold |
None |
54 |
Feature Interaction |
False |
55 |
Feature Ratio |
False |
56 |
Interaction Threshold |
None |
57 |
Fix Imbalance |
False |
58 |
Fix Imbalance Method |
SMOTE |
best_model = compare_models()
|
Model |
Accuracy |
AUC |
Recall |
Prec. |
F1 |
Kappa |
MCC |
TT (Sec) |
ridge |
Ridge Classifier |
0.8254 |
0.0000 |
0.3637 |
0.6913 |
0.4764 |
0.3836 |
0.4122 |
0.0300 |
lda |
Linear Discriminant Analysis |
0.8247 |
0.7634 |
0.3755 |
0.6794 |
0.4835 |
0.3884 |
0.4132 |
0.2630 |
gbc |
Gradient Boosting Classifier |
0.8225 |
0.7790 |
0.3548 |
0.6800 |
0.4661 |
0.3721 |
0.4005 |
0.7580 |
ada |
Ada Boost Classifier |
0.8221 |
0.7697 |
0.3505 |
0.6811 |
0.4626 |
0.3690 |
0.3983 |
0.1900 |
lightgbm |
Light Gradient Boosting Machine |
0.8210 |
0.7750 |
0.3609 |
0.6679 |
0.4683 |
0.3721 |
0.3977 |
0.0890 |
rf |
Random Forest Classifier |
0.8180 |
0.7618 |
0.3591 |
0.6531 |
0.4631 |
0.3645 |
0.3884 |
0.4350 |
et |
Extra Trees Classifier |
0.8082 |
0.7381 |
0.3669 |
0.6010 |
0.4553 |
0.3471 |
0.3629 |
0.4750 |
lr |
Logistic Regression |
0.7814 |
0.6410 |
0.0003 |
0.1000 |
0.0006 |
0.0003 |
0.0034 |
0.4370 |
knn |
K Neighbors Classifier |
0.7547 |
0.5939 |
0.1763 |
0.3719 |
0.2388 |
0.1145 |
0.1259 |
0.2240 |
svm |
SVM - Linear Kernel |
0.7285 |
0.0000 |
0.1003 |
0.1454 |
0.0957 |
0.0067 |
0.0075 |
0.1750 |
dt |
Decision Tree Classifier |
0.7262 |
0.6134 |
0.4127 |
0.3832 |
0.3970 |
0.2204 |
0.2208 |
0.0680 |
qda |
Quadratic Discriminant Analysis |
0.4761 |
0.5282 |
0.6208 |
0.2374 |
0.3399 |
0.0377 |
0.0478 |
0.1860 |
nb |
Naive Bayes |
0.3760 |
0.6442 |
0.8845 |
0.2441 |
0.3826 |
0.0608 |
0.1207 |
0.0280 |
rf = create_model('rf')
plot_model(rf, plot = 'auc')
plot_model(rf, plot = 'confusion_matrix')
unseen_predictions = predict_model(rf, data=data_unseen)
unseen_predictions.head()
|
LIMIT_BAL |
SEX |
EDUCATION |
MARRIAGE |
AGE |
PAY_1 |
PAY_2 |
PAY_3 |
PAY_4 |
PAY_5 |
... |
BILL_AMT6 |
PAY_AMT1 |
PAY_AMT2 |
PAY_AMT3 |
PAY_AMT4 |
PAY_AMT5 |
PAY_AMT6 |
default |
Label |
Score |
0 |
100000 |
2 |
2 |
2 |
23 |
0 |
-1 |
-1 |
0 |
0 |
... |
567.0 |
380.0 |
601.0 |
0.0 |
581.0 |
1687.0 |
1542.0 |
0 |
0 |
0.74 |
1 |
380000 |
1 |
2 |
2 |
32 |
-1 |
-1 |
-1 |
-1 |
-1 |
... |
11873.0 |
21540.0 |
15138.0 |
24677.0 |
11851.0 |
11875.0 |
8251.0 |
0 |
0 |
0.98 |
2 |
200000 |
2 |
2 |
1 |
32 |
-1 |
-1 |
-1 |
-1 |
2 |
... |
3151.0 |
5818.0 |
15.0 |
9102.0 |
17.0 |
3165.0 |
1395.0 |
0 |
0 |
0.87 |
3 |
200000 |
1 |
1 |
1 |
53 |
2 |
2 |
2 |
2 |
2 |
... |
149531.0 |
6300.0 |
5500.0 |
5500.0 |
5500.0 |
5000.0 |
5000.0 |
1 |
1 |
0.67 |
4 |
240000 |
1 |
1 |
2 |
41 |
1 |
-1 |
-1 |
0 |
0 |
... |
1737.0 |
2622.0 |
3301.0 |
0.0 |
360.0 |
1737.0 |
924.0 |
0 |
0 |
0.80 |
5 rows × 26 columns
from pycaret.utils import check_metric
check_metric(unseen_predictions['default'], unseen_predictions['Label'], metric = 'Accuracy')
0.8142
- 결론은 가상환경에서 설치를 해야 합니다. 가상환경을 잘 사용합시다.