FIX : fix stacked changes for korean translation

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

@ -4,7 +4,7 @@
> 🎥 머신러닝, AI 그리고 딥러닝의 차이를 설명하는 영상을 보려면 위 이미지를 클릭합니다. > 🎥 머신러닝, 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)에 대한 기본적인 이해를 해야 좋습니다. - **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/)도 있습니다. - **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 주셔도 됩니다 😊) - **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, 딥러닝, 그리고 데이터 사이언스의 차이를 이해합시다. 각 기술들이 잘 해결할 수 있는 문제에 대해 아이디어를 합쳐보세요. 종이에 그리거나, [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/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) [Get up and running](../assignment.md)

@ -3,7 +3,7 @@
![Summary of History of machine learning in a sketchnote](../../../sketchnotes/ml-history.png) ![Summary of History of machine learning in a sketchnote](../../../sketchnotes/ml-history.png)
> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac) > 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) ![Summary of Fairness in Machine Learning in a sketchnote](../../../sketchnotes/ml-fairness.png)
> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac) > 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'와 같은 기초 개념을 탐색합니다. - '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) 강의에서 본 것처럼, 데이터가 주어진 작업에서 잘 수행하지 못할 수 있습니다! ✅ 데이터를 수집하고 처리하면, 그 모양이 의도한 질문을 해결할 수 있는 지 잠시 봅니다. [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)) 🎓 **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 실무자의 단계를 반영한 플로우를 그려보세요. 프로세스에서 지금 어디에 있는 지 보이나요? 어려운 내용을 예상할 수 있나요? 어떤게 쉬울까요? 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) > 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 코드를 추가합니다. 다음으로, 약간의 Python 코드를 추가합니다.
1. 코드 블록에서 **print("hello notebook'")** 입력합니다. 1. 코드 블록에서 **print('hello notebook')** 입력합니다.
1. 코드를 실행하려면 화살표를 선택합니다. 1. 코드를 실행하려면 화살표를 선택합니다.
출력된 구문이 보여야 합니다: 출력된 구문이 보여야 합니다:
@ -97,7 +97,7 @@ Scikit-learn 사용하면 올바르게 모델을 만들고 사용하기 위해
- **matplotlib**. 유용한 [graphing tool](https://matplotlib.org/)이며 line plot을 만들 때 사용합니다. - **matplotlib**. 유용한 [graphing tool](https://matplotlib.org/)이며 line plot을 만들 때 사용합니다.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html)는 Python애서 숫자를 핸들링할 때 유용한 라이브러리입니다. - **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 합니다. 작업을 도움받으려면 라이브러리를 Import 합니다.
@ -183,6 +183,9 @@ s1 tc: T-Cells (a type of white blood cells)
```python ```python
plt.scatter(X_test, y_test, color='black') plt.scatter(X_test, y_test, color='black')
plt.plot(X_test, y_pred, color='blue', linewidth=3) 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() plt.show()
``` ```
@ -197,7 +200,7 @@ s1 tc: T-Cells (a type of white blood cells)
이 데이터셋은 다른 변수를 Plot 합니다. 힌트: 이 라인을 수정합니다: `X = X[:, np.newaxis, 2]`. 이 데이터셋의 타겟이 주어질 때, 질병으로 당뇨가 진행되면 어떤 것을 탐색할 수 있나요? 이 데이터셋은 다른 변수를 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 모델 만들기: 데이터 준비와 시각화 # Scikit-learn 사용한 regression 모델 만들기: 데이터 준비와 시각화
> ![Data visualization infographic](.././images/data-visualization.png) > ![Data visualization infographic](.././images/data-visualization.png)
> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) > 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 ```python
import pandas as pd import pandas as pd
pumpkins = pd.read_csv('../../data/US-pumpkins.csv') pumpkins = pd.read_csv('../data/US-pumpkins.csv')
pumpkins.head() pumpkins.head()
``` ```
@ -190,7 +191,7 @@ Jupyter notebooks에서 잘 작동하는 데이터 시각화 라이브러리는
Matplotlib에서 제공하는 다양한 시각화 타입을 찾아보세요. regression 문제에 가장 적당한 타입은 무엇인가요? 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) ![Linear vs polynomial regression infographic](.././images/linear-polynomial.png)
> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) > 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 ```python
from sklearn.preprocessing import LabelEncoder 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) 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) ![Logistic vs. linear regression infographic](.././images/logistic-linear.png)
> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) > 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 로 긍정 및 부정을 나타내서, 예측의 정확도를 측정하는 테이블입니다. > 🎓 '[confusion matrix](https://wikipedia.org/wiki/Confusion_matrix)' (또는 'error matrix')는 모델의 true 대 false 로 긍정 및 부정을 나타내서, 예측의 정확도를 측정하는 테이블입니다.
1. `confusin_matrix()` 불러서, confusion metrics를 사용합니다: 1. `confusion_matrix()` 불러서, confusion metrics를 사용합니다:
```python ```python
from sklearn.metrics import confusion_matrix from sklearn.metrics import confusion_matrix
@ -223,26 +223,35 @@ binary classification을 찾는 모델을 만드는 건 Scikit-learn에서 놀
[ 33, 0]]) [ 33, 0]])
``` ```
어떤 일이 생기나요? 모델이 2개의 binary categories 인, 'pumpkin' 카테고리와 'not-a-pumpkin' 카테고리 사이에 아이템을 분류하도록 질문받았다고 가정합니다. Scikit-learn에서, confusion matrices 행은 (axis 0) 실제 라벨이고 열은 (axis 1) 예측된 라벨입니다.
- 만약 모델이 무언가를 호박으로 예측하고 실제로 'pumpkin' 카테고리에 있다면 true positive라고 부르며, 좌측 상단의 숫자로 보여집니다. | | 0 | 1 |
- 만약 모델이 무언가를 호박으로 예측하지 않았는데 실제 'pumpkin' 카테고리에 있다면 false positive라고 부르며, 우측 상단의 숫자로 보여집니다. | :---: | :---: | :---: |
- 만약 모델이 무언가를 호박으로 예측하지만 실제로 'not-a-pumpkin' 카테고리에 있다면 false negative라고 부르며, 좌측 하단의 숫자로 보여집니다. | 0 | TN | FP |
- 만약 모델이 무언가를 호박으로 예측하지 않았고 'not-a-pumpkin' 카테고리에 있다면 true negative라고 부르며, 우측 하단의 숫자로 보여집니다. | 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은 낮은 숫자을 가지는 게 더 좋습니다, 모델의 성능이 더 좋다는 것을 의미합니다. 예상한 것처럼 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도 있습니다. ✅ Q: confusion matrix에 따르면, 모델은 어떻게 되나요? A: 나쁘지 않습니다; true positives의 많은 숫자뿐만 아니라 몇 false negatives도 있습니다.
confusion matrix TP/TN 과 FP/FN의 맵핑으로 미리 본 용어에 대하여 다시 봅니다: 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 🎓 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 모델 사용하여 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로 웹 앱을 만들어야 합니다. 이러면, 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 앱에서 모델을 사용할 수 있습니다. - **웹 앱 혹은 모바일 앱인가요?** 만약 모바일 앱을 만들거나 IoT 컨텍스트에서 모델을 사용해야 되는 경우, [TensorFlow Lite](https://www.tensorflow.org/lite/)로 Android 또는 iOS 앱에서 모델을 사용할 수 있습니다.
- **모델은 어디에 있나요**? 클라우드 또는 로컬 중 어디인가요? - **모델은 어디에 있나요?** 클라우드 또는 로컬 중 어디인가요?
- **오프라인 지원**. 앱이 오프라인으로 동작하나요? - **오프라인 지원합니다.** 앱이 오프라인으로 동작하나요?
- **모델을 훈련시킬 때 사용하는 기술은 무엇인가요?** 선택된 기술은 사용할 도구에 영향을 줄 수 있습니다. - **모델을 훈련시킬 때 사용하는 기술은 무엇인가요?** 선택된 기술은 사용할 도구에 영향을 줄 수 있습니다.
- **Tensor flow 사용**. 만약 TensorFlow로 모델을 훈련한다면, 예시로, 에코 시스템은 [TensorFlow.js](https://www.tensorflow.org/js/)로 웹 앱에서 사용할 TensorFlow 모델을 변환해주는 기능을 제공합니다. - **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 모델로 이후 강의에서 알아볼 예정입니다. - **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를 만드는 것도 포함해서 많은 플랫폼의 모델들을 내보낼 방식을 제공합니다. - **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로 마무리 지을 수 있습니다. 또 웹 브라우저에서 모델로만 훈련할 수 있는 모든 Flask 웹 앱을 만들 수 있습니다. JavaScript 컨텍스트에서 TensorFlow.js로 마무리 지을 수 있습니다.
@ -45,8 +45,8 @@
[NUFORC](https://nuforc.org) (The National UFO Reporting Center)에서 모아둔, 80,000 UFO 목격 데이터를 이 강의에서 사용합니다. 데이터에 UFO 목격 관련한 몇 흥미로운 설명이 있습니다, 예시로 들어봅니다: [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". - **긴 예시 설명합니다.** "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". - **짧은 예시 설명합니다.** "the lights chased us".
[ufos.csv](.././data/ufos.csv) 스프레드시트에는 목격된 `city`, `state``country`, 오브젝트의 `shape``latitude``longitude` 열이 포함되어 있습니다. [ufos.csv](.././data/ufos.csv) 스프레드시트에는 목격된 `city`, `state``country`, 오브젝트의 `shape``latitude``longitude` 열이 포함되어 있습니다.
@ -58,7 +58,7 @@
import pandas as pd import pandas as pd
import numpy as np import numpy as np
ufos = pd.read_csv('../data/ufos.csv') ufos = pd.read_csv('./data/ufos.csv')
ufos.head() ufos.head()
``` ```
@ -167,7 +167,7 @@ print(model.predict([[50,44,-12]]))
css/ css/
templates/ templates/
notebook.ipynb notebook.ipynb
ufo-model.pk1 ufo-model.pkl
``` ```
✅ 완성된 앱을 보려면 solution 폴더를 참조합니다 ✅ 완성된 앱을 보려면 solution 폴더를 참조합니다
@ -187,7 +187,7 @@ print(model.predict([[50,44,-12]]))
cd web-app cd web-app
``` ```
1. 터미널에서 `pip install`을 타이핑해서, _reuirements.txt_ 에 나열된 라이브러리를 설치합니다: 1. 터미널에서 `pip install`을 타이핑해서, _requirements.txt_ 에 나열된 라이브러리를 설치합니다:
```bash ```bash
pip install -r requirements.txt pip install -r requirements.txt
@ -335,7 +335,7 @@ Flask와 pickled 모델과 같이, 모델을 사용하는 이 방식은, 비교
노트북에서 작성하고 Flask 앱에서 모델을 가져오는 대신, Flask 앱에서 바로 모델을 훈련할 수 있습니다! 어쩌면 데이터를 정리하고, 노트북에서 Python 코드로 변환해서, `train`이라고 불리는 라우터로 앱에서 모델을 훈련합니다. 이러한 방식을 추구했을 때 장점과 단점은 무엇인가요? 노트북에서 작성하고 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은 다양한 알고리즘으로 데이터 포인트의 라벨 혹은 클래스를 결정할 다른 방식을 고릅니다. 요리 데이터로, 재료 그룹을 찾아서, 전통 요리로 결정할 수 있는지 알아보려 합니다. 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): def create_ingredient_df(df):
ingredient_df = df.T.drop(['cuisine','Unnamed: 0']).sum(axis=1).to_frame('value') 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[(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) inplace=False)
return ingredient_df 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()`로 데이터를 다시 볼 수 있습니다. 다음 강의에서 쓸 수 있도록 데이터를 복사해서 저장합니다: 1. `transformed_df.head()``transformed_df.info()`로 데이터를 다시 볼 수 있습니다. 다음 강의에서 쓸 수 있도록 데이터를 복사해서 저장합니다:
```python ```python
transformed_df.head() transformed_df.head()
transformed_df.info() transformed_df.info()
transformed_df.to_csv("../data/cleaned_cuisine.csv") transformed_df.to_csv("../data/cleaned_cuisines.csv")
``` ```
새로운 CSV는 최상단 데이터 폴더에서 찾을 수 있습니다. 새로운 CSV는 최상단 데이터 폴더에서 찾을 수 있습니다.
@ -281,7 +287,7 @@ Scikit-learn은 해결하고 싶은 문제의 타입에 따라서, 데이터를
해당 커리큘럼은 여러 흥미로운 데이터셋을 포함하고 있습니다. `data` 폴더를 파보면서 binary 또는 multi-class classification에 적당한 데이터셋이 포함되어 있나요? 데이터셋에 어떻게 물어보나요? 해당 커리큘럼은 여러 흥미로운 데이터셋을 포함하고 있습니다. `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 작업에 알고리즘을 활용할 몇 방식에 대해 자세히 배워볼 예정입니다. 다양한 classifiers와 데이터셋을 사용해서 _재료 그룹 기반으로 주어진 국민 요리를 예측_ 합니다. 이러는 동안, classification 작업에 알고리즘을 활용할 몇 방식에 대해 자세히 배워볼 예정입니다.
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/21/) ## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/21/)
## 준비하기 ## 준비하기
@ -16,13 +16,13 @@
```python ```python
import pandas as pd 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() 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 | | | 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 | | 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 | | 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 | | 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 | | 4 | 4 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
```
1. 지금부터, 여러가지 라이브러리를 가져옵니다: 1. 지금부터, 여러가지 라이브러리를 가져옵니다:
@ -69,13 +69,13 @@
features는 이렇게 보입니다: 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 | | | | 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 | 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 | | 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 | | 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 | | 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 | | 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 | | | | | | | | | | | | | | | | | | | | | | | 0 |
| -------: | -------: | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | -------: | -------: |
| indian | 0.715851 | | | | | | | | | | | | | | | | | | | | | | indian | 0.715851 |
| chinese | 0.229475 | | | | | | | | | | | | | | | | | | | | | | chinese | 0.229475 |
| japanese | 0.029763 | | | | | | | | | | | | | | | | | | | | | | japanese | 0.029763 |
| korean | 0.017277 | | | | | | | | | | | | | | | | | | | | | | korean | 0.017277 |
| thai | 0.007634 | | | | | | | | | | | | | | | | | | | | | | thai | 0.007634 |
✅ 모델이 이를 인도 요리라고 확신하는 이유를 설명할 수 있나요? ✅ 모델이 이를 인도 요리라고 확신하는 이유를 설명할 수 있나요?
@ -218,22 +218,22 @@ multiclass 케이스로, 사용할 _scheme_ 와 설정할 _solver_ 를 선택해
print(classification_report(y_test,y_pred)) print(classification_report(y_test,y_pred))
``` ```
| precision | recall | f1-score | support | | | | | | | | | | | | | | | | | | | | | precision | recall | f1-score | support |
| ------------ | ------ | -------- | ------- | ---- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | ------------ | --------- | ------ | -------- | ------- |
| chinese | 0.73 | 0.71 | 0.72 | 229 | | | | | | | | | | | | | | | | | | | chinese | 0.73 | 0.71 | 0.72 | 229 |
| indian | 0.91 | 0.93 | 0.92 | 254 | | | | | | | | | | | | | | | | | | | indian | 0.91 | 0.93 | 0.92 | 254 |
| japanese | 0.70 | 0.75 | 0.72 | 220 | | | | | | | | | | | | | | | | | | | japanese | 0.70 | 0.75 | 0.72 | 220 |
| korean | 0.86 | 0.76 | 0.81 | 242 | | | | | | | | | | | | | | | | | | | korean | 0.86 | 0.76 | 0.81 | 242 |
| thai | 0.79 | 0.85 | 0.82 | 254 | | | | | | | | | | | | | | | | | | | thai | 0.79 | 0.85 | 0.82 | 254 |
| accuracy | 0.80 | 1199 | | | | | | | | | | | | | | | | | | | | | accuracy | 0.80 | 1199 | | |
| macro avg | 0.80 | 0.80 | 0.80 | 1199 | | | | | | | | | | | | | | | | | | | macro avg | 0.80 | 0.80 | 0.80 | 1199 |
| weighted avg | 0.80 | 0.80 | 0.80 | 1199 | | | | | | | | | | | | | | | | | | | weighted avg | 0.80 | 0.80 | 0.80 | 1199 |
## 🚀 도전 ## 🚀 도전
이 강의에서, 정리된 데이터로 재료의 시리즈를 기반으로 국민 요리를 예측할 수 있는 머신러닝 모델을 만들었습니다. 시간을 투자해서 Scikit-learn이 데이터를 분류하기 위해 제공하는 다양한 옵션을 읽어봅니다. 무대 뒤에서 생기는 일을 이해하기 위해서 'solver'의 개념을 깊게 파봅니다. 이 강의에서, 정리된 데이터로 재료의 시리즈를 기반으로 국민 요리를 예측할 수 있는 머신러닝 모델을 만들었습니다. 시간을 투자해서 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 뒤의 수학에 대해서 더 자세히 파봅니다. [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를 선택하는 파급효과도 배우게 됩니다. 두번째 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 > 🎥 영상 보려면 이미지 클릭: 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. 유용한 라이브러리를 가져와서 시작합니다: 1. 유용한 라이브러리를 가져와서 시작합니다:
```python ```python
pip install skl2onnx !pip install skl2onnx
import pandas as pd import pandas as pd
``` ```
@ -40,7 +40,7 @@ Applied ML 시스템을 만드는 것은 비지니스 시스템에서 이 기술
1. 그리고, `read_csv()` 사용해서 CSV 파일을 읽어보면, 이전 강의에서 했던 같은 방식으로 데이터를 작업합니다: 1. 그리고, `read_csv()` 사용해서 CSV 파일을 읽어보면, 이전 강의에서 했던 같은 방식으로 데이터를 작업합니다:
```python ```python
data = pd.read_csv('../data/cleaned_cuisine.csv') data = pd.read_csv('../data/cleaned_cuisines.csv')
data.head() 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) ![ingredient web app](../images/web-app.png)
@ -322,7 +322,7 @@ index.html 파일의 폴더에서 Visual Studio Code로 터미널 세션을 엽
이 웹 앱은 매우 작아서, [ingredient_indexes](../../data/ingredient_indexes.csv) 데이터에서 성분과 인덱스로 계속 만듭니다. 주어진 국민 요리를 만드려면 어떤 풍미 조합으로 작업해야 되나요? 이 웹 앱은 매우 작아서, [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. > 🎥 영상을 보려면 이미지 클릭. 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` 패키지를 가져옵니다. 1. 좋은 데이터 시각화를 위해서 `Seaborn` 패키지를 가져옵니다.
```python ```python
pip install seaborn !pip install seaborn
``` ```
1. _nigerian-songs.csv_ 의 노래 데이터를 추가합니다. 일부 노래 데이터가 있는 데이터 프레임을 불러옵니다. 라이브러리를 가져오고 데이터를 덤프해서 찾아봅니다: 1. _nigerian-songs.csv_ 의 노래 데이터를 추가합니다. 일부 노래 데이터가 있는 데이터 프레임을 불러옵니다. 라이브러리를 가져오고 데이터를 덤프해서 찾아봅니다:
@ -322,7 +322,7 @@ Clustering이 데이터셋에 라벨을 붙이지 않거나 입력이 미리 정
다음 강의를 준비하기 위해서, 프로덕션 환경에서 찾아서 사용할 수 있는 다양한 clustering 알고리즘을 차트로 만듭니다. 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 > 🎥 영상을 보려면 이미지 클릭: 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을 시도해보려고 합니다. 시작해봅니다! 이 강의에서, 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) 이 문제를 조금 더 읽어봅니다. 힌트: 데이터를 더 키워봅니다. 가까운 범위 조건에 비슷한 데이터 열을 만들고자 추가하는 표준 스케일링 코드를 노트북에 주석으로 남겼습니다. 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)을 찾아봅니다. 또한, Stanford의 [this handout on k-means](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html)을 찾아봅니다.

@ -2,7 +2,7 @@
이 강의애서 *computational linguistics* 하위인, *natural language processing*의 간단한 역사와 중요 컨셉을 다룹니다. 이 강의애서 *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 개발 ### 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는 쉽게 속을 수 있습니다. 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와 머신러닝을 분석하는 여러 다른 접근 방식에 대해 배울 예정입니다. 다음 강의에서, 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_ 만 끌어낼 수 있게 합니다. 대부분 *natural language processing* 작업으로, 처리한 텍스트를 분해하고, 검사하고, 그리고 결과를 저장하거나 룰과 데이터셋을 서로 참조했습니다. 이 작업들로, 프로그래머가 _meaning_ 또는 _intent_ 또는 오직 텍스트에 있는 용어와 단어의 _frequency_ 만 끌어낼 수 있게 합니다.
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/33/) ## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/33/)
텍스트를 처리하며 사용했던 일반적인 기술을 찾아봅니다. 머신러닝에 결합된, 이 기술은 효율적으로 많은 텍스트를 분석하는데 도와줍니다. 그러나, 이 작업에 ML을 적용하기 전에, NLP 스페셜리스트가 일으킨 문제를 이해합니다. 텍스트를 처리하며 사용했던 일반적인 기술을 찾아봅니다. 머신러닝에 결합된, 이 기술은 효율적으로 많은 텍스트를 분석하는데 도와줍니다. 그러나, 이 작업에 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_ 하는 것입니다. 이전 강의에서 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 메시지 리스트에 저장합니다 1. 만약 polarity가 1 또는 -1이면 문장을 배열이나 positive 또는 negative 메시지 리스트에 저장합니다
5. 마지막으로, (각자) 모든 긍정적인 문장과 부정적인 문장, 각 수를 출력합니다 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을 더 좋게 만들 수 있나요? 사용자 입력으로 다른 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 데이터셋을 파보고 모델에서 치우치거나 편향된 감정으로 끼워놓은 영역을 찾을 수 있는지 확인합니다. 이전 강의에서 본 것처럼, 이 강의에서 작업하기 전 데이터와 약점을 이해하는 것이 얼마나 치명적이게 중요한지 보여줍니다. 특별히, 텍스트-기반 데이터는, 조심히 조사해야 합니다. 다양한 text-heavy 데이터셋을 파보고 모델에서 치우치거나 편향된 감정으로 끼워놓은 영역을 찾을 수 있는지 확인합니다.
## [강의 후 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/38/) ## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/38/)
## 검토 & 자기주도 학습 ## 검토 & 자기주도 학습

@ -2,7 +2,7 @@
지금까지 자세히 데이터셋을 살펴보았으며, 열을 필터링하고 데이터셋으로 NLP 기술을 사용하여 호텔에 대한 새로운 시각을 얻게 될 시간입니다. 지금까지 자세히 데이터셋을 살펴보았으며, 열을 필터링하고 데이터셋으로 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) 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)으로 살펴보았습니다 1. 원본 데이터셋 **Hotel_Reviews.csv** 파일은 이전 강의에서 [the explorer notebook](../../4-Hotel-Reviews-1/solution/notebook.ipynb)으로 살펴보았습니다
2. Hotel_Reviews.csv는 [the filtering notebook](../solution/notebook-filtering.ipynb)에서 필터링되고 **Hotel_Reviews_Filtered.csv**에 결과로 남습니다 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/notebook-sentiment-analysis.ipynb)에서 처리되어 **Hotel_Reviews_NLP.csv**에 결과로 남습니다 3. Hotel_Reviews_Filtered.csv는 [the sentiment analysis notebook](../solution/3-notebook.ipynb)에서 처리되어 **Hotel_Reviews_NLP.csv**에 결과로 남습니다
4. 다음 NLP 도전에서 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에 대한 비디오를 봅니다 > 🎥 이미지를 눌러서 time series forecasting에 대한 비디오를 봅니다
## [강의 전 퀴즈](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/41/) ## [강의 전 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/41/)
가격, 재고, 그리고 공급과 연관된 이슈에 직접 적용하게 된다면, 비지니스에 실제로 가치있는 유용하고 흥미로운 필드가 됩니다. 딥러닝 기술은 미래의 성능을 잘 예측하기 위해 더 많은 인사이트를 얻고자 사용했지만, time series forecasting은 classic ML 기술에서 지속적으로 많은 정보를 얻는 필드입니다. 가격, 재고, 그리고 공급과 연관된 이슈에 직접 적용하게 된다면, 비지니스에 실제로 가치있는 유용하고 흥미로운 필드가 됩니다. 딥러닝 기술은 미래의 성능을 잘 예측하기 위해 더 많은 인사이트를 얻고자 사용했지만, time series forecasting은 classic ML 기술에서 지속적으로 많은 정보를 얻는 필드입니다.
@ -175,7 +175,7 @@ seasonality의 독립적으로, 1년 보다 긴 경제 침체같은 long-run cyc
time series forecasting에서 얻을 수 있다고 생각할 수 있는 모든 산업과 조사 영역의 리스트를 만듭니다. 예술에 이 기술을 적용할 수 있다고 생각하나요? 경제학에서? 생태학에서? 리테일에서? 산업에서? 금융에서? 또 다른 곳은 어딘가요? 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. > 🎥 영상을 보려면 이미지 클릭: 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 ```python
test_shifted = test.copy() 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['load+'+str(t)] = test_shifted['load'].shift(-t, freq='H')
test_shifted = test_shifted.dropna(how='any') test_shifted = test_shifted.dropna(how='any')
@ -295,7 +295,7 @@ Walk-forward 검사는 time series 모델 평가의 최적 표준이고 이 프
eval_df.head() eval_df.head()
``` ```
```output output
| | | timestamp | h | prediction | actual | | | | timestamp | h | prediction | actual |
| --- | ---------- | --------- | --- | ---------- | -------- | | --- | ---------- | --------- | --- | ---------- | -------- |
| 0 | 2014-12-30 | 00:00:00 | t+1 | 3,008.74 | 3,023.00 | | 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 | | 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 | | 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 | | 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)에서 찾을 수 있습니다. 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 들으려면 이미지 클릭 > 🎥 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) **epochs**라고 불리는, 5000번 실험으로 학습 알고리즘을 실행합니다: (code block 8)
```python ```python
for epoch in range(5000): for epoch in range(5000):
# Pick initial point # Pick initial point
@ -255,7 +255,7 @@ Q-Table의 모든 값이 같다면, 이 케이스에서 - 0.25 으로 초기화
ai = action_idx[a] 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()) Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
n+=1 n+=1
``` ```
이 알고리즘이 실행된 후, Q-Table은 각 단계에 다른 액션의 attractiveness를 정의하는 값으로 업데이트해야 합니다. 움직이고 싶은 방향의 방향으로 각 셀에 백터를 plot해서 Q-Table을 시각화할 수 있습니다. 단순하게, 화살표 머리 대신 작은 원을 그립니다. 이 알고리즘이 실행된 후, Q-Table은 각 단계에 다른 액션의 attractiveness를 정의하는 값으로 업데이트해야 합니다. 움직이고 싶은 방향의 방향으로 각 셀에 백터를 plot해서 Q-Table을 시각화할 수 있습니다. 단순하게, 화살표 머리 대신 작은 원을 그립니다.
@ -315,7 +315,7 @@ print_statistics(qpolicy)
전체적으로, 학습 프로세스의 성공과 퀄리티는 학습률, 학습률 감소, 그리고 감가율처럼 파라미터에 기반하는게 상당히 중요하다는 점을 기억합니다. 훈련하면서 최적화하면 (예시로, Q-Table coefficients), **parameters**와 구별해서, 가끔 **hyperparameters**라고 불립니다. 최고의 hyperparameter 값을 찾는 프로세스는 **hyperparameter optimization**이라고 불리며, 별도의 토픽이 있을 만합니다. 전체적으로, 학습 프로세스의 성공과 퀄리티는 학습률, 학습률 감소, 그리고 감가율처럼 파라미터에 기반하는게 상당히 중요하다는 점을 기억합니다. 훈련하면서 최적화하면 (예시로, 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**를 보드가 가지고 있기 때문에 비슷합니다. 이전 강의에서 풀었던 문제는 장난감 문제처럼 보일 수 있고, 실제 시나리오에서 진짜 적용되지 않습니다. 체스나 바둑을 즐기는 것을 포함한 - 시나리오에 많은 실제 문제와 공유하기 때문에, 이 케이스는 아닙니다. 주어진 룰과 **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 값에 해당되는 액션 숫자를 찾아서 마무리할 수 있습니다. 이 전략을 구현하고 밸런스를 개선했는지 봅니다. > **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) ## 과제: [Train a Mountain Car](../assignment.md)

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

Loading…
Cancel
Save