You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/kn/4-Classification/2-Classifiers-1/README.md

248 lines
26 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# ಆಹಾರ ವರ್ಗೀಕರಣಗಳು 1
ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಹಿಂದಿನ ಪಾಠದಿಂದ ಉಳಿಸಿಕೊಂಡ ಸಮತೋಲನ, ಸ್ವಚ್ಛವಾದ ಆಹಾರಗಳ ಬಗ್ಗೆ ಸಂಪೂರ್ಣ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಬಳಸುತ್ತೀರಿ.
ನೀವು ಈ ಡೇಟಾಸೆಟ್ ಅನ್ನು ವಿವಿಧ ವರ್ಗೀಕರಣಕಾರಿಗಳೊಂದಿಗೆ ಬಳಸುತ್ತೀರಿ _ಒದು ಗುಂಪಿನ ಪದಾರ್ಥಗಳ ಆಧಾರದ ಮೇಲೆ ನೀಡಲಾದ ರಾಷ್ಟ್ರೀಯ ಆಹಾರವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು_. ಇದನ್ನು ಮಾಡುವಾಗ, ವರ್ಗೀಕರಣ ಕಾರ್ಯಗಳಿಗೆ ಆಲ್ಗೋರಿದಮ್‌ಗಳನ್ನು ಹೇಗೆ ಬಳಸಬಹುದು ಎಂಬುದರ ಬಗ್ಗೆ ನೀವು ಹೆಚ್ಚು ತಿಳಿಯುತ್ತೀರಿ.
## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/)
# ತಯಾರಿ
ನೀವು [ಪಾಠ 1](../1-Introduction/README.md) ಪೂರ್ಣಗೊಳಿಸಿದ್ದೀರಿ ಎಂದು ಊಹಿಸಿ, ಈ ನಾಲ್ಕು ಪಾಠಗಳಿಗಾಗಿ ರೂಟ್ `/data` ಫೋಲ್ಡರ್‌ನಲ್ಲಿ _cleaned_cuisines.csv_ ಫೈಲ್ ಇರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.
## ವ್ಯಾಯಾಮ - ರಾಷ್ಟ್ರೀಯ ಆಹಾರವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ
1. ಈ ಪಾಠದ _notebook.ipynb_ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತ, ಆ ಫೈಲ್ ಮತ್ತು Pandas ಲೈಬ್ರರಿಯನ್ನು ಆಮದುಮಾಡಿ:
```python
import pandas as pd
cuisines_df = pd.read_csv("../data/cleaned_cuisines.csv")
cuisines_df.head()
```
ಡೇಟಾ ಹೀಗೆ ಕಾಣುತ್ತದೆ:
| | 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 |
| 1 | 1 | indian | 1 | 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 |
| 4 | 4 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1. ಈಗ, ಇನ್ನಷ್ಟು ಲೈಬ್ರರಿಗಳನ್ನು ಆಮದುಮಾಡಿ:
```python
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve
from sklearn.svm import SVC
import numpy as np
```
1. ತರಬೇತಿಗಾಗಿ X ಮತ್ತು y ಸಂಯೋಜನೆಗಳನ್ನು ಎರಡು ಡೇಟಾಫ್ರೇಮ್‌ಗಳಾಗಿ ವಿಭಜಿಸಿ. `cuisine` ಲೇಬಲ್‌ಗಳ ಡೇಟಾಫ್ರೇಮ್ ಆಗಬಹುದು:
```python
cuisines_label_df = cuisines_df['cuisine']
cuisines_label_df.head()
```
ಇದು ಹೀಗೆ ಕಾಣುತ್ತದೆ:
```output
0 indian
1 indian
2 indian
3 indian
4 indian
Name: cuisine, dtype: object
```
1.`Unnamed: 0` ಕಾಲಮ್ ಮತ್ತು `cuisine` ಕಾಲಮ್ ಅನ್ನು `drop()` ಕರೆ ಮಾಡಿ ತೆಗೆದುಹಾಕಿ. ಉಳಿದ ಡೇಟಾವನ್ನು ತರಬೇತಿಗೆ ಬಳಸಬಹುದಾದ ಲಕ್ಷಣಗಳಾಗಿ ಉಳಿಸಿ:
```python
cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)
cuisines_feature_df.head()
```
ನಿಮ್ಮ ಲಕ್ಷಣಗಳು ಹೀಗೆ ಕಾಣುತ್ತವೆ:
| | 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 |
ಈಗ ನೀವು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತಿಗೆ ಸಿದ್ಧರಾಗಿದ್ದೀರಿ!
## ನಿಮ್ಮ ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು
ನಿಮ್ಮ ಡೇಟಾ ಸ್ವಚ್ಛವಾಗಿದ್ದು ತರಬೇತಿಗೆ ಸಿದ್ಧವಾಗಿದೆ, ನೀವು ಯಾವ ಆಲ್ಗೋರಿದಮ್ ಅನ್ನು ಬಳಸಬೇಕೆಂದು ನಿರ್ಧರಿಸಬೇಕು.
Scikit-learn ವರ್ಗೀಕರಣವನ್ನು Supervised Learning ಅಡಿಯಲ್ಲಿ ಗುಂಪುಮಾಡುತ್ತದೆ, ಮತ್ತು ಆ ವರ್ಗದಲ್ಲಿ ನೀವು ವರ್ಗೀಕರಿಸಲು ಹಲವಾರು ವಿಧಾನಗಳನ್ನು ಕಾಣುತ್ತೀರಿ. [ವೈವಿಧ್ಯ](https://scikit-learn.org/stable/supervised_learning.html) ಮೊದಲ ನೋಟದಲ್ಲಿ ಸ್ವಲ್ಪ ಗೊಂದಲಕಾರಿಯಾಗಿದೆ. ಕೆಳಗಿನ ವಿಧಾನಗಳು ಎಲ್ಲವೂ ವರ್ಗೀಕರಣ ತಂತ್ರಗಳನ್ನು ಒಳಗೊಂಡಿವೆ:
- ರೇಖೀಯ ಮಾದರಿಗಳು
- ಬೆಂಬಲ ವೆಕ್ಟರ್ ಯಂತ್ರಗಳು
- ಸ್ಟೋಚಾಸ್ಟಿಕ್ ಗ್ರೇಡಿಯಂಟ್ ಡಿಸೆಂಟ್
- ಸಮೀಪದ ನೆರೆಹೊರೆಯವರು
- ಗೌಸಿಯನ್ ಪ್ರಕ್ರಿಯೆಗಳು
- ನಿರ್ಧಾರ ಮರಗಳು
- ಎನ್ಸೆಂಬಲ್ ವಿಧಾನಗಳು (ಮತದಾನ ವರ್ಗೀಕರಣಕಾರಿಗಳು)
- ಬಹು ವರ್ಗ ಮತ್ತು ಬಹು ಔಟ್‌ಪುಟ್ ಆಲ್ಗೋರಿದಮ್‌ಗಳು (ಬಹು ವರ್ಗ ಮತ್ತು ಬಹು ಲೇಬಲ್ ವರ್ಗೀಕರಣ, ಬಹು ವರ್ಗ-ಬಹು ಔಟ್‌ಪುಟ್ ವರ್ಗೀಕರಣ)
> ನೀವು [ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಡೇಟಾ ವರ್ಗೀಕರಿಸಲು](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification) ಕೂಡ ಬಳಸಬಹುದು, ಆದರೆ ಅದು ಈ ಪಾಠದ ವ್ಯಾಪ್ತಿಗೆ ಹೊರಗಿದೆ.
### ಯಾವ ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬೇಕು?
ಹೀಗಾಗಿ, ನೀವು ಯಾವ ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬೇಕು? ಬಹುಶಃ, ಹಲವಾರು ವಿಧಾನಗಳನ್ನು ಪ್ರಯೋಗಿಸಿ ಉತ್ತಮ ಫಲಿತಾಂಶವನ್ನು ಹುಡುಕುವುದು ಪರೀಕ್ಷಿಸುವ ಒಂದು ಮಾರ್ಗ. Scikit-learn ಒಂದು [ಪಕ್ಕಪಕ್ಕದ ಹೋಲಿಕೆ](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) ಒದಗಿಸುತ್ತದೆ, ಇದರಲ್ಲಿ KNeighbors, SVC ಎರಡು ರೀತಿಗಳು, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB ಮತ್ತು QuadraticDiscrinationAnalysis ಹೋಲಿಕೆ ಮಾಡಲಾಗಿದೆ, ಫಲಿತಾಂಶಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಲಾಗಿದೆ:
![classification ಹೋಲಿಕೆ](../../../../translated_images/kn/comparison.edfab56193a85e7f.webp)
> Scikit-learn ಡಾಕ್ಯುಮೆಂಟೇಶನ್‌ನಲ್ಲಿ ರಚಿಸಲಾದ ಪ್ಲಾಟ್‌ಗಳು
> AutoML ಈ ಸಮಸ್ಯೆಯನ್ನು ಕ್ಲೌಡ್‌ನಲ್ಲಿ ಈ ಹೋಲಿಕೆಗಳನ್ನು ನಡೆಸಿ ನಿಮ್ಮ ಡೇಟಾಗೆ ಅತ್ಯುತ್ತಮ ಆಲ್ಗೋರಿದಮ್ ಆಯ್ಕೆ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಇದನ್ನು [ಇಲ್ಲಿ](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott) ಪ್ರಯತ್ನಿಸಿ
### ಉತ್ತಮ ವಿಧಾನ
ಅನಿರೀಕ್ಷಿತವಾಗಿ ಊಹಿಸುವುದಕ್ಕಿಂತ ಉತ್ತಮ ವಿಧಾನವೆಂದರೆ, ಈ ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದಾದ [ML ಚೀಟ್ ಶೀಟ್](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) ನಲ್ಲಿ ನೀಡಲಾದ ಆಲೋಚನೆಗಳನ್ನು ಅನುಸರಿಸುವುದು. ಇಲ್ಲಿ, ನಮ್ಮ ಬಹು ವರ್ಗ ಸಮಸ್ಯೆಗೆ ಕೆಲವು ಆಯ್ಕೆಗಳು ಇವೆ:
![ಬಹು ವರ್ಗ ಸಮಸ್ಯೆಗಳ ಚೀಟ್‌ಶೀಟ್](../../../../translated_images/kn/cheatsheet.07a475ea444d2223.webp)
> ಮೈಕ್ರೋಸಾಫ್ಟ್‌ನ ಆಲ್ಗೋರಿದಮ್ ಚೀಟ್ ಶೀಟ್‌ನ ಒಂದು ಭಾಗ, ಬಹು ವರ್ಗ ವರ್ಗೀಕರಣ ಆಯ್ಕೆಗಳನ್ನು ವಿವರಿಸುತ್ತದೆ
✅ ಈ ಚೀಟ್ ಶೀಟ್ ಅನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ, ಮುದ್ರಿಸಿ, ನಿಮ್ಮ ಗೋಡೆಯ ಮೇಲೆ ಹಚ್ಚಿ!
### ತರ್ಕ
ನಾವು ಹೊಂದಿರುವ ನಿರ್ಬಂಧಗಳನ್ನು ಗಮನಿಸಿ ವಿಭಿನ್ನ ವಿಧಾನಗಳ ಮೂಲಕ ತರ್ಕ ಮಾಡೋಣ:
- **ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು ತುಂಬಾ ಭಾರವಾಗಿವೆ**. ನಮ್ಮ ಸ್ವಚ್ಛ ಆದರೆ ಕನಿಷ್ಠ ಡೇಟಾಸೆಟ್ ಮತ್ತು ನೋಟ್ಬುಕ್‌ಗಳ ಮೂಲಕ ಸ್ಥಳೀಯವಾಗಿ ತರಬೇತಿ ನಡೆಸುತ್ತಿರುವುದರಿಂದ, ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು ಈ ಕಾರ್ಯಕ್ಕೆ ತುಂಬಾ ಭಾರವಾಗಿವೆ.
- **ಎರಡು ವರ್ಗದ ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಬಳಸುವುದಿಲ್ಲ**. ನಾವು ಎರಡು ವರ್ಗದ ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ಬಳಸುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ one-vs-all ನಿಯಮ ಹೊರತುಪಡಿಸಲಾಗಿದೆ.
- **ನಿರ್ಧಾರ ಮರ ಅಥವಾ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಕೆಲಸ ಮಾಡಬಹುದು**. ನಿರ್ಧಾರ ಮರ ಕೆಲಸ ಮಾಡಬಹುದು, ಅಥವಾ ಬಹು ವರ್ಗ ಡೇಟಾಗೆ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್.
- **ಬಹು ವರ್ಗ ಬೂಸ್ಟೆಡ್ ನಿರ್ಧಾರ ಮರಗಳು ಬೇರೆ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುತ್ತವೆ**. ಬಹು ವರ್ಗ ಬೂಸ್ಟೆಡ್ ನಿರ್ಧಾರ ಮರವು ಅಪ್ರಮಾಣಿತ ಕಾರ್ಯಗಳಿಗೆ ಸೂಕ್ತ, ಉದಾ: ರ್ಯಾಂಕಿಂಗ್ ನಿರ್ಮಾಣಕ್ಕೆ, ಆದ್ದರಿಂದ ನಮ್ಮಿಗೆ ಉಪಯುಕ್ತವಲ್ಲ.
### Scikit-learn ಬಳಕೆ
ನಾವು ನಮ್ಮ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸಲು Scikit-learn ಅನ್ನು ಬಳಸುತ್ತೇವೆ. ಆದರೆ, Scikit-learn ನಲ್ಲಿ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಳಸಲು ಹಲವಾರು ವಿಧಾನಗಳಿವೆ. [ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression) ನೋಡಿ.
ಮೂಲತಃ ಎರಡು ಪ್ರಮುಖ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳಿವೆ - `multi_class` ಮತ್ತು `solver` - ನಾವು Scikit-learn ಗೆ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮಾಡಲು ಕೇಳುವಾಗ ಅವುಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬೇಕು. `multi_class` ಮೌಲ್ಯವು ನಿರ್ದಿಷ್ಟ ವರ್ತನೆಯನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ. `solver` ಮೌಲ್ಯವು ಯಾವ ಆಲ್ಗೋರಿದಮ್ ಬಳಸಬೇಕೆಂದು ಸೂಚಿಸುತ್ತದೆ. ಎಲ್ಲಾ ಸೊಲ್ವರ್‌ಗಳು ಎಲ್ಲಾ `multi_class` ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ.
ಡಾಕ್ಯುಮೆಂಟ್ ಪ್ರಕಾರ, ಬಹು ವರ್ಗ ಪ್ರಕರಣದಲ್ಲಿ, ತರಬೇತಿ ಆಲ್ಗೋರಿದಮ್:
- **`multi_class` ಆಯ್ಕೆಯನ್ನು `ovr` ಗೆ ಸೆಟ್ ಮಾಡಿದರೆ one-vs-rest (OvR) ಯೋಜನೆಯನ್ನು ಬಳಸುತ್ತದೆ**
- **`multi_class` ಆಯ್ಕೆಯನ್ನು `multinomial` ಗೆ ಸೆಟ್ ಮಾಡಿದರೆ ಕ್ರಾಸ್-ಎಂಟ್ರೋಪಿ ನಷ್ಟವನ್ನು ಬಳಸುತ್ತದೆ**. (ಪ್ರಸ್ತುತ `multinomial` ಆಯ್ಕೆ lbfgs, sag, saga ಮತ್ತು newton-cg ಸೊಲ್ವರ್‌ಗಳಿಗೆ ಮಾತ್ರ ಬೆಂಬಲ ಇದೆ.)"
> 🎓 ಇಲ್ಲಿ 'ಯೋಜನೆ' ಎಂದರೆ 'ovr' (ಒಂದು-ವಿರುದ್ಧ-ಮತ್ತು) ಅಥವಾ 'multinomial'. ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮೂಲತಃ ದ್ವಿವರ್ಗ ವರ್ಗೀಕರಣಕ್ಕೆ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ, ಈ ಯೋಜನೆಗಳು ಬಹು ವರ್ಗ ವರ್ಗೀಕರಣ ಕಾರ್ಯಗಳನ್ನು ಉತ್ತಮವಾಗಿ ನಿರ್ವಹಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ. [ಮೂಲ](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 'ಸೊಲ್ವರ್' ಅನ್ನು "ಆಪ್ಟಿಮೈಜೆಷನ್ ಸಮಸ್ಯೆಯಲ್ಲಿ ಬಳಸುವ ಆಲ್ಗೋರಿದಮ್" ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. [ಮೂಲ](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Scikit-learn ಈ ಟೇಬಲ್ ಅನ್ನು ನೀಡುತ್ತದೆ, ವಿವಿಧ ಡೇಟಾ ರಚನೆಗಳಿಂದ ಉಂಟಾಗುವ ಸವಾಲುಗಳನ್ನು ಸೊಲ್ವರ್‌ಗಳು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತವೆ ಎಂಬುದನ್ನು ವಿವರಿಸಲು:
![ಸೊಲ್ವರ್‌ಗಳು](../../../../translated_images/kn/solvers.5fc648618529e627.webp)
## ವ್ಯಾಯಾಮ - ಡೇಟಾವನ್ನು ವಿಭಜಿಸಿ
ನೀವು ಇತ್ತೀಚೆಗೆ ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಗ್ಗೆ ಕಲಿತಿದ್ದೀರಿ, ಆದ್ದರಿಂದ ಮೊದಲ ತರಬೇತಿ ಪ್ರಯತ್ನಕ್ಕಾಗಿ ನಾವು ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮೇಲೆ ಗಮನಹರಿಸಬಹುದು.
`train_test_split()` ಅನ್ನು ಕರೆ ಮಾಡಿ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಗುಂಪುಗಳಾಗಿ ವಿಭಜಿಸಿ:
```python
X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)
```
## ವ್ಯಾಯಾಮ - ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಅನ್ವಯಿಸಿ
ನೀವು ಬಹು ವರ್ಗ ಪ್ರಕರಣವನ್ನು ಬಳಸುತ್ತಿರುವುದರಿಂದ, ಯಾವ _ಯೋಜನೆ_ ಬಳಸಬೇಕು ಮತ್ತು ಯಾವ _ಸೊಲ್ವರ್_ ಸೆಟ್ ಮಾಡಬೇಕು ಎಂದು ಆಯ್ಕೆ ಮಾಡಬೇಕು. ಬಹು ವರ್ಗ ಸೆಟ್ಟಿಂಗ್ ಮತ್ತು **liblinear** ಸೊಲ್ವರ್ ಬಳಸಿ LogisticRegression ಅನ್ನು ತರಬೇತಿಗೆ ಬಳಸಿ.
1. multi_class ಅನ್ನು `ovr` ಗೆ ಮತ್ತು ಸೊಲ್ವರ್ ಅನ್ನು `liblinear` ಗೆ ಸೆಟ್ ಮಾಡಿ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ರಚಿಸಿ:
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
model = lr.fit(X_train, np.ravel(y_train))
accuracy = model.score(X_test, y_test)
print ("Accuracy is {}".format(accuracy))
```
`lbfgs` ಎಂಬ ಬೇರೆ ಸೊಲ್ವರ್ ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ, ಅದು ಸಾಮಾನ್ಯವಾಗಿ ಡೀಫಾಲ್ಟ್ ಆಗಿರುತ್ತದೆ
> ಗಮನಿಸಿ, ಅಗತ್ಯವಿದ್ದಾಗ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಫ್ಲ್ಯಾಟ್ ಮಾಡಲು Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) ಫಂಕ್ಷನ್ ಬಳಸಿ.
ನಿಖರತೆ **80%** ಕ್ಕಿಂತ ಹೆಚ್ಚು ಉತ್ತಮವಾಗಿದೆ!
1. ನೀವು ಈ ಮಾದರಿಯನ್ನು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿರುವುದನ್ನು ಡೇಟಾದ ಒಂದು ಸಾಲನ್ನು (#50) ಪರೀಕ್ಷಿಸುವ ಮೂಲಕ ನೋಡಬಹುದು:
```python
print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}')
print(f'cuisine: {y_test.iloc[50]}')
```
ಫಲಿತಾಂಶ ಮುದ್ರಿತವಾಗಿದೆ:
```output
ingredients: Index(['cilantro', 'onion', 'pea', 'potato', 'tomato', 'vegetable_oil'], dtype='object')
cuisine: indian
```
✅ ಬೇರೆ ಸಾಲಿನ ಸಂಖ್ಯೆಯನ್ನು ಪ್ರಯತ್ನಿಸಿ ಮತ್ತು ಫಲಿತಾಂಶಗಳನ್ನು ಪರಿಶೀಲಿಸಿ
1. ಇನ್ನಷ್ಟು ಆಳವಾಗಿ ಪರಿಶೀಲಿಸುವಾಗ, ನೀವು ಈ ಭವಿಷ್ಯವಾಣಿಯ ನಿಖರತೆಯನ್ನು ಪರಿಶೀಲಿಸಬಹುದು:
```python
test= X_test.iloc[50].values.reshape(-1, 1).T
proba = model.predict_proba(test)
classes = model.classes_
resultdf = pd.DataFrame(data=proba, columns=classes)
topPrediction = resultdf.T.sort_values(by=[0], ascending = [False])
topPrediction.head()
```
ಫಲಿತಾಂಶ ಮುದ್ರಿಸಲಾಗಿದೆ - ಭಾರತೀಯ ಆಹಾರವೇ ಇದರ ಅತ್ಯುತ್ತಮ ಊಹೆ, ಉತ್ತಮ ಸಾಧ್ಯತೆಯೊಂದಿಗೆ:
| | 0 |
| -------: | -------: |
| indian | 0.715851 |
| chinese | 0.229475 |
| japanese | 0.029763 |
| korean | 0.017277 |
| thai | 0.007634 |
✅ ಈ ಮಾದರಿ ಭಾರತೀಯ ಆಹಾರ ಎಂದು ಬಹುಶಃ ಖಚಿತವಾಗಿರುವುದಕ್ಕೆ ನೀವು ಕಾರಣವನ್ನು ವಿವರಿಸಬಹುದೇ?
1. ನೀವು ರಿಗ್ರೆಶನ್ ಪಾಠಗಳಲ್ಲಿ ಮಾಡಿದಂತೆ ವರ್ಗೀಕರಣ ವರದಿಯನ್ನು ಮುದ್ರಿಸುವ ಮೂಲಕ ಹೆಚ್ಚಿನ ವಿವರಗಳನ್ನು ಪಡೆಯಿರಿ:
```python
y_pred = model.predict(X_test)
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 |
## 🚀ಸವಾಲು
ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಸ್ವಚ್ಛಗೊಳಿಸಿದ ಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು ಒಂದು ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ, ಇದು ಪದಾರ್ಥಗಳ ಸರಣಿಯ ಆಧಾರದ ಮೇಲೆ ರಾಷ್ಟ್ರೀಯ ಆಹಾರವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬಹುದು. ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸಲು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ನೀಡುವ ಅನೇಕ ಆಯ್ಕೆಗಳನ್ನು ಓದಲು ಸ್ವಲ್ಪ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಿ. 'ಸಾಲ್ವರ್' ಎಂಬ ಕಲ್ಪನೆಗೆ ಇನ್ನಷ್ಟು ಆಳವಾಗಿ ಹೋಗಿ, ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಏನು ನಡೆಯುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ.
## [ಪಾಠೋತ್ತರ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/)
## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ
ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಹಿಂದಿನ ಗಣಿತವನ್ನು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಆಳವಾಗಿ ತಿಳಿದುಕೊಳ್ಳಿ [ಈ ಪಾಠದಲ್ಲಿ](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
## ನಿಯೋಜನೆ
[ಸಾಲ್ವರ್‌ಗಳನ್ನು ಅಧ್ಯಯನ ಮಾಡಿ](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ಅಸ್ವೀಕಾರ**:
ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪುಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->