FIX : fix stacked changes for korean translation

pull/83/head
minwook-shin 3 years ago
parent c1f52f3427
commit 6d0cf7e8a0

@ -4,7 +4,7 @@
> 🎥 머신러닝, AI 그리고 딥러닝의 차이를 설명하는 영상을 보려면 위 이미지를 클릭합니다.
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/1/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/1/)
### 소개
@ -21,7 +21,7 @@
- **Python 배우기**. 이 코스에서 사용할 데이터 사이언티스트에게 유용한 프로그래밍 언어인 [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-15963-cxa)에 대한 기본적인 이해를 해야 좋습니다.
- **Node.js 와 JavaScript 배우기**. 이 코스에서 웹앱을 빌드할 때 몇 번 JavaScript를 사용하므로, [node](https://nodejs.org) 와 [npm](https://www.npmjs.com/)을 설치해야 합니다, Python 과 JavaScript를 개발하며 모두 쓸 수 있는 [Visual Studio Code](https://code.visualstudio.com/)도 있습니다.
- **GitHub 계정 만들기**. [GitHub](https://github.com)에서 찾았으므로, 이미 계정이 있을 수 있습니다, 혹시 없다면, 계정을 만든 뒤에 이 커리큘럼을 포크해서 직접 쓸 수 있습니다. (star 주셔도 됩니다 😊)
- **Scikit-learn 찾아보기**. 이 강의에서 참조하고 있는 ML 라이브러리 셋인 [Scikit-learn]([https://scikit-learn.org/stable/user_guide.html)을 숙지합니다.
- **Scikit-learn 찾아보기**. 이 강의에서 참조하고 있는 ML 라이브러리 셋인 [Scikit-learn](https://scikit-learn.org/stable/user_guide.html)을 숙지합니다.
### 머신러닝은 무엇인가요?
@ -97,12 +97,14 @@
종이에 그리거나, [Excalidraw](https://excalidraw.com/)처럼 온라인 앱을 이용하여 AI, ML, 딥러닝, 그리고 데이터 사이언스의 차이를 이해합시다. 각 기술들이 잘 해결할 수 있는 문제에 대해 아이디어를 합쳐보세요.
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/2/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/2/)
## 리뷰 & 자기주도 학습
클라우드에서 ML 알고리즘을 어떻게 사용하는 지 자세히 알아보려면, [Learning Path](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-15963-cxa)를 따릅니다.
ML의 기초에 대한 [Learning Path](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-15963-cxa)를 봅니다.
## 과제
[Get up and running](../assignment.md)

@ -3,7 +3,7 @@
![Summary of History of machine learning in a sketchnote](../../../sketchnotes/ml-history.png)
> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/3/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/3/)
이 강의에서, 머신러닝과 인공 지능의 역사에서 주요 마일스톤을 살펴보려 합니다.
@ -103,7 +103,7 @@ natural language processing 연구가 발전하고, 검색이 개선되어 더
역사적인 순간에 사람들 뒤에서 한 가지를 집중적으로 파고 있는 자를 자세히 알아보세요. 매력있는 캐릭터가 있으며, 문화가 사라진 곳에서는 과학적인 발견을 하지 못합니다. 당신은 어떤 발견을 해보았나요?
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/4/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/4/)
## 검토 & 자기주도 학습

@ -3,7 +3,7 @@
![Summary of Fairness in Machine Learning in a sketchnote](../../../sketchnotes/ml-fairness.png)
> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/5/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/)
## 소개
@ -185,7 +185,7 @@ AI와 머신러닝의 공정성을 보장하는 건 계속 복잡한 사회기
모델을 구축하고 사용하면서 불공정한 실-생활 시나리오를 생각해보세요. 어떻게 고려해야 하나요?
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/6/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/)
## 검토 & 자기주도 학습

@ -5,7 +5,7 @@
- 머신러닝을 받쳐주는 프로세스를 고수준에서 이해합니다.
- 'models', 'predictions', 그리고 'training data'와 같은 기초 개념을 탐색합니다.
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/7/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/7/)
## 소개
@ -36,13 +36,17 @@
어떠한 종류의 질문을 대답하려면, 올바른 타입의 데이터가 필요합니다. 이 포인트에서 필요한 두 가지가 있습니다:
- **데이터 수집**. 데이터 분석의 공정도를 설명한 이전 강의를 기억하고, 데이터를 조심히 수집합니다. 데이터의 출처와, 내재적 편견을 알고, 출처를 문서화합니다.
- **데이터 준비**. 데이터 준비 프로세스는 여러 단계가 있습니다. 데이터가 다양한 소스에서 제공되는 경우에는 정렬하고 노멀라이즈해야 할 수 있습니다. ([Clustering](../../../5-Clustering/1-Visualize/README.md)과 같이) 문자열을 숫자로 바꾸는 방식처럼 다양한 방식을 통하여 데이터의 품질과 양을 향상시킬 수 있습니다. ([Classification](../../../4-Classification/1-Introduction/README.md)과 같이) 원본 기반으로, 새로운 데이터를 생성할 수 있습니다. ([Web App](../../3-Web-App/README.md) 강의 이전처럼) 데이터를 정리하고 변경할 수 있습니다. 마지막으로, 훈련하는 기술에 따라서, 무작위로 섞어야 할 수 있습니다.
- **데이터 준비**. 데이터 준비 프로세스는 여러 단계가 있습니다. 데이터가 다양한 소스에서 제공되는 경우에는 정렬하고 노멀라이즈해야 할 수 있습니다. ([Clustering](../../../5-Clustering/1-Visualize/README.md)과 같이) 문자열을 숫자로 바꾸는 방식처럼 다양한 방식을 통하여 데이터의 품질과 양을 향상시킬 수 있습니다. ([Classification](../../../4-Classification/1-Introduction/README.md)과 같이) 원본 기반으로, 새로운 데이터를 생성할 수 있습니다. ([Web App](../../../3-Web-App/README.md) 강의 이전처럼) 데이터를 정리하고 변경할 수 있습니다. 마지막으로, 훈련하는 기술에 따라서, 무작위로 섞어야 할 수 있습니다.
✅ 데이터를 수집하고 처리하면, 그 모양이 의도한 질문을 해결할 수 있는 지 잠시 봅니다. [Clustering](../../5-Clustering/1-Visualize/README.md) 강의에서 본 것처럼, 데이터가 주어진 작업에서 잘 수행하지 못할 수 있습니다!
### feature 변수 선택하기
### Features와 타겟
feature는 데이터의 측정할 수 있는 속성입니다. 많은 데이터셋에서 'date' 'size' 또는 'color'처럼 열 제목으로 표현합니다. 일반적으로 코드에서 X로 보여지는 feature 변수는, 모델을 훈련할 때 사용되는 입력 변수로 나타냅니다.
[feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)는 데이터의 측정할 수 있는 속성입니다. 많은 데이터셋에서 'date' 'size' 또는 'color' 같은 컬럼 제목으로 표현합니다. 일반적인 코드에서 `y`로 나타내는 feature 변수는, 데이터에 물어보려는 질문에 대한 정답을 나타냅니다: 12월에, 어떤 **색상**의 호박이 가장 쌀까요? San Francisco에서, 부동산 **가격**이 가장 좋은 동네는 어디일까요?
타겟은 예측하려고 시도한 것입니다. 코드에서 X로 표시하는 보통 타겟은, 데이터에 물어보려는 질문의 대답을 나타냅니다: 12월에, 어떤 색의 호박이 가장 쌀까요? San Francisco 근처의 좋은 토지 실제 거래가는 어디인가요? 가끔은 타겟을 라벨 속성이라고 부르기도 합니다.
### feature 변수 선택하기
🎓 **Feature Selection과 Feature Extraction** 모델을 만들 때 선택할 변수를 어떻게 알 수 있을까요? 가장 성능이 좋은 모델에 올바른 변수를 선택하기 위하여 Feature Selection 또는 Feature Extraction 프로세스를 거치게 됩니다. 그러나, 같은 내용이 아닙니다: "Feature extraction creates new features from functions of the original features, whereas feature selection returns a subset of the features." ([source](https://wikipedia.org/wiki/Feature_selection))
@ -56,7 +60,7 @@
- **학습**. 데이터셋의 파트는 모델을 학습할 때 적당합니다. 이 셋은 본 데이터셋의 대부분을 차지합니다.
- **테스트**. 테스트 데이터셋은 독립적인 데이터의 그룹이지만, 미리 만들어진 모델의 성능을 확인할 때에, 가끔 본 데이터에서도 수집됩니다.
- **검증**. 검증 셋은 모델을 개선하며 모델의 hyperparameters, 또는 architecture를 튜닝할 때, 사용하는 작은 독립된 예시 그룹입니다. ([Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)에서 언급하듯) 데이터의 크기와 질문에 따라서 세번째 셋을 만들 이유가 없습니다.
- **검증**. 검증 셋은 모델을 개선하며 모델의 hyperparameters, 또는 architecture를 튜닝할 때, 사용하는 작은 독립된 예시 그룹입니다. ([Time Series Forecasting](../../../7-TimeSeries/1-Introduction/README.md)에서 언급하듯) 데이터의 크기와 질문에 따라서 세번째 셋을 만들 이유가 없습니다.
## 모델 구축하기
@ -99,7 +103,7 @@
ML 실무자의 단계를 반영한 플로우를 그려보세요. 프로세스에서 지금 어디에 있는 지 보이나요? 어려운 내용을 예상할 수 있나요? 어떤게 쉬울까요?
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/8/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/8/)
## 검토 & 자기주도 학습

@ -4,7 +4,7 @@
> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/9/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/9/)
## 소개
@ -54,7 +54,7 @@
다음으로, 약간의 Python 코드를 추가합니다.
1. 코드 블록에서 **print("hello notebook'")** 입력합니다.
1. 코드 블록에서 **print('hello notebook')** 입력합니다.
1. 코드를 실행하려면 화살표를 선택합니다.
출력된 구문이 보여야 합니다:
@ -97,7 +97,7 @@ Scikit-learn 사용하면 올바르게 모델을 만들고 사용하기 위해
- **matplotlib**. 유용한 [graphing tool](https://matplotlib.org/)이며 line plot을 만들 때 사용합니다.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html)는 Python애서 숫자를 핸들링할 때 유용한 라이브러리입니다.
- **sklearn**. Scikit-learn 라이브러리 입니다.
- **sklearn**. [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) 라이브러리 입니다.
작업을 도움받으려면 라이브러리를 Import 합니다.
@ -183,6 +183,9 @@ s1 tc: T-Cells (a type of white blood cells)
```python
plt.scatter(X_test, y_test, color='black')
plt.plot(X_test, y_pred, color='blue', linewidth=3)
plt.xlabel('Scaled BMIs')
plt.ylabel('Disease Progression')
plt.title('A Graph Plot Showing Diabetes Progression Against BMI')
plt.show()
```
@ -197,7 +200,7 @@ s1 tc: T-Cells (a type of white blood cells)
이 데이터셋은 다른 변수를 Plot 합니다. 힌트: 이 라인을 수정합니다: `X = X[:, np.newaxis, 2]`. 이 데이터셋의 타겟이 주어질 때, 질병으로 당뇨가 진행되면 어떤 것을 탐색할 수 있나요?
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/10/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/10/)
## 검토 & 자기주도 학습

@ -1,9 +1,10 @@
# Scikit-learn 사용한 regression 모델 만들기: 데이터 준비와 시각화
> ![Data visualization infographic](.././images/data-visualization.png)
> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/11/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/11/)
## 소개
@ -53,7 +54,7 @@ visual Studio Code에서 _notebook.ipynb_ 파일을 열고 새로운 Pandas 데
```python
import pandas as pd
pumpkins = pd.read_csv('../../data/US-pumpkins.csv')
pumpkins = pd.read_csv('../data/US-pumpkins.csv')
pumpkins.head()
```
@ -190,7 +191,7 @@ Jupyter notebooks에서 잘 작동하는 데이터 시각화 라이브러리는
Matplotlib에서 제공하는 다양한 시각화 타입을 찾아보세요. regression 문제에 가장 적당한 타입은 무엇인가요?
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/12/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/12/)
## 검토 & 자기주도 학습

@ -3,7 +3,7 @@
![Linear vs polynomial regression infographic](.././images/linear-polynomial.png)
> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/13/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/13/)
### 소개
@ -85,7 +85,6 @@ Scikit-learn을 사용할 예정이기 때문에, (할 수 있지만) 손으로
```python
from sklearn.preprocessing import LabelEncoder
new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform)
new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform)
```
@ -328,7 +327,7 @@ Scikit-learn에는 polynomial regression 모델을 만들 때 도움을 받을
노트북에서 다른 변수를 테스트하면서 상관 관계가 모델 정확도에 어떻게 대응되는 지 봅니다.
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/14/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/14/)
## 검토 & 자기주도 학습

@ -3,7 +3,7 @@
![Logistic vs. linear regression infographic](.././images/logistic-linear.png)
> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/15/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/15/)
## 소개
@ -209,7 +209,7 @@ binary classification을 찾는 모델을 만드는 건 Scikit-learn에서 놀
> 🎓 '[confusion matrix](https://wikipedia.org/wiki/Confusion_matrix)' (또는 'error matrix')는 모델의 true 대 false 로 긍정 및 부정을 나타내서, 예측의 정확도를 측정하는 테이블입니다.
1. `confusin_matrix()` 불러서, confusion metrics를 사용합니다:
1. `confusion_matrix()` 불러서, confusion metrics를 사용합니다:
```python
from sklearn.metrics import confusion_matrix
@ -223,26 +223,35 @@ binary classification을 찾는 모델을 만드는 건 Scikit-learn에서 놀
[ 33, 0]])
```
어떤 일이 생기나요? 모델이 2개의 binary categories 인, 'pumpkin' 카테고리와 'not-a-pumpkin' 카테고리 사이에 아이템을 분류하도록 질문받았다고 가정합니다.
Scikit-learn에서, confusion matrices 행은 (axis 0) 실제 라벨이고 열은 (axis 1) 예측된 라벨입니다.
- 만약 모델이 무언가를 호박으로 예측하고 실제로 'pumpkin' 카테고리에 있다면 true positive라고 부르며, 좌측 상단의 숫자로 보여집니다.
- 만약 모델이 무언가를 호박으로 예측하지 않았는데 실제 'pumpkin' 카테고리에 있다면 false positive라고 부르며, 우측 상단의 숫자로 보여집니다.
- 만약 모델이 무언가를 호박으로 예측하지만 실제로 'not-a-pumpkin' 카테고리에 있다면 false negative라고 부르며, 좌측 하단의 숫자로 보여집니다.
- 만약 모델이 무언가를 호박으로 예측하지 않았고 'not-a-pumpkin' 카테고리에 있다면 true negative라고 부르며, 우측 하단의 숫자로 보여집니다.
| | 0 | 1 |
| :---: | :---: | :---: |
| 0 | TN | FP |
| 1 | FN | TP |
![Confusion Matrix](../images/confusion-matrix.png)
어떤 일이 생기나요? 모델이 'orange'와 'not-orange' 카테고리의, 두 바이너리 카테고리로 호박을 분류하게 요청받았다고 가정합니다.
> Infographic by [Jen Looper](https://twitter.com/jenlooper)
- 만약 모델이 호박을 오랜지색이 아닌 것으로 예측하고 실제로 'not-orange' 카테고리에 있다면 좌측 상단에서 보여지고, true negative 라고 불립니다.
- 만약 모델이 호박을 오랜지색으로 예측하고 실제로 'not-orange' 카테고리에 있다면 좌측 하단에 보여지고, false negative 라고 불립니다.
- 만약 모델이 호박을 오랜지색이 아닌 것으로 예측하고 실제로 'orange' 카테고리에 있다면 우측 상단에 보여지고, false positive 라고 불립니다.
- 만약 모델이 호박을 오랜지색으로 예측하고 실제로 'orange' 카테고리에 있다면 우측 하단에 보여지고, true positive 라고 불립니다.
예상한 것처럼 true positives와 true negatives는 큰 숫자를 가지고 false positives와 false negatives은 낮은 숫자을 가지는 게 더 좋습니다, 모델의 성능이 더 좋다는 것을 의미합니다.
confusion matrix는 정확도와 재현율에 얼마나 관련있나요? classification 리포트에 정확도와 (0.83) 재현율 (0.98)으로 보여져서 출력되었습니다.
Precision = tp / (tp + fp) = 162 / (162 + 33) = 0.8307692307692308
Recall = tp / (tp + fn) = 162 / (162 + 4) = 0.9759036144578314
✅ Q: confusion matrix에 따르면, 모델은 어떻게 되나요? A: 나쁘지 않습니다; true positives의 많은 숫자뿐만 아니라 몇 false negatives도 있습니다.
confusion matrix TP/TN 과 FP/FN의 맵핑으로 미리 본 용어에 대하여 다시 봅니다:
🎓 정밀도: TP/(TP + FN) 검색된 인스턴스 중 관련된 인스턴스의 비율 (예시. 잘 라벨링된 라벨)
🎓 정밀도: TP/(TP + FP) 검색된 인스턴스 중 관련된 인스턴스의 비율 (예시. 잘 라벨링된 라벨)
🎓 재현율: TP/(TP + FP) 라벨링이 잘 되었는 지 상관없이, 검색한 관련된 인스턴스의 비율
🎓 재현율: TP/(TP + FN) 라벨링이 잘 되었는 지 상관없이, 검색한 관련된 인스턴스의 비율
🎓 f1-score: (2 * precision * recall)/(precision + recall) 정밀도와 재현율의 가중치 평균은, 최고 1과 최저 0
@ -289,9 +298,9 @@ classifications에 대한 이후 강의에서, 모델의 스코어를 개선하
---
## 🚀 도전
logistic regression과 관련해서 풀어야할 내용이 더 있습니다! 하지만 배우기 좋은 방식은 실험입니다. 이런 분석에 적당한 데이터셋을 찾아서 모델을 만듭니다. 무엇을 배우나요? 팁: 흥미로운 데이터셋으로 [Kaggle](https://kaggle.com)에서 시도해보세요.
logistic regression과 관련해서 풀어야할 내용이 더 있습니다! 하지만 배우기 좋은 방식은 실험입니다. 이런 분석에 적당한 데이터셋을 찾아서 모델을 만듭니다. 무엇을 배우나요? 팁: 흥미로운 데이터셋으로 [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets)에서 시도해보세요.
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/16/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/16/)
## 검토 & 자기주도 학습

@ -1,6 +1,6 @@
# ML 모델 사용하여 Web App 만들기
이 강의에서, 이 세상에 없었던 데이터셋에 대하여 ML 모델을 훈련할 예정입니다: _UFO sightings over the past century_, sourced from [NUFORC's database](https://www.nuforc.org).
이 강의에서, 이 세상에 없었던 데이터셋에 대하여 ML 모델을 훈련할 예정입니다: _UFO sightings over the past century_, sourced from NUFORC's database.
다음을 배우게 됩니다:
@ -11,7 +11,7 @@
이러면, Flask로 웹 앱을 만들어야 합니다.
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/17/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/17/)
## 앱 만들기
@ -22,12 +22,12 @@
많은 질문들을 물어볼 필요가 있습니다:
- **웹 앱 혹은 모바일 앱인가요?** 만약 모바일 앱을 만들거나 IoT 컨텍스트에서 모델을 사용해야 되는 경우, [TensorFlow Lite](https://www.tensorflow.org/lite/)로 Android 또는 iOS 앱에서 모델을 사용할 수 있습니다.
- **모델은 어디에 있나요**? 클라우드 또는 로컬 중 어디인가요?
- **오프라인 지원**. 앱이 오프라인으로 동작하나요?
- **모델은 어디에 있나요?** 클라우드 또는 로컬 중 어디인가요?
- **오프라인 지원합니다.** 앱이 오프라인으로 동작하나요?
- **모델을 훈련시킬 때 사용하는 기술은 무엇인가요?** 선택된 기술은 사용할 도구에 영향을 줄 수 있습니다.
- **Tensor flow 사용**. 만약 TensorFlow로 모델을 훈련한다면, 예시로, 에코 시스템은 [TensorFlow.js](https://www.tensorflow.org/js/)로 웹 앱에서 사용할 TensorFlow 모델을 변환해주는 기능을 제공합니다.
- **PyTorch 사용**. 만약 [PyTorch](https://pytorch.org/) 같은 라이브러리로 모델을 만들면, [Onnx Runtime](https://www.onnxruntime.ai/)으로 할 수 있는 JavaScript 웹 앱에서 사용하기 위한 [ONNX](https://onnx.ai/) (Open Neural Network Exchange) 포맷으로 내보낼 옵션이 존재합니다. 이 옵션은 Scikit-learn-trained 모델로 이후 강의에서 알아볼 예정입니다.
- **Lobe.ai 또는 Azure Custom vision 사용**. 만약 [Lobe.ai](https://lobe.ai/) 또는 [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-15963-cxa) 같은 ML SaaS (Software as a Service) 시스템으로 모델을 훈련하게 된다면, 이 소프트웨어 타입은 온라인 애플리케이션이 클라우드에서 쿼리된 bespoke API를 만드는 것도 포함해서 많은 플랫폼의 모델들을 내보낼 방식을 제공합니다.
- **Tensor flow 사용합니다.** 만약 TensorFlow로 모델을 훈련한다면, 예시로, 에코 시스템은 [TensorFlow.js](https://www.tensorflow.org/js/)로 웹 앱에서 사용할 TensorFlow 모델을 변환해주는 기능을 제공합니다.
- **PyTorch 사용합니다.** 만약 [PyTorch](https://pytorch.org/) 같은 라이브러리로 모델을 만들면, [Onnx Runtime](https://www.onnxruntime.ai/)으로 할 수 있는 JavaScript 웹 앱에서 사용하기 위한 [ONNX](https://onnx.ai/) (Open Neural Network Exchange) 포맷으로 내보낼 옵션이 존재합니다. 이 옵션은 Scikit-learn-trained 모델로 이후 강의에서 알아볼 예정입니다.
- **Lobe.ai 또는 Azure Custom vision 사용합니다.** 만약 [Lobe.ai](https://lobe.ai/) 또는 [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-15963-cxa) 같은 ML SaaS (Software as a Service) 시스템으로 모델을 훈련하게 된다면, 이 소프트웨어 타입은 온라인 애플리케이션이 클라우드에서 쿼리된 bespoke API를 만드는 것도 포함해서 많은 플랫폼의 모델들을 내보낼 방식을 제공합니다.
또 웹 브라우저에서 모델로만 훈련할 수 있는 모든 Flask 웹 앱을 만들 수 있습니다. JavaScript 컨텍스트에서 TensorFlow.js로 마무리 지을 수 있습니다.
@ -45,8 +45,8 @@
[NUFORC](https://nuforc.org) (The National UFO Reporting Center)에서 모아둔, 80,000 UFO 목격 데이터를 이 강의에서 사용합니다. 데이터에 UFO 목격 관련한 몇 흥미로운 설명이 있습니다, 예시로 들어봅니다:
- **긴 예시 설명**. "A man emerges from a beam of light that shines on a grassy field at night and he runs towards the Texas Instruments parking lot".
- **짧은 예시 설명**. "the lights chased us".
- **긴 예시 설명합니다.** "A man emerges from a beam of light that shines on a grassy field at night and he runs towards the Texas Instruments parking lot".
- **짧은 예시 설명합니다.** "the lights chased us".
[ufos.csv](.././data/ufos.csv) 스프레드시트에는 목격된 `city`, `state``country`, 오브젝트의 `shape``latitude``longitude` 열이 포함되어 있습니다.
@ -58,7 +58,7 @@
import pandas as pd
import numpy as np
ufos = pd.read_csv('../data/ufos.csv')
ufos = pd.read_csv('./data/ufos.csv')
ufos.head()
```
@ -167,7 +167,7 @@ print(model.predict([[50,44,-12]]))
css/
templates/
notebook.ipynb
ufo-model.pk1
ufo-model.pkl
```
✅ 완성된 앱을 보려면 solution 폴더를 참조합니다
@ -187,7 +187,7 @@ print(model.predict([[50,44,-12]]))
cd web-app
```
1. 터미널에서 `pip install`을 타이핑해서, _reuirements.txt_ 에 나열된 라이브러리를 설치합니다:
1. 터미널에서 `pip install`을 타이핑해서, _requirements.txt_ 에 나열된 라이브러리를 설치합니다:
```bash
pip install -r requirements.txt
@ -335,7 +335,7 @@ Flask와 pickled 모델과 같이, 모델을 사용하는 이 방식은, 비교
노트북에서 작성하고 Flask 앱에서 모델을 가져오는 대신, Flask 앱에서 바로 모델을 훈련할 수 있습니다! 어쩌면 데이터를 정리하고, 노트북에서 Python 코드로 변환해서, `train`이라고 불리는 라우터로 앱에서 모델을 훈련합니다. 이러한 방식을 추구했을 때 장점과 단점은 무엇인가요?
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/18/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/18/)
## 검토 & 자기주도 학습

@ -19,7 +19,7 @@ Classification은 regression 기술과 공통점이 많은 [supervised learning]
Classification은 다양한 알고리즘으로 데이터 포인트의 라벨 혹은 클래스를 결정할 다른 방식을 고릅니다. 요리 데이터로, 재료 그룹을 찾아서, 전통 요리로 결정할 수 있는지 알아보려 합니다.
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/19/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/19/)
### 소개
@ -164,7 +164,7 @@ Scikit-learn은 해결하고 싶은 문제의 타입에 따라서, 데이터를
def create_ingredient_df(df):
ingredient_df = df.T.drop(['cuisine','Unnamed: 0']).sum(axis=1).to_frame('value')
ingredient_df = ingredient_df[(ingredient_df.T != 0).any()]
ingredient_df = ingredient_df.sort_values(by='value', ascending=False
ingredient_df = ingredient_df.sort_values(by='value', ascending=False,
inplace=False)
return ingredient_df
```
@ -265,12 +265,18 @@ Scikit-learn은 해결하고 싶은 문제의 타입에 따라서, 데이터를
이 데이터는 훌륭하고 깔끔하고, 균형 잡히고, 그리고 매우 맛있습니다!
1. 마지막 단계는 라벨과 features를 포함한, 밸런스 맞춘 데이터를 파일로 뽑을 수 있는 새로운 데이터프레임으로 저장합니다:
```python
transformed_df = pd.concat([transformed_label_df,transformed_feature_df],axis=1, join='outer')
```
1. `transformed_df.head()``transformed_df.info()`로 데이터를 다시 볼 수 있습니다. 다음 강의에서 쓸 수 있도록 데이터를 복사해서 저장합니다:
```python
transformed_df.head()
transformed_df.info()
transformed_df.to_csv("../data/cleaned_cuisine.csv")
transformed_df.to_csv("../data/cleaned_cuisines.csv")
```
새로운 CSV는 최상단 데이터 폴더에서 찾을 수 있습니다.
@ -281,7 +287,7 @@ Scikit-learn은 해결하고 싶은 문제의 타입에 따라서, 데이터를
해당 커리큘럼은 여러 흥미로운 데이터셋을 포함하고 있습니다. `data` 폴더를 파보면서 binary 또는 multi-class classification에 적당한 데이터셋이 포함되어 있나요? 데이터셋에 어떻게 물어보나요?
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/20/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/20/)
## 검토 & 자기주도 학습

@ -4,7 +4,7 @@
다양한 classifiers와 데이터셋을 사용해서 _재료 그룹 기반으로 주어진 국민 요리를 예측_ 합니다. 이러는 동안, classification 작업에 알고리즘을 활용할 몇 방식에 대해 자세히 배워볼 예정입니다.
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/21/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/21/)
## 준비하기
@ -16,13 +16,13 @@
```python
import pandas as pd
cuisines_df = pd.read_csv("../../data/cleaned_cuisine.csv")
cuisines_df = pd.read_csv("../../data/cleaned_cuisines.csv")
cuisines_df.head()
```
데이터는 이렇게 보입니다:
```output
| | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- |
| 0 | 0 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
@ -30,7 +30,7 @@
| 2 | 2 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 3 | 3 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 4 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
```
1. 지금부터, 여러가지 라이브러리를 가져옵니다:
@ -69,13 +69,13 @@
features는 이렇게 보입니다:
| almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | artemisia | artichoke | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini | |
| -----: | -------: | ----: | ---------: | ----: | -----------: | ------: | -------: | --------: | --------: | ---: | ------: | ----------: | ---------: | ----------------------: | ---: | ---: | ---: | ----: | -----: | -------: | --- |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | artemisia | artichoke | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| ---: | -----: | -------: | ----: | ---------: | ----: | -----------: | ------: | -------: | --------: | --------: | ---: | ------: | ----------: | ---------: | ----------------------: | ---: | ---: | ---: | ----: | -----: | -------: |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
지금부터 모델을 훈련할 준비가 되었습니다!
@ -201,13 +201,13 @@ multiclass 케이스로, 사용할 _scheme_ 와 설정할 _solver_ 를 선택해
결과가 출력됩니다 - 인도 요리가 가장 좋은 확률에 최선으로 추측됩니다.
| | 0 | | | | | | | | | | | | | | | | | | | | |
| -------: | -------: | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| indian | 0.715851 | | | | | | | | | | | | | | | | | | | | |
| chinese | 0.229475 | | | | | | | | | | | | | | | | | | | | |
| japanese | 0.029763 | | | | | | | | | | | | | | | | | | | | |
| korean | 0.017277 | | | | | | | | | | | | | | | | | | | | |
| thai | 0.007634 | | | | | | | | | | | | | | | | | | | | |
| | 0 |
| -------: | -------: |
| indian | 0.715851 |
| chinese | 0.229475 |
| japanese | 0.029763 |
| korean | 0.017277 |
| thai | 0.007634 |
✅ 모델이 이를 인도 요리라고 확신하는 이유를 설명할 수 있나요?
@ -218,22 +218,22 @@ multiclass 케이스로, 사용할 _scheme_ 와 설정할 _solver_ 를 선택해
print(classification_report(y_test,y_pred))
```
| precision | recall | f1-score | support | | | | | | | | | | | | | | | | | | |
| ------------ | ------ | -------- | ------- | ---- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| chinese | 0.73 | 0.71 | 0.72 | 229 | | | | | | | | | | | | | | | | | |
| indian | 0.91 | 0.93 | 0.92 | 254 | | | | | | | | | | | | | | | | | |
| japanese | 0.70 | 0.75 | 0.72 | 220 | | | | | | | | | | | | | | | | | |
| korean | 0.86 | 0.76 | 0.81 | 242 | | | | | | | | | | | | | | | | | |
| thai | 0.79 | 0.85 | 0.82 | 254 | | | | | | | | | | | | | | | | | |
| accuracy | 0.80 | 1199 | | | | | | | | | | | | | | | | | | | |
| macro avg | 0.80 | 0.80 | 0.80 | 1199 | | | | | | | | | | | | | | | | | |
| weighted avg | 0.80 | 0.80 | 0.80 | 1199 | | | | | | | | | | | | | | | | | |
| | precision | recall | f1-score | support |
| ------------ | --------- | ------ | -------- | ------- |
| chinese | 0.73 | 0.71 | 0.72 | 229 |
| indian | 0.91 | 0.93 | 0.92 | 254 |
| japanese | 0.70 | 0.75 | 0.72 | 220 |
| korean | 0.86 | 0.76 | 0.81 | 242 |
| thai | 0.79 | 0.85 | 0.82 | 254 |
| accuracy | 0.80 | 1199 | | |
| macro avg | 0.80 | 0.80 | 0.80 | 1199 |
| weighted avg | 0.80 | 0.80 | 0.80 | 1199 |
## 🚀 도전
이 강의에서, 정리된 데이터로 재료의 시리즈를 기반으로 국민 요리를 예측할 수 있는 머신러닝 모델을 만들었습니다. 시간을 투자해서 Scikit-learn이 데이터를 분류하기 위해 제공하는 다양한 옵션을 읽어봅니다. 무대 뒤에서 생기는 일을 이해하기 위해서 'solver'의 개념을 깊게 파봅니다.
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/22/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/22/)
## 검토 & 자기주도 학습
[this lesson](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)에서 logistic regression 뒤의 수학에 대해서 더 자세히 파봅니다.

@ -2,11 +2,11 @@
두번째 classification 강의에서, 숫자 데이터를 분류하는 더 많은 방식을 알아봅니다. 다른 것보다 하나의 classifier를 선택하는 파급효과도 배우게 됩니다.
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/23/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/23/)
### 필요 조건
직전 강의를 완료하고 4강 폴더의 최상단 `data` 폴더에 _cleaned_cuisine.csv_ 라고 불리는 정리된 데이터셋이 있다고 가정합니다.
직전 강의를 완료하고 4강 폴더의 최상단 `data` 폴더에 _cleaned_cuisines.csv_ 라고 불리는 정리된 데이터셋이 있다고 가정합니다.
### 준비하기
@ -224,7 +224,7 @@ weighted avg 0.73 0.72 0.72 1199
각 기술에는 트윅할 수 있는 많은 수의 파라미터가 존재합니다. 각 기본 파라미터를 조사하고 파라미터를 조절헤서 모델 품질에 어떤 의미가 부여되는지 생각합니다.
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/24/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/24/)
## 검토 & 자기주도 학습

@ -8,7 +8,7 @@
> 🎥 영상 보려면 이미지 클릭: Andrew Ng introduces recommendation system design
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/25/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/25/)
이 강의에서 다음을 배우게 됩니다:
@ -31,7 +31,7 @@ Applied ML 시스템을 만드는 것은 비지니스 시스템에서 이 기술
1. 유용한 라이브러리를 가져와서 시작합니다:
```python
pip install skl2onnx
!pip install skl2onnx
import pandas as pd
```
@ -40,7 +40,7 @@ Applied ML 시스템을 만드는 것은 비지니스 시스템에서 이 기술
1. 그리고, `read_csv()` 사용해서 CSV 파일을 읽어보면, 이전 강의에서 했던 같은 방식으로 데이터를 작업합니다:
```python
data = pd.read_csv('../data/cleaned_cuisine.csv')
data = pd.read_csv('../data/cleaned_cuisines.csv')
data.head()
```
@ -312,7 +312,7 @@ Netron은 모델을 보게 도와주는 도구입니다.
## 애플리케이션 테스트하기
index.html 파일의 폴더에서 Visual Studio Code로 터미널 세션을 엽니다. 전역적으로 `[http-server](https://www.npmjs.com/package/http-server)`를 설치했는지 확인하고, 프롬프트에 `http-server`를 타이핑합니다. 로컬 호스트로 열고 웹 앱을 볼 수 있습니다. 여러 재료를 기반으로 추천된 요리를 확인합니다:
index.html 파일의 폴더에서 Visual Studio Code로 터미널 세션을 엽니다. 전역적으로 [http-server](https://www.npmjs.com/package/http-server)를 설치했는지 확인하고, 프롬프트에 `http-server`를 타이핑합니다. 로컬 호스트로 열고 웹 앱을 볼 수 있습니다. 여러 재료를 기반으로 추천된 요리를 확인합니다:
![ingredient web app](../images/web-app.png)
@ -322,7 +322,7 @@ index.html 파일의 폴더에서 Visual Studio Code로 터미널 세션을 엽
이 웹 앱은 매우 작아서, [ingredient_indexes](../../data/ingredient_indexes.csv) 데이터에서 성분과 인덱스로 계속 만듭니다. 주어진 국민 요리를 만드려면 어떤 풍미 조합으로 작업해야 되나요?
## [Post-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/26/)
## [Post-lecture quiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/26/)
## 검토 & 자기주도 학습

@ -6,7 +6,7 @@ Clustering이 데이터셋에 라벨을 붙이지 않거나 입력이 미리 정
> 🎥 영상을 보려면 이미지 클릭. While you're studying machine learning with clustering, enjoy some Nigerian Dance Hall tracks - this is a highly rated song from 2014 by PSquare.
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/27/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/27/)
### 소개
@ -108,7 +108,7 @@ Clustering이 데이터셋에 라벨을 붙이지 않거나 입력이 미리 정
1. 좋은 데이터 시각화를 위해서 `Seaborn` 패키지를 가져옵니다.
```python
pip install seaborn
!pip install seaborn
```
1. _nigerian-songs.csv_ 의 노래 데이터를 추가합니다. 일부 노래 데이터가 있는 데이터 프레임을 불러옵니다. 라이브러리를 가져오고 데이터를 덤프해서 찾아봅니다:
@ -322,7 +322,7 @@ Clustering이 데이터셋에 라벨을 붙이지 않거나 입력이 미리 정
다음 강의를 준비하기 위해서, 프로덕션 환경에서 찾아서 사용할 수 있는 다양한 clustering 알고리즘을 차트로 만듭니다. clustering은 어떤 문제를 해결하려고 시도하나요?
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/28/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/28/)
## 검토 & 자기주도 학습

@ -4,7 +4,7 @@
> 🎥 영상을 보려면 이미지 클릭: Andrew Ng explains clustering
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/29/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/29/)
이 강의에서, Scikit-learn과 함께 이전에 가져온 나이지리아 음악 데이터셋으로 클러스터 제작 방식을 배울 예정입니다. Clustering을 위한 K-Means 기초를 다루게 됩니다. 참고로, 이전 강의에서 배웠던대로, 클러스터로 작업하는 여러 방식이 있고 데이터를 기반한 방식도 있습니다. 가장 일반적 clustering 기술인 K-Means을 시도해보려고 합니다. 시작해봅니다!
@ -238,11 +238,11 @@ Variance는 "the average of the squared differences from the Mean."으로 정의
힌트: 데이터를 더 키워봅니다. 가까운 범위 조건에 비슷한 데이터 열을 만들고자 추가하는 표준 스케일링 코드를 노트북에 주석으로 남겼습니다. silhouette 점수가 낮아지는 동안, elbow 그래프의 'kink'가 주름 펴지는 것을 볼 수 있습니다. 데이터를 조정하지 않고 남기면 덜 분산된 데이터가 더 많은 가중치로 나를 수 있다는 이유입니다. [here](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226) 이 문제를 조금 더 읽어봅니다.
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/30/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/30/)
## 검토 & 자기주도 학습
Stanford의 K-Means 시뮬레이터를 찾아봅니다 [here](https://stanford.edu/class/engr108/visualizations/kmeans/kmeans.html). 이 도구로 샘플 데이터 포인트를 시각화하고 무게 중심을 결정할 수 있습니다. 새로운 데이터로, 'update'를 클릭해서 수렴을 찾는데 얼마나 오래 걸리는지 봅니다. 데이터의 랜덤성, 클러스터 수와 무게 중심 수를 고칠 수 있습니다. 데이터를 그룹으로 묶기 위한 아이디어를 얻는 게 도움이 되나요?
[such as this one](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/)같은 K-Means 시뮬레이터를 찾아봅니다. 이 도구로 샘플 데이터 포인트를 시각화하고 무게 중심을 결정할 수 있습니다. 데이터의 랜덤성, 클러스터 수와 무게 중심 수를 고칠 수 있습니다. 데이터를 그룹으로 묶기 위한 아이디어를 얻는 게 도움이 되나요?
또한, Stanford의 [this handout on k-means](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html)을 찾아봅니다.

@ -2,7 +2,7 @@
이 강의애서 *computational linguistics* 하위인, *natural language processing*의 간단한 역사와 중요 컨셉을 다룹니다.
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/31/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/31/)
## 소개
@ -69,7 +69,7 @@ Turing이 1950년에 *artificial intelligence*를 연구하고 있을 때, 만
### Eliza 개발
1960년에 *Joseph Weizenbaum*으로 불린 MIT 사이언티스트는, 사람의 질문을 답변하고 답변을 이해하는 모습을 주는 컴퓨터 'therapist' [*Eliza*](https:/wikipedia.org/wiki/ELIZA)를 개발했습니다. 하지만, Eliza는 문장을 파싱하고 특정 문법 구조와 키워드를 식별하여 이유있는 답변을 준다고 할 수 있지만, 문장을 *understand*한다고 말할 수 없습니다. 만약 Eliza가 "**I am** <u>sad</u>" 포맷과 유사한 문장을 제시받으면 문장에서 단어를 재배열하고 대치해서 "How long have **you been** <u>sad</u>" 형태로 응답할 수 있습니다.
1960년에 *Joseph Weizenbaum*으로 불린 MIT 사이언티스트는, 사람의 질문을 답변하고 답변을 이해하는 모습을 주는 컴퓨터 'therapist' [*Eliza*](https://wikipedia.org/wiki/ELIZA)를 개발했습니다. 하지만, Eliza는 문장을 파싱하고 특정 문법 구조와 키워드를 식별하여 이유있는 답변을 준다고 할 수 있지만, 문장을 *understand*한다고 말할 수 없습니다. 만약 Eliza가 "**I am** <u>sad</u>" 포맷과 유사한 문장을 제시받으면 문장에서 단어를 재배열하고 대치해서 "How long have **you been** <u>sad</u>" 형태로 응답할 수 있습니다.
Eliza가 문장을 이해하고 다음 질문을 대답하는 것처럼 인상을 줬지만, 실제로는, 시제를 바꾸고 일부 단어를 추가했을 뿐입니다. 만약 Eliza가 응답할 키워드를 식별하지 못하는 경우, 여러 다른 문장에 적용할 수 있는 랜덤 응답으로 대신합니다. 만약 사용자가 "**You are** a <u>bicycle</u>"라고 작성하면 더 이유있는 응답 대신에, "How long have **I been** a <u>bicycle</u>?"처럼 답변하므로, Eliza는 쉽게 속을 수 있습니다.
@ -149,7 +149,7 @@ Eliza와 같은, 대화 봇은, 사용자 입력을 유도해서 지능적으로
다음 강의에서, natural language와 머신러닝을 분석하는 여러 다른 접근 방식에 대해 배울 예정입니다.
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/32/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/32/)
## 검토 & 자기주도 학습

@ -2,7 +2,7 @@
대부분 *natural language processing* 작업으로, 처리한 텍스트를 분해하고, 검사하고, 그리고 결과를 저장하거나 룰과 데이터셋을 서로 참조했습니다. 이 작업들로, 프로그래머가 _meaning_ 또는 _intent_ 또는 오직 텍스트에 있는 용어와 단어의 _frequency_ 만 끌어낼 수 있게 합니다.
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/33/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/33/)
텍스트를 처리하며 사용했던 일반적인 기술을 찾아봅니다. 머신러닝에 결합된, 이 기술은 효율적으로 많은 텍스트를 분석하는데 도와줍니다. 그러나, 이 작업에 ML을 적용하기 전에, NLP 스페셜리스트가 일으킨 문제를 이해합니다.
@ -203,7 +203,7 @@ It was nice talking to you, goodbye!
이전의 지식 점검에서 작업하고 구현합니다. 친구에게 봇을 테스트합니다. 그들을 속일 수 있나요? 좀 더 '믿을 수'있게 봇을 만들 수 있나요?
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/34/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/34/)
## 검토 & 자기주도 학습

@ -2,7 +2,7 @@
이전 강의에서 noun phrase 추출하는 기초 NLP 작업을 하기 위해 ML behind-the-scenes을 포함한 라이브러리인, `TextBlob`으로 기본적인 봇을 만드는 방식을 배웠습니다. 컴퓨터 언어학에서 다른 중요한 도전은 구두나 다른 언어로 문장을 정확하게 _translation_ 하는 것입니다.
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/35/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/35/)
번역은 천여 개 언어와 각자 많이 다른 문법 규칙이 있다는 사실에 의해서 합쳐진 매우 어려운 문제입니다. 한 접근 방식은 영어처럼, 한 언어의 형식적인 문법 규칙을 비-언어 종속 구조로 변환하고, 다른 언어로 변환하면서 번역합니다. 이 접근 방식은 다음 단계로 진행된다는 점을 의미합니다:
@ -144,7 +144,7 @@ Darcy, as well as Elizabeth, really loved them; and they were
1. 만약 polarity가 1 또는 -1이면 문장을 배열이나 positive 또는 negative 메시지 리스트에 저장합니다
5. 마지막으로, (각자) 모든 긍정적인 문장과 부정적인 문장, 각 수를 출력합니다
여기에 샘플 [solution](../solutions/notebook.ipynb)이 있습니다.
여기에 샘플 [solution](../solution/notebook.ipynb)이 있습니다.
✅ 지식 점검
@ -177,7 +177,7 @@ Darcy, as well as Elizabeth, really loved them; and they were
사용자 입력으로 다른 features를 추출해서 Marvin을 더 좋게 만들 수 있나요?
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/36/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/36/)
## 검토 & 자기주도 학습

@ -6,7 +6,7 @@
- 이미 존재하는 열을 기반으로 일부 새로운 데이터를 계산하는 방식
- 최종 도전에서 사용하고자 결과 데이터셋을 저장하는 방식
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/37/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/37/)
### 소개
@ -397,7 +397,7 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
이전 강의에서 본 것처럼, 이 강의에서 작업하기 전 데이터와 약점을 이해하는 것이 얼마나 치명적이게 중요한지 보여줍니다. 특별히, 텍스트-기반 데이터는, 조심히 조사해야 합니다. 다양한 text-heavy 데이터셋을 파보고 모델에서 치우치거나 편향된 감정으로 끼워놓은 영역을 찾을 수 있는지 확인합니다.
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/38/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/38/)
## 검토 & 자기주도 학습

@ -2,7 +2,7 @@
지금까지 자세히 데이터셋을 살펴보았으며, 열을 필터링하고 데이터셋으로 NLP 기술을 사용하여 호텔에 대한 새로운 시각을 얻게 될 시간입니다.
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/39/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/39/)
### 필터링 & 감정 분석 작업
@ -348,20 +348,20 @@ print("Saving results to Hotel_Reviews_NLP.csv")
df.to_csv(r"../data/Hotel_Reviews_NLP.csv", index = False)
```
(Hotel_Reviews_Filtered.csv 파일 만들어서 [your filtering notebook](solution/notebook-filtering.ipynb) 실행한 후에) [the analysis notebook](solution/notebook-sentiment-analysis.ipynb)으로 전체 코드를 실행해야 합니다.
(Hotel_Reviews_Filtered.csv 파일 만들어서 [your filtering notebook](../solution/1-notebook.ipynb) 실행한 후에) [the analysis notebook](../solution/3-notebook.ipynb)으로 전체 코드를 실행해야 합니다.
검토하는, 단계는 이렇습니다:
1. 원본 데이터셋 **Hotel_Reviews.csv** 파일은 이전 강의에서 [the explorer notebook](../../4-Hotel-Reviews-1/solution/notebook-explorer.ipynb)으로 살펴보았습니다
2. Hotel_Reviews.csv는 [the filtering notebook](../solution/notebook-filtering.ipynb)에서 필터링되고 **Hotel_Reviews_Filtered.csv**에 결과로 남습니다
3. Hotel_Reviews_Filtered.csv는 [the sentiment analysis notebook](../solution/notebook-sentiment-analysis.ipynb)에서 처리되어 **Hotel_Reviews_NLP.csv**에 결과로 남습니다
1. 원본 데이터셋 **Hotel_Reviews.csv** 파일은 이전 강의에서 [the explorer notebook](../../4-Hotel-Reviews-1/solution/notebook.ipynb)으로 살펴보았습니다
2. Hotel_Reviews.csv는 [the filtering notebook](../solution/1-notebook.ipynb)에서 필터링되고 **Hotel_Reviews_Filtered.csv**에 결과로 남습니다
3. Hotel_Reviews_Filtered.csv는 [the sentiment analysis notebook](../solution/3-notebook.ipynb)에서 처리되어 **Hotel_Reviews_NLP.csv**에 결과로 남습니다
4. 다음 NLP 도전에서 Hotel_Reviews_NLP.csv를 사용합니다
### 결론
시작했을 때, 열과 데이터로 이루어진 데이터셋이 었었지만 모두 다 확인되거나 사용되지 않았습니다. 데이터를 살펴보았으며, 필요없는 것은 필터링해서 지웠고, 유용하게 태그를 변환했고, 평균을 계산했으며, 일부 감정 열을 추가하고 기대하면서, 자연어 처리에 대한 일부 흥미로운 사실을 학습했습니다.
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/40/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/40/)
## 도전

@ -10,7 +10,7 @@
> 🎥 이미지를 눌러서 time series forecasting에 대한 비디오를 봅니다
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/41/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/41/)
가격, 재고, 그리고 공급과 연관된 이슈에 직접 적용하게 된다면, 비지니스에 실제로 가치있는 유용하고 흥미로운 필드가 됩니다. 딥러닝 기술은 미래의 성능을 잘 예측하기 위해 더 많은 인사이트를 얻고자 사용했지만, time series forecasting은 classic ML 기술에서 지속적으로 많은 정보를 얻는 필드입니다.
@ -175,7 +175,7 @@ seasonality의 독립적으로, 1년 보다 긴 경제 침체같은 long-run cyc
time series forecasting에서 얻을 수 있다고 생각할 수 있는 모든 산업과 조사 영역의 리스트를 만듭니다. 예술에 이 기술을 적용할 수 있다고 생각하나요? 경제학에서? 생태학에서? 리테일에서? 산업에서? 금융에서? 또 다른 곳은 어딘가요?
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/42/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/42/)
## 검토 & 자기주도 학습

@ -6,7 +6,7 @@
> 🎥 영상을 보려면 이미지 클릭: A brief introduction to ARIMA models. The example is done in R, but the concepts are universal.
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/43/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/43/)
## 소개
@ -224,7 +224,7 @@ Walk-forward 검사는 time series 모델 평가의 최적 표준이고 이 프
```python
test_shifted = test.copy()
for t in range(1, HORIZON):
for t in range(1, HORIZON + 1):
test_shifted['load+'+str(t)] = test_shifted['load'].shift(-t, freq='H')
test_shifted = test_shifted.dropna(how='any')
@ -295,7 +295,7 @@ Walk-forward 검사는 time series 모델 평가의 최적 표준이고 이 프
eval_df.head()
```
```output
output
| | | timestamp | h | prediction | actual |
| --- | ---------- | --------- | --- | ---------- | -------- |
| 0 | 2014-12-30 | 00:00:00 | t+1 | 3,008.74 | 3,023.00 |
@ -303,7 +303,6 @@ Walk-forward 검사는 time series 모델 평가의 최적 표준이고 이 프
| 2 | 2014-12-30 | 02:00:00 | t+1 | 2,900.17 | 2,899.00 |
| 3 | 2014-12-30 | 03:00:00 | t+1 | 2,917.69 | 2,886.00 |
| 4 | 2014-12-30 | 04:00:00 | t+1 | 2,946.99 | 2,963.00 |
```
실제 부하와 비교해서, 시간당 데이터의 예측을 관찰해봅니다. 어느정도 정확한가요?
@ -384,7 +383,7 @@ Walk-forward 검사는 time series 모델 평가의 최적 표준이고 이 프
Time Series 모델의 정확도를 테스트할 방식을 파봅니다. 이 강의에서 MAPE을 다루지만, 사용할 다른 방식이 있나요? 조사해보고 첨언해봅니다. 도움을 받을 수 있는 문서는 [here](https://otexts.com/fpp2/accuracy.html)에서 찾을 수 있습니다.
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/44/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/44/)
## 검토 & 자기주도 학습

@ -11,7 +11,7 @@ reinforcement learning과 (게임) 시뮬레이터로, 살아남고 가능한
> 🎥 Dmitry discuss Reinforcement Learning 들으려면 이미지 클릭
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/45/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/45/)
## 전제조건 및 설정
@ -230,7 +230,7 @@ Q-Table의 모든 값이 같다면, 이 케이스에서 - 0.25 으로 초기화
**epochs**라고 불리는, 5000번 실험으로 학습 알고리즘을 실행합니다: (code block 8)
```python
```python
for epoch in range(5000):
# Pick initial point
@ -255,7 +255,7 @@ Q-Table의 모든 값이 같다면, 이 케이스에서 - 0.25 으로 초기화
ai = action_idx[a]
Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
n+=1
```
```
이 알고리즘이 실행된 후, Q-Table은 각 단계에 다른 액션의 attractiveness를 정의하는 값으로 업데이트해야 합니다. 움직이고 싶은 방향의 방향으로 각 셀에 백터를 plot해서 Q-Table을 시각화할 수 있습니다. 단순하게, 화살표 머리 대신 작은 원을 그립니다.
@ -315,7 +315,7 @@ print_statistics(qpolicy)
전체적으로, 학습 프로세스의 성공과 퀄리티는 학습률, 학습률 감소, 그리고 감가율처럼 파라미터에 기반하는게 상당히 중요하다는 점을 기억합니다. 훈련하면서 최적화하면 (예시로, Q-Table coefficients), **parameters**와 구별해서, 가끔 **hyperparameters**라고 불립니다. 최고의 hyperparameter 값을 찾는 프로세스는 **hyperparameter optimization**이라고 불리며, 별도의 토픽이 있을 만합니다.
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/46/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/46/)
## 과제

@ -2,7 +2,7 @@
이전 강의에서 풀었던 문제는 장난감 문제처럼 보일 수 있고, 실제 시나리오에서 진짜 적용되지 않습니다. 체스나 바둑을 즐기는 것을 포함한 - 시나리오에 많은 실제 문제와 공유하기 때문에, 이 케이스는 아닙니다. 주어진 룰과 **discrete state**를 보드가 가지고 있기 때문에 비슷합니다.
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/47/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/47/)
## 소개
@ -329,7 +329,7 @@ env.close()
> **Task 4**: 여기에는 각 단계에서 최상의 액션을 선택하지 않고, 일치하는 확률 분포로 샘플링했습니다. 가장 높은 Q-Table 값으로, 항상 최상의 액션을 선택하면 더 합리적인가요? `np.argmax` 함수로 높은 Q-Table 값에 해당되는 액션 숫자를 찾아서 마무리할 수 있습니다. 이 전략을 구현하고 밸런스를 개선했는지 봅니다.
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/48/)
## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/48/)
## 과제: [Train a Mountain Car](../assignment.md)

@ -8,7 +8,7 @@
보통 딥러닝을 활용하는, AI로 산업에 많은 관심이 모이지만, 여전히 classical 머신러닝 모델의 가치있는 애플리케이션도 존재합니다. 오늘 이 애플리케이션 일부를 사용할 수도 있습니다! 이 강의에서, 8개 다양한 산업과 subject-matter 도메인에서 이 모델 타입으로 애플리케이션의 성능, 신뢰, 지능과, 사용자 가치를 어떻게 더 높일지 탐색할 예정입니다.
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/49/)
## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/49/)
## 💰 금융
@ -152,7 +152,7 @@ https://ai.inqline.com/machine-learning-for-marketing-customer-segmentation/
이 커리큘럼에서 배웠던 일부 기술로 이익을 낼 다른 색터를 식별하고, ML을 어떻게 사용하는지 탐색합니다.
## [강의 후 학습](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/50/)
## [강의 후 학습](https://white-water-09ec41f0f.azurestaticapps.net/quiz/50/)
## 검토 & 자기주도 학습

Loading…
Cancel
Save