|
|
# ಎಂಎಲ್ ಮಾದರಿಯನ್ನು ಬಳಸಲು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ
|
|
|
|
|
|
ಈ ಪಾಠದಲ್ಲಿ, ನೀವು NUFORC ಡೇಟಾಬೇಸ್ನಿಂದ ಪಡೆದಿರುವ _ಹಿಂದಿನ ಶತಮಾನದಲ್ಲಿ ನಡೆದ UFO ದೃಶ್ಯಾವಳಿಗಳು_ ಎಂಬ ಅತೀ ವಿಶಿಷ್ಟ ಡೇಟಾ ಸೆಟ್ ಮೇಲೆ ಎಂಎಲ್ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುವಿರಿ.
|
|
|
|
|
|
ನೀವು ಕಲಿಯುವಿರಿ:
|
|
|
|
|
|
- ತರಬೇತುಗೊಂಡ ಮಾದರಿಯನ್ನು 'ಪಿಕಲ್' ಮಾಡುವ ವಿಧಾನ
|
|
|
- ಆ ಮಾದರಿಯನ್ನು ಫ್ಲಾಸ್ಕ್ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಬಳಸುವ ವಿಧಾನ
|
|
|
|
|
|
ನಾವು ಡೇಟಾ ಶುದ್ಧೀಕರಣ ಮತ್ತು ಮಾದರಿ ತರಬೇತಿಗಾಗಿ ನೋಟ್ಬುಕ್ಗಳನ್ನು ಬಳಸುವುದನ್ನು ಮುಂದುವರಿಸುವೆವು, ಆದರೆ ನೀವು ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಇನ್ನೊಂದು ಹಂತಕ್ಕೆ ತೆಗೆದುಕೊಂಡು ಹೋಗಬಹುದು, ಅಂದರೆ ಮಾದರಿಯನ್ನು 'ವೈಲ್ಡ್' ನಲ್ಲಿ, ಅಂದರೆ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಬಳಸುವುದನ್ನು ಅನ್ವೇಷಿಸುವುದು.
|
|
|
|
|
|
ಇದಕ್ಕಾಗಿ, ನೀವು ಫ್ಲಾಸ್ಕ್ ಬಳಸಿ ಒಂದು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಬೇಕಾಗುತ್ತದೆ.
|
|
|
|
|
|
## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
|
|
## ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಾಣ
|
|
|
|
|
|
ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ಉಪಯೋಗಿಸಲು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿರ್ಮಿಸುವ ಹಲವು ವಿಧಾನಗಳಿವೆ. ನಿಮ್ಮ ವೆಬ್ ವಾಸ್ತುಶಿಲ್ಪವು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುವ ರೀತಿಯನ್ನು ಪ್ರಭಾವಿತ ಮಾಡಬಹುದು. ನೀವು ಕೆಲಸ ಮಾಡುತ್ತಿರುವ ವ್ಯವಹಾರದಲ್ಲಿ ಡೇಟಾ ಸೈನ್ಸ್ ತಂಡವು ತರಬೇತುಗೊಂಡ ಮಾದರಿಯನ್ನು ನೀವು ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಬಳಸಬೇಕೆಂದು ಬಯಸಿದರೆ ಎಂದು ಕಲ್ಪಿಸಿ.
|
|
|
|
|
|
### ಪರಿಗಣನೆಗಳು
|
|
|
|
|
|
ನೀವು ಕೇಳಬೇಕಾದ ಹಲವಾರು ಪ್ರಶ್ನೆಗಳಿವೆ:
|
|
|
|
|
|
- **ಇದು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅಥವಾ ಮೊಬೈಲ್ ಅಪ್ಲಿಕೇಶನ್ ಆಗಿದೆಯೇ?** ನೀವು ಮೊಬೈಲ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸುತ್ತಿದ್ದರೆ ಅಥವಾ IoT ಸನ್ನಿವೇಶದಲ್ಲಿ ಮಾದರಿಯನ್ನು ಬಳಸಬೇಕಾದರೆ, ನೀವು [TensorFlow Lite](https://www.tensorflow.org/lite/) ಬಳಸಿ ಆಂಡ್ರಾಯ್ಡ್ ಅಥವಾ iOS ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಮಾದರಿಯನ್ನು ಬಳಸಬಹುದು.
|
|
|
- **ಮಾದರಿ ಎಲ್ಲಿಗೆ ಇರಲಿದೆ?** ಕ್ಲೌಡ್ನಲ್ಲಿ ಅಥವಾ ಸ್ಥಳೀಯವಾಗಿ?
|
|
|
- **ಆಫ್ಲೈನ್ ಬೆಂಬಲ.** ಅಪ್ಲಿಕೇಶನ್ ಆಫ್ಲೈನ್ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸಬೇಕೇ?
|
|
|
- **ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಲು ಯಾವ ತಂತ್ರಜ್ಞಾನ ಬಳಸಲಾಗಿದೆ?** ಆಯ್ದ ತಂತ್ರಜ್ಞಾನವು ನೀವು ಬಳಸಬೇಕಾದ ಉಪಕರಣಗಳನ್ನು ಪ್ರಭಾವಿತ ಮಾಡಬಹುದು.
|
|
|
- **TensorFlow ಬಳಕೆ.** ಉದಾಹರಣೆಗೆ, TensorFlow ಬಳಸಿ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುತ್ತಿದ್ದರೆ, ಆ ಪರಿಸರವು [TensorFlow.js](https://www.tensorflow.org/js/) ಬಳಸಿ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ TensorFlow ಮಾದರಿಯನ್ನು ಪರಿವರ್ತಿಸಲು ಅವಕಾಶ ನೀಡುತ್ತದೆ.
|
|
|
- **PyTorch ಬಳಕೆ.** ನೀವು [PyTorch](https://pytorch.org/)ಂತಹ ಗ್ರಂಥಾಲಯ ಬಳಸಿ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸುತ್ತಿದ್ದರೆ, ಅದನ್ನು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ಬಳಸಲು [ONNX](https://onnx.ai/) (Open Neural Network Exchange) ಸ್ವರೂಪದಲ್ಲಿ ರಫ್ತು ಮಾಡಬಹುದು, ಮತ್ತು [Onnx Runtime](https://www.onnxruntime.ai/) ಬಳಸಿ ಬಳಸಬಹುದು. ಈ ಆಯ್ಕೆಯನ್ನು ಭವಿಷ್ಯ ಪಾಠದಲ್ಲಿ Scikit-learn ತರಬೇತುಗೊಂಡ ಮಾದರಿಗಾಗಿ ಅನ್ವೇಷಿಸಲಾಗುವುದು.
|
|
|
- **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-77952-leestott)ಂತಹ ಎಂಎಲ್ ಸಾಫ್ಟ್ವೇರ್ ಸೇವೆಗಳನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ, ಈ ರೀತಿಯ ಸಾಫ್ಟ್ವೇರ್ ವಿವಿಧ ವೇದಿಕೆಗಳಿಗೆ ಮಾದರಿಯನ್ನು ರಫ್ತು ಮಾಡುವ ಮಾರ್ಗಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇದರಲ್ಲಿ ನಿಮ್ಮ ಆನ್ಲೈನ್ ಅಪ್ಲಿಕೇಶನ್ ಮೂಲಕ ಕ್ಲೌಡ್ನಲ್ಲಿ ಪ್ರಶ್ನೆ ಕೇಳಲು ವಿಶೇಷ API ನಿರ್ಮಿಸುವುದೂ ಸೇರಿದೆ.
|
|
|
|
|
|
ನೀವು ಸಂಪೂರ್ಣ ಫ್ಲಾಸ್ಕ್ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸುವ ಅವಕಾಶವನ್ನೂ ಹೊಂದಿದ್ದೀರಿ, ಅದು ವೆಬ್ ಬ್ರೌಸರ್ನಲ್ಲಿ ಸ್ವತಃ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಬಹುದು. ಇದನ್ನು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಸನ್ನಿವೇಶದಲ್ಲಿ TensorFlow.js ಬಳಸಿ ಮಾಡಬಹುದು.
|
|
|
|
|
|
ನಮ್ಮ ಉದ್ದೇಶಕ್ಕಾಗಿ, ನಾವು ಪೈಥಾನ್ ಆಧಾರಿತ ನೋಟ್ಬುಕ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದುದರಿಂದ, ತರಬೇತುಗೊಂಡ ಮಾದರಿಯನ್ನು ನೋಟ್ಬುಕ್ನಿಂದ ಪೈಥಾನ್ ನಿರ್ಮಿತ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಓದಲು ಸಾಧ್ಯವಾದ ಸ್ವರೂಪಕ್ಕೆ ರಫ್ತು ಮಾಡುವ ಹಂತಗಳನ್ನು ಅನ್ವೇಷಿಸೋಣ.
|
|
|
|
|
|
## ಉಪಕರಣ
|
|
|
|
|
|
ಈ ಕಾರ್ಯಕ್ಕಾಗಿ, ನೀವು ಎರಡು ಉಪಕರಣಗಳನ್ನು ಬೇಕಾಗುತ್ತದೆ: ಫ್ಲಾಸ್ಕ್ ಮತ್ತು ಪಿಕಲ್, ಎರಡೂ ಪೈಥಾನ್ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ.
|
|
|
|
|
|
✅ [ಫ್ಲಾಸ್ಕ್](https://palletsprojects.com/p/flask/) ಎಂದರೆ ಏನು? ಅದರ ಸೃಷ್ಟಿಕರ್ತರಿಂದ 'ಮೈಕ್ರೋ-ಫ್ರೇಮ್ವರ್ಕ್' ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಲ್ಪಟ್ಟಿದೆ, ಫ್ಲಾಸ್ಕ್ ಪೈಥಾನ್ ಬಳಸಿ ವೆಬ್ ಫ್ರೇಮ್ವರ್ಕ್ಗಳ ಮೂಲ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮತ್ತು ಟೆಂಪ್ಲೇಟಿಂಗ್ ಎಂಜಿನ್ ಅನ್ನು ಒದಗಿಸಿ ವೆಬ್ ಪುಟಗಳನ್ನು ನಿರ್ಮಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಫ್ಲಾಸ್ಕ್ ಬಳಸಿ ನಿರ್ಮಾಣ ಅಭ್ಯಾಸ ಮಾಡಲು [ಈ ಲರ್ನ್ ಮೋಡ್ಯೂಲ್](https://docs.microsoft.com/learn/modules/python-flask-build-ai-web-app?WT.mc_id=academic-77952-leestott) ನೋಡಿ.
|
|
|
|
|
|
✅ [ಪಿಕಲ್](https://docs.python.org/3/library/pickle.html) ಎಂದರೆ ಏನು? ಪಿಕಲ್ 🥒 ಪೈಥಾನ್ ಆಬ್ಜೆಕ್ಟ್ ರಚನೆಯನ್ನು ಸರಣೀಕರಿಸುವ ಮತ್ತು ಡೀ-ಸರಣೀಕರಿಸುವ ಪೈಥಾನ್ ಮೋಡ್ಯೂಲ್. ನೀವು ಮಾದರಿಯನ್ನು 'ಪಿಕಲ್' ಮಾಡಿದಾಗ, ಅದನ್ನು ವೆಬ್ನಲ್ಲಿ ಬಳಸಲು ಸರಣೀಕರಿಸುವ ಅಥವಾ ಸಮತಲಗೊಳಿಸುವಿರಿ. ಎಚ್ಚರಿಕೆ: ಪಿಕಲ್ ಸ್ವತಃ ಸುರಕ್ಷಿತವಲ್ಲ, ಆದ್ದರಿಂದ ಫೈಲ್ ಅನ್ನು 'ಅನ್-ಪಿಕಲ್' ಮಾಡಲು ಕೇಳಿದಾಗ ಜಾಗರೂಕತೆ ವಹಿಸಿ. ಪಿಕಲ್ ಮಾಡಿದ ಫೈಲ್ಗೆ `.pkl` ಎಂಬ ಸಫಿಕ್ಸ್ ಇರುತ್ತದೆ.
|
|
|
|
|
|
## ಅಭ್ಯಾಸ - ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಶುದ್ಧೀಕರಿಸಿ
|
|
|
|
|
|
ಈ ಪಾಠದಲ್ಲಿ ನೀವು [NUFORC](https://nuforc.org) (ರಾಷ್ಟ್ರೀಯ UFO ವರದಿ ಕೇಂದ್ರ) ಸಂಗ್ರಹಿಸಿದ 80,000 UFO ದೃಶ್ಯಾವಳಿಗಳ ಡೇಟಾವನ್ನು ಬಳಸುತ್ತೀರಿ. ಈ ಡೇಟಾದಲ್ಲಿ UFO ದೃಶ್ಯಾವಳಿಗಳ ಕೆಲವು ಆಸಕ್ತಿದಾಯಕ ವಿವರಣೆಗಳಿವೆ, ಉದಾಹರಣೆಗೆ:
|
|
|
|
|
|
- **ದೀರ್ಘ ಉದಾಹರಣೆಯ ವಿವರಣೆ.** "ಒಬ್ಬ ವ್ಯಕ್ತಿ ರಾತ್ರಿ ಹೊಲದಲ್ಲಿ ಬೆಳಗುವ ಬೆಳಕಿನ ಕಿರಣದಿಂದ ಹೊರಬರುತ್ತಾನೆ ಮತ್ತು ಟೆಕ್ಸಾಸ್ ಇನ್ಸ್ಟ್ರುಮೆಂಟ್ಸ್ ಪಾರ್ಕಿಂಗ್ ಲಾಟ್ ಕಡೆ ಓಡುತ್ತಾನೆ".
|
|
|
- **ಸಣ್ಣ ಉದಾಹರಣೆಯ ವಿವರಣೆ.** "ಬೆಳಕುಗಳು ನಮ್ಮನ್ನು ಹಿಂಬಾಲಿಸಿದವು".
|
|
|
|
|
|
[ufos.csv](../../../../3-Web-App/1-Web-App/data/ufos.csv) ಸ್ಪ್ರೆಡ್ಶೀಟ್ನಲ್ಲಿ ದೃಶ್ಯಾವಳಿ ನಡೆದ `city`, `state` ಮತ್ತು `country` ಕಾಲಮ್ಗಳ ಜೊತೆಗೆ ವಸ್ತುವಿನ `shape` ಮತ್ತು ಅದರ `latitude` ಮತ್ತು `longitude` ಕಾಲಮ್ಗಳಿವೆ.
|
|
|
|
|
|
ಈ ಪಾಠದಲ್ಲಿ ಸೇರಿಸಿರುವ ಖಾಲಿ [ನೋಟ್ಬುಕ್](notebook.ipynb) ನಲ್ಲಿ:
|
|
|
|
|
|
1. ಹಿಂದಿನ ಪಾಠಗಳಲ್ಲಿ ಮಾಡಿದಂತೆ `pandas`, `matplotlib`, ಮತ್ತು `numpy` ಅನ್ನು ಆಮದು ಮಾಡಿ ಮತ್ತು ufos ಸ್ಪ್ರೆಡ್ಶೀಟ್ ಅನ್ನು ಆಮದು ಮಾಡಿ. ನೀವು ಒಂದು ಮಾದರಿ ಡೇಟಾ ಸೆಟ್ ನೋಡಬಹುದು:
|
|
|
|
|
|
```python
|
|
|
import pandas as pd
|
|
|
import numpy as np
|
|
|
|
|
|
ufos = pd.read_csv('./data/ufos.csv')
|
|
|
ufos.head()
|
|
|
```
|
|
|
|
|
|
1. ufos ಡೇಟಾವನ್ನು ಹೊಸ ಶೀರ್ಷಿಕೆಗಳೊಂದಿಗೆ ಸಣ್ಣ ಡೇಟಾಫ್ರೇಮ್ಗೆ ಪರಿವರ್ತಿಸಿ. `Country` ಕ್ಷೇತ್ರದಲ್ಲಿ ಇರುವ ವಿಶಿಷ್ಟ ಮೌಲ್ಯಗಳನ್ನು ಪರಿಶೀಲಿಸಿ.
|
|
|
|
|
|
```python
|
|
|
ufos = pd.DataFrame({'Seconds': ufos['duration (seconds)'], 'Country': ufos['country'],'Latitude': ufos['latitude'],'Longitude': ufos['longitude']})
|
|
|
|
|
|
ufos.Country.unique()
|
|
|
```
|
|
|
|
|
|
1. ಈಗ, ನಾವು ನಿಭಾಯಿಸಬೇಕಾದ ಡೇಟಾ ಪ್ರಮಾಣವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಯಾವುದೇ ನಲ್ ಮೌಲ್ಯಗಳನ್ನು ತೆಗೆದುಹಾಕಿ ಮತ್ತು 1-60 ಸೆಕೆಂಡುಗಳ ನಡುವಿನ ದೃಶ್ಯಾವಳಿಗಳನ್ನು ಮಾತ್ರ ಆಮದು ಮಾಡಿ:
|
|
|
|
|
|
```python
|
|
|
ufos.dropna(inplace=True)
|
|
|
|
|
|
ufos = ufos[(ufos['Seconds'] >= 1) & (ufos['Seconds'] <= 60)]
|
|
|
|
|
|
ufos.info()
|
|
|
```
|
|
|
|
|
|
1. ದೇಶಗಳ ಪಠ್ಯ ಮೌಲ್ಯಗಳನ್ನು ಸಂಖ್ಯೆಗೆ ಪರಿವರ್ತಿಸಲು Scikit-learn ನ `LabelEncoder` ಗ್ರಂಥಾಲಯವನ್ನು ಆಮದು ಮಾಡಿ:
|
|
|
|
|
|
✅ LabelEncoder ಡೇಟಾವನ್ನು ವರ್ಣಮಾಲಾ ಕ್ರಮದಲ್ಲಿ ಎನ್ಕೋಡ್ ಮಾಡುತ್ತದೆ
|
|
|
|
|
|
```python
|
|
|
from sklearn.preprocessing import LabelEncoder
|
|
|
|
|
|
ufos['Country'] = LabelEncoder().fit_transform(ufos['Country'])
|
|
|
|
|
|
ufos.head()
|
|
|
```
|
|
|
|
|
|
ನಿಮ್ಮ ಡೇಟಾ ಹೀಗೆ ಕಾಣಿಸಬೇಕು:
|
|
|
|
|
|
```output
|
|
|
Seconds Country Latitude Longitude
|
|
|
2 20.0 3 53.200000 -2.916667
|
|
|
3 20.0 4 28.978333 -96.645833
|
|
|
14 30.0 4 35.823889 -80.253611
|
|
|
23 60.0 4 45.582778 -122.352222
|
|
|
24 3.0 3 51.783333 -0.783333
|
|
|
```
|
|
|
|
|
|
## ಅಭ್ಯಾಸ - ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ
|
|
|
|
|
|
ಈಗ ನೀವು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಗುಂಪುಗಳಾಗಿ ಡೇಟಾವನ್ನು ವಿಭಜಿಸಿ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಲು ಸಿದ್ಧರಾಗಬಹುದು.
|
|
|
|
|
|
1. ನೀವು ತರಬೇತುಗೊಳಿಸಲು ಬಯಸುವ ಮೂರು ಲಕ್ಷಣಗಳನ್ನು X ವೆಕ್ಟರ್ ಆಗಿ ಆಯ್ಕೆಮಾಡಿ, ಮತ್ತು y ವೆಕ್ಟರ್ ಆಗಿ `Country` ಇರುತ್ತದೆ. ನೀವು `Seconds`, `Latitude` ಮತ್ತು `Longitude` ಅನ್ನು ಇನ್ಪುಟ್ ಆಗಿ ನೀಡಿ, ದೇಶದ ಐಡಿ ಪಡೆಯಲು ಬಯಸುತ್ತೀರಿ.
|
|
|
|
|
|
```python
|
|
|
from sklearn.model_selection import train_test_split
|
|
|
|
|
|
Selected_features = ['Seconds','Latitude','Longitude']
|
|
|
|
|
|
X = ufos[Selected_features]
|
|
|
y = ufos['Country']
|
|
|
|
|
|
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
|
|
|
```
|
|
|
|
|
|
1. ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಳಸಿ ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಿ:
|
|
|
|
|
|
```python
|
|
|
from sklearn.metrics import accuracy_score, classification_report
|
|
|
from sklearn.linear_model import LogisticRegression
|
|
|
model = LogisticRegression()
|
|
|
model.fit(X_train, y_train)
|
|
|
predictions = model.predict(X_test)
|
|
|
|
|
|
print(classification_report(y_test, predictions))
|
|
|
print('Predicted labels: ', predictions)
|
|
|
print('Accuracy: ', accuracy_score(y_test, predictions))
|
|
|
```
|
|
|
|
|
|
ನಿಖರತೆ ಕೆಟ್ಟದಿಲ್ಲ **(ಸುಮಾರು 95%)**, ಅಚ್ಚರಿಯಿಲ್ಲದೆ, ಏಕೆಂದರೆ `Country` ಮತ್ತು `Latitude/Longitude` ಪರಸ್ಪರ ಸಂಬಂಧ ಹೊಂದಿವೆ.
|
|
|
|
|
|
ನೀವು ರಚಿಸಿದ ಮಾದರಿ ಬಹಳ ಕ್ರಾಂತಿಕಾರಕವಲ್ಲ, ಏಕೆಂದರೆ `Latitude` ಮತ್ತು `Longitude` ನಿಂದ `Country` ಅನ್ನು ಊಹಿಸಬಹುದು, ಆದರೆ ನೀವು ಶುದ್ಧೀಕರಿಸಿದ, ರಫ್ತು ಮಾಡಿದ ಕಚ್ಚಾ ಡೇಟಾದಿಂದ ತರಬೇತುಗೊಳಿಸುವ ಪ್ರಯತ್ನಕ್ಕೆ ಇದು ಒಳ್ಳೆಯ ಅಭ್ಯಾಸ.
|
|
|
|
|
|
## ಅಭ್ಯಾಸ - ನಿಮ್ಮ ಮಾದರಿಯನ್ನು 'ಪಿಕಲ್' ಮಾಡಿ
|
|
|
|
|
|
ಈಗ, ನಿಮ್ಮ ಮಾದರಿಯನ್ನು _ಪಿಕಲ್_ ಮಾಡುವ ಸಮಯವಾಗಿದೆ! ನೀವು ಅದನ್ನು ಕೆಲವು ಸಾಲುಗಳ ಕೋಡ್ನಲ್ಲಿ ಮಾಡಬಹುದು. ಪಿಕಲ್ ಮಾಡಿದ ನಂತರ, ನಿಮ್ಮ ಪಿಕಲ್ ಮಾಡಿದ ಮಾದರಿಯನ್ನು ಲೋಡ್ ಮಾಡಿ ಮತ್ತು ಸೆಕೆಂಡುಗಳು, ಅಕ್ಷಾಂಶ ಮತ್ತು ರೇಖಾಂಶ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿರುವ ಮಾದರಿ ಡೇಟಾ ಅರೆ ಮೇಲೆ ಪರೀಕ್ಷಿಸಿ,
|
|
|
|
|
|
```python
|
|
|
import pickle
|
|
|
model_filename = 'ufo-model.pkl'
|
|
|
pickle.dump(model, open(model_filename,'wb'))
|
|
|
|
|
|
model = pickle.load(open('ufo-model.pkl','rb'))
|
|
|
print(model.predict([[50,44,-12]]))
|
|
|
```
|
|
|
|
|
|
ಮಾದರಿ **'3'** ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಇದು ಯುಕೆ ದೇಶದ ಕೋಡ್. ಅದ್ಭುತ! 👽
|
|
|
|
|
|
## ಅಭ್ಯಾಸ - ಫ್ಲಾಸ್ಕ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ
|
|
|
|
|
|
ಈಗ ನೀವು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ಕರೆಸಿ ಸಮಾನ ಫಲಿತಾಂಶಗಳನ್ನು ಹಿಂತಿರುಗಿಸುವ ಫ್ಲಾಸ್ಕ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಬಹುದು, ಆದರೆ ದೃಶ್ಯವಾಗಿ ಹೆಚ್ಚು ಆಕರ್ಷಕ ರೀತಿಯಲ್ಲಿ.
|
|
|
|
|
|
1. ನಿಮ್ಮ _notebook.ipynb_ ಫೈಲ್ ಪಕ್ಕದಲ್ಲಿ **web-app** ಎಂಬ ಫೋಲ್ಡರ್ ಅನ್ನು ರಚಿಸಿ, ಅಲ್ಲಿ ನಿಮ್ಮ _ufo-model.pkl_ ಫೈಲ್ ಇರುತ್ತದೆ.
|
|
|
|
|
|
1. ಆ ಫೋಲ್ಡರ್ನಲ್ಲಿ ಇನ್ನೂ ಮೂರು ಫೋಲ್ಡರ್ಗಳನ್ನು ರಚಿಸಿ: **static**, ಅದರೊಳಗೆ **css** ಫೋಲ್ಡರ್, ಮತ್ತು **templates**. ಈಗ ನೀವು ಕೆಳಗಿನ ಫೈಲ್ಗಳು ಮತ್ತು ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಹೊಂದಿರಬೇಕು:
|
|
|
|
|
|
```output
|
|
|
web-app/
|
|
|
static/
|
|
|
css/
|
|
|
templates/
|
|
|
notebook.ipynb
|
|
|
ufo-model.pkl
|
|
|
```
|
|
|
|
|
|
✅ ಪೂರ್ಣಗೊಂಡ ಅಪ್ಲಿಕೇಶನ್ ವೀಕ್ಷಣೆಗೆ ಪರಿಹಾರ ಫೋಲ್ಡರ್ ನೋಡಿ
|
|
|
|
|
|
1. _web-app_ ಫೋಲ್ಡರ್ನಲ್ಲಿ ರಚಿಸಬೇಕಾದ ಮೊದಲ ಫೈಲ್ **requirements.txt**. ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅಪ್ಲಿಕೇಶನ್ನ _package.json_ ಹಾಗೆ, ಈ ಫೈಲ್ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಬೇಕಾದ ಅವಲಂಬನೆಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ. **requirements.txt** ನಲ್ಲಿ ಕೆಳಗಿನ ಸಾಲುಗಳನ್ನು ಸೇರಿಸಿ:
|
|
|
|
|
|
```text
|
|
|
scikit-learn
|
|
|
pandas
|
|
|
numpy
|
|
|
flask
|
|
|
```
|
|
|
|
|
|
1. ಈಗ, _web-app_ ಗೆ ನಾವಿಗೇಟ್ ಮಾಡಿ ಈ ಫೈಲ್ ಅನ್ನು ರನ್ ಮಾಡಿ:
|
|
|
|
|
|
```bash
|
|
|
cd web-app
|
|
|
```
|
|
|
|
|
|
1. ನಿಮ್ಮ ಟರ್ಮಿನಲ್ನಲ್ಲಿ `pip install` ಟೈಪ್ ಮಾಡಿ, _requirements.txt_ ನಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಿದ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಸ್ಥಾಪಿಸಲು:
|
|
|
|
|
|
```bash
|
|
|
pip install -r requirements.txt
|
|
|
```
|
|
|
|
|
|
1. ಈಗ, ಅಪ್ಲಿಕೇಶನ್ ಪೂರ್ಣಗೊಳಿಸಲು ಇನ್ನೂ ಮೂರು ಫೈಲ್ಗಳನ್ನು ರಚಿಸಲು ಸಿದ್ಧರಾಗಿ:
|
|
|
|
|
|
1. ರೂಟ್ನಲ್ಲಿ **app.py** ರಚಿಸಿ.
|
|
|
2. _templates_ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ **index.html** ರಚಿಸಿ.
|
|
|
3. _static/css_ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ **styles.css** ರಚಿಸಿ.
|
|
|
|
|
|
1. _styles.css_ ಫೈಲ್ನಲ್ಲಿ ಕೆಲವು ಶೈಲಿಗಳನ್ನು ನಿರ್ಮಿಸಿ:
|
|
|
|
|
|
```css
|
|
|
body {
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
font-family: 'Helvetica';
|
|
|
background: black;
|
|
|
color: #fff;
|
|
|
text-align: center;
|
|
|
letter-spacing: 1.4px;
|
|
|
font-size: 30px;
|
|
|
}
|
|
|
|
|
|
input {
|
|
|
min-width: 150px;
|
|
|
}
|
|
|
|
|
|
.grid {
|
|
|
width: 300px;
|
|
|
border: 1px solid #2d2d2d;
|
|
|
display: grid;
|
|
|
justify-content: center;
|
|
|
margin: 20px auto;
|
|
|
}
|
|
|
|
|
|
.box {
|
|
|
color: #fff;
|
|
|
background: #2d2d2d;
|
|
|
padding: 12px;
|
|
|
display: inline-block;
|
|
|
}
|
|
|
```
|
|
|
|
|
|
1. ನಂತರ, _index.html_ ಫೈಲ್ ಅನ್ನು ನಿರ್ಮಿಸಿ:
|
|
|
|
|
|
```html
|
|
|
<!DOCTYPE html>
|
|
|
<html>
|
|
|
<head>
|
|
|
<meta charset="UTF-8">
|
|
|
<title>🛸 UFO Appearance Prediction! 👽</title>
|
|
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/styles.css') }}">
|
|
|
</head>
|
|
|
|
|
|
<body>
|
|
|
<div class="grid">
|
|
|
|
|
|
<div class="box">
|
|
|
|
|
|
<p>According to the number of seconds, latitude and longitude, which country is likely to have reported seeing a UFO?</p>
|
|
|
|
|
|
<form action="{{ url_for('predict')}}" method="post">
|
|
|
<input type="number" name="seconds" placeholder="Seconds" required="required" min="0" max="60" />
|
|
|
<input type="text" name="latitude" placeholder="Latitude" required="required" />
|
|
|
<input type="text" name="longitude" placeholder="Longitude" required="required" />
|
|
|
<button type="submit" class="btn">Predict country where the UFO is seen</button>
|
|
|
</form>
|
|
|
|
|
|
<p>{{ prediction_text }}</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</body>
|
|
|
</html>
|
|
|
```
|
|
|
|
|
|
ಈ ಫೈಲ್ನ ಟೆಂಪ್ಲೇಟಿಂಗ್ ನೋಡಿ. ಅಪ್ಲಿಕೇಶನ್ ನೀಡುವ ಚರಗಳ ಸುತ್ತಲೂ 'ಮಸ್ಟಾಚ್' ಸಿಂಟ್ಯಾಕ್ಸ್ ಇದೆ, ಉದಾಹರಣೆಗೆ ಭವಿಷ್ಯವಾಣಿ ಪಠ್ಯ: `{{}}`. ಅಲ್ಲದೆ `/predict` ಮಾರ್ಗಕ್ಕೆ ಭವಿಷ್ಯವಾಣಿ ಪೋಸ್ಟ್ ಮಾಡುವ ಫಾರ್ಮ್ ಇದೆ.
|
|
|
|
|
|
ಕೊನೆಗೆ, ಮಾದರಿಯ ಬಳಕೆಯನ್ನು ಮತ್ತು ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಪ್ರದರ್ಶಿಸುವ ಪೈಥಾನ್ ಫೈಲ್ ನಿರ್ಮಿಸಲು ಸಿದ್ಧರಾಗಿ:
|
|
|
|
|
|
1. `app.py` ನಲ್ಲಿ ಸೇರಿಸಿ:
|
|
|
|
|
|
```python
|
|
|
import numpy as np
|
|
|
from flask import Flask, request, render_template
|
|
|
import pickle
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
model = pickle.load(open("./ufo-model.pkl", "rb"))
|
|
|
|
|
|
|
|
|
@app.route("/")
|
|
|
def home():
|
|
|
return render_template("index.html")
|
|
|
|
|
|
|
|
|
@app.route("/predict", methods=["POST"])
|
|
|
def predict():
|
|
|
|
|
|
int_features = [int(x) for x in request.form.values()]
|
|
|
final_features = [np.array(int_features)]
|
|
|
prediction = model.predict(final_features)
|
|
|
|
|
|
output = prediction[0]
|
|
|
|
|
|
countries = ["Australia", "Canada", "Germany", "UK", "US"]
|
|
|
|
|
|
return render_template(
|
|
|
"index.html", prediction_text="Likely country: {}".format(countries[output])
|
|
|
)
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
app.run(debug=True)
|
|
|
```
|
|
|
|
|
|
> 💡 ಟಿಪ್: ಫ್ಲಾಸ್ಕ್ ಬಳಸಿ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ರನ್ ಮಾಡುವಾಗ [`debug=True`](https://www.askpython.com/python-modules/flask/flask-debug-mode) ಸೇರಿಸಿದರೆ, ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಮಾಡಿದ ಯಾವುದೇ ಬದಲಾವಣೆಗಳು ತಕ್ಷಣವೇ ಪ್ರತಿಬಿಂಬಿತವಾಗುತ್ತವೆ, ಸರ್ವರ್ ಮರುಪ್ರಾರಂಭಿಸುವ ಅಗತ್ಯವಿಲ್ಲ. ಎಚ್ಚರಿಕೆ! ಉತ್ಪಾದನಾ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಈ ಮೋಡ್ ಸಕ್ರಿಯಗೊಳಿಸಬೇಡಿ.
|
|
|
|
|
|
ನೀವು `python app.py` ಅಥವಾ `python3 app.py` ರನ್ ಮಾಡಿದರೆ - ನಿಮ್ಮ ವೆಬ್ ಸರ್ವರ್ ಸ್ಥಳೀಯವಾಗಿ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ, ಮತ್ತು ನೀವು UFO ಗಳು ಎಲ್ಲಿ ದೃಶ್ಯಾವಳಿಯಾಗಿವೆ ಎಂಬ ಪ್ರಶ್ನೆಗೆ ಉತ್ತರ ಪಡೆಯಲು ಸಣ್ಣ ಫಾರ್ಮ್ ಭರ್ತಿ ಮಾಡಬಹುದು!
|
|
|
|
|
|
ಅದನ್ನು ಮಾಡುವ ಮೊದಲು, `app.py` ಭಾಗಗಳನ್ನು ನೋಡಿ:
|
|
|
|
|
|
1. ಮೊದಲು, ಅವಲಂಬನೆಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ.
|
|
|
1. ನಂತರ, ಮಾದರಿಯನ್ನು ಆಮದು ಮಾಡಲಾಗುತ್ತದೆ.
|
|
|
1. ನಂತರ, ಹೋಮ್ ಮಾರ್ಗದಲ್ಲಿ index.html ರೆಂಡರ್ ಆಗುತ್ತದೆ.
|
|
|
|
|
|
`/predict` ಮಾರ್ಗದಲ್ಲಿ, ಫಾರ್ಮ್ ಪೋಸ್ಟ್ ಆಗುವಾಗ ಹಲವಾರು ಕಾರ್ಯಗಳು ನಡೆಯುತ್ತವೆ:
|
|
|
|
|
|
1. ಫಾರ್ಮ್ ಚರಗಳನ್ನು ಸಂಗ್ರಹಿಸಿ numpy ಅರೆಗೆ ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ. ಅವು ಮಾದರಿಗೆ ಕಳುಹಿಸಿ ಭವಿಷ್ಯವಾಣಿ ಪಡೆಯಲಾಗುತ್ತದೆ.
|
|
|
2. ನಾವು ಪ್ರದರ್ಶಿಸಲು ಬಯಸುವ ದೇಶಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ದೇಶ ಕೋಡ್ನಿಂದ ಓದಲು ಸುಲಭವಾದ ಪಠ್ಯವಾಗಿ ಮರು-ರೆಂಡರ್ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಆ ಮೌಲ್ಯವನ್ನು index.html ಗೆ ಕಳುಹಿಸಿ ಟೆಂಪ್ಲೇಟಿನಲ್ಲಿ ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ.
|
|
|
|
|
|
ಫ್ಲಾಸ್ಕ್ ಮತ್ತು ಪಿಕಲ್ ಮಾಡಿದ ಮಾದರಿಯನ್ನು ಬಳಸಿ ಈ ರೀತಿಯಲ್ಲಿ ಮಾದರಿಯನ್ನು ಬಳಸುವುದು ಸರಳವಾಗಿದೆ. ಅತಿ ಕಠಿಣವಾದುದು ಯಾವ ರೂಪದ ಡೇಟಾವನ್ನು ಮಾದರಿಗೆ ಕಳುಹಿಸಬೇಕು ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು. ಅದು ಮಾದರಿ ತರಬೇತುಗೊಂಡ ರೀತಿಯ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಇದರಲ್ಲಿ ಮೂರು ಡೇಟಾ ಪಾಯಿಂಟ್ಗಳನ್ನು ಇನ್ಪುಟ್ ಆಗಿ ನೀಡಬೇಕು ಭವಿಷ್ಯವಾಣಿ ಪಡೆಯಲು.
|
|
|
|
|
|
ವೃತ್ತಿಪರ ಪರಿಸರದಲ್ಲಿ, ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುವವರು ಮತ್ತು ಅದನ್ನು ವೆಬ್ ಅಥವಾ ಮೊಬೈಲ್ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಬಳಸುವವರ ನಡುವೆ ಉತ್ತಮ ಸಂವಹನ ಅಗತ್ಯವಿದೆ. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ಅದು ನೀವು ಒಬ್ಬರೇ!
|
|
|
|
|
|
---
|
|
|
|
|
|
## 🚀 ಸವಾಲು
|
|
|
|
|
|
ನೋಟ್ಬುಕ್ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುವ ಬದಲು ಮತ್ತು ಮಾದರಿಯನ್ನು ಫ್ಲಾಸ್ಕ್ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಆಮದು ಮಾಡುವ ಬದಲು, ನೀವು ಫ್ಲಾಸ್ಕ್ ಅಪ್ಲಿಕೇಶನ್ ಒಳಗೆ ನೇರವಾಗಿ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಬಹುದು! ನಿಮ್ಮ ನೋಟ್ಬುಕ್ನ ಪೈಥಾನ್ ಕೋಡ್ ಅನ್ನು, ನಿಮ್ಮ ಡೇಟಾ ಶುದ್ಧೀಕರಿಸಿದ ನಂತರ, `train` ಎಂಬ ಮಾರ್ಗದಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ ಒಳಗೆ ತರಬೇತುಗೊಳಿಸುವಂತೆ ಪರಿವರ್ತಿಸಲು ಪ್ರಯತ್ನಿಸಿ. ಈ ವಿಧಾನವನ್ನು ಅನುಸರಿಸುವ ಲಾಭ ಮತ್ತು ಹಾನಿಗಳನ್ನು ಏನು?
|
|
|
|
|
|
## [ಪೋಸ್ಟ್-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
|
|
## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ
|
|
|
|
|
|
ಎಂಎಲ್ ಮಾದರಿಗಳನ್ನು ಉಪಯೋಗಿಸಲು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸುವ ಹಲವು ವಿಧಾನಗಳಿವೆ. ಯಾವುವು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅಥವಾ ಪೈಥಾನ್ ಬಳಸಿ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಲು ಸಾಧ್ಯವೋ ಅವುಗಳ ಪಟ್ಟಿ ಮಾಡಿ. ವಾಸ್ತುಶಿಲ್ಪವನ್ನು ಪರಿಗಣಿಸಿ: ಮಾದರಿ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಇರಬೇಕೇ ಅಥವಾ ಕ್ಲೌಡ್ನಲ್ಲಿ ಇರಬೇಕೇ? ನಂತರದಿದ್ದರೆ, ಅದನ್ನು ಹೇಗೆ ಪ್ರವೇಶಿಸುವಿರಿ? ಅನ್ವಯಿಸಿದ ಎಂಎಲ್ ವೆಬ್ ಪರಿಹಾರಕ್ಕಾಗಿ ವಾಸ್ತುಶಿಲ್ಪ ಮಾದರಿಯನ್ನು ರಚಿಸಿ.
|
|
|
|
|
|
## ನಿಯೋಜನೆ
|
|
|
|
|
|
[ಬೇರೊಂದು ಮಾದರಿಯನ್ನು ಪ್ರಯತ್ನಿಸಿ](assignment.md)
|
|
|
|
|
|
---
|
|
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
|
**ಅಸ್ವೀಕರಣ**:
|
|
|
ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |