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.
242 lines
20 KiB
242 lines
20 KiB
# உணவு வகை வகைப்பகுதிகள் 2
|
|
|
|
இரண்டாவது வகை பயிலலில், நீங்கள் எண்களின் தரவை வகைப்படுத்த மேலும் வழிகளை ஆராய்வீர்கள். நீங்கள் ஒரு வகைப்பாடு மூலம் மற்றொன்றைப் பொருத்து தேர்ந்தெடுப்பதன் விளைவுகளையும் கற்றுக்கொள்ளவீர்கள்.
|
|
|
|
## [முன்னுரை தேர்வுத் தொகுப்பு](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
### முன் தேவை
|
|
|
|
நீங்கள் முந்தைய பாடங்களை முடித்து, இந்த 4-பாட வகுப்பு அடைவின் ரூட்டில் உள்ள உங்கள் `data` கோப்பகத்தில் _cleaned_cuisines.csv_ என்ற சுத்திகரிக்கப்பட்ட தரவுத்தொகுதியை வைத்திருக்கிறீர்கள் என நாம் கருதுகிறோம்.
|
|
|
|
### தயார்ப்பு
|
|
|
|
சுத்திகரிக்கப்பட்ட தரவுத்தொகுதியுடன் உங்கள் _notebook.ipynb_ கோப்பை ஏற்றியுள்ளோம் மற்றும் மாடல் கட்டமைப்பு செயல்முறைக்கே தயாராக X மற்றும் y தரவிரேஞர் பிரிவுகளாக பிரித்து வைத்துள்ளோம்.
|
|
|
|
## ஒரு வகைப்படுத்தும் வரைபடம்
|
|
|
|
முந்தையதாக, நீங்கள் Microsoft இன் சீட் மூலம் தரவை வகைப்படுத்துவதற்கான பல விருப்பங்களை கற்றிருந்தீர்கள். Scikit-learn ஒரு சமமான, ஆனால் மேலும் நுணுக்கமான சீட் கொடுக்கும், இது உங்கள் மதிப்பீட்டாளர்களை (மற்றொரு பெயராக வகைப்பாடு) மேலும் குறைக்க உதவும்:
|
|
|
|

|
|
> குறிப்பு: [இந்த வரைபடத்தை ஆன்லைனில் பார்வையிட](https://scikit-learn.org/stable/tutorial/machine_learning_map/) மற்றும் பாதையில் சொடுக்கி ஆவணங்களை படியுங்கள்.
|
|
|
|
### திட்டம்
|
|
|
|
இந்த வரைபடம் உங்கள் தரவை தெளிவாகப் புரிந்துகொண்டதும் மிகவும் உதவுகிறது, ஏனெனில் நீங்கள் அதன் பாதைகளை 'நடக்க' முடியும்:
|
|
|
|
- நமக்கு 50 மாதிரிகள் மேல் உள்ளன
|
|
- ஒரு பிரிவை முன்னறிவிக்க விரும்புகிறோம்
|
|
- எங்களிடம் குறிச்சொல் அடிக்கப்பட்ட தரவு உள்ளது
|
|
- மாதிரிகள் 100K க்கும் குறைவாக உள்ளன
|
|
- ✨ நாங்கள் Linear SVC ஐ தேர்ந்தெடுக்கலாம்
|
|
- அது வேலை செய்யாவிட்டால், எண் தரவு இருப்பதால்
|
|
- ✨ KNeighbors வகைப்பாட்டை முயற்சி செய்யலாம்
|
|
- அது வேலையில்லையெனில், ✨ SVC மற்றும் ✨ Ensemble வகைப்பாட்டாளர்களை முயற்சி செய்யலாம்
|
|
|
|
இது மிகவும் உதவிகரமான பாதையாகும்.
|
|
|
|
## பயிற்சி - தரவை பிரி
|
|
|
|
இந்த பாதையை தொடர்வதன் மூலம், சில நூலகங்களை இறக்குமதி செய்வதிலிருந்து தொடங்க வேண்டும்.
|
|
|
|
1. தேவையான நூலகங்களை இறக்குமதி செய்யவும்:
|
|
|
|
```python
|
|
from sklearn.neighbors import KNeighborsClassifier
|
|
from sklearn.linear_model import LogisticRegression
|
|
from sklearn.svm import SVC
|
|
from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier
|
|
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
|
|
import numpy as np
|
|
```
|
|
|
|
1. பயிற்சி மற்றும் சோதனை தரவை பிரிக்கவும்:
|
|
|
|
```python
|
|
X_train, X_test, y_train, y_test = train_test_split(cuisines_features_df, cuisines_label_df, test_size=0.3)
|
|
```
|
|
|
|
## கோடு வகைப்படுத்தி Linear SVC
|
|
|
|
Support-Vector clustering (SVC) என்றது Support-Vector இயந்திரங்களின் குடும்பத்தில் ஒரு உறுப்பினராகும் (இதுபற்றி இதே கீழே மேலும் கற்றுக் கொள்ளுங்கள்). இந்த முறையில், குறிச்சொற்களை எப்படி தொகுக்கவேண்டும் என்பது குறித்து 'kernel' ஐ தேர்ந்தெடுக்கலாம். 'C' அளவுரு 'regularization' ஐ குறிக்கிறது, இது அளவுருக்களின் பயன்திறனை ஒழுங்குபடுத்துகிறது. kernel பலவற்றில் ஒன்றாக இருக்கலாம்; இங்கே நாங்கள் 'linear' என அமைத்து Linear SVC பயன்படுத்துவதாக உறுதிசெய்கிறோம். Probability இயல்பாக 'false'; இங்கே 'true' என அமைத்து probability மதிப்பீடுகளை சேகரிக்கிறோம். தரவை இடைமாற்றிக் கொள்ள 'random state' ஐ 0 என அமைத்தோம்.
|
|
|
|
### பயிற்சி - ஒரு Linear SVC ஐ பயன்படுத்தவும்
|
|
|
|
தரவரிசையாக ஒரு வகைப்பாடு அடுக்கை உருவாக்கி தொடங்குங்கள். நாங்கள் பரிசோதிப்பதுக்கு கண்டிப்பாக இதில் கட்டாயமாக சேர்க்கலாம்.
|
|
|
|
1. Linear SVC என்பதன் மூலம் தொடங்குங்கள்:
|
|
|
|
```python
|
|
C = 10
|
|
# வெவ்வேறு வகைப்படுத்திகளைக் உருவாக்கவும்.
|
|
classifiers = {
|
|
'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0)
|
|
}
|
|
```
|
|
|
|
2. Linear SVC ஐ கொண்டு உங்கள் மாடலை பயிற்சி செய்யவும், அறிக்கை அச்சிடவும்:
|
|
|
|
```python
|
|
n_classifiers = len(classifiers)
|
|
|
|
for index, (name, classifier) in enumerate(classifiers.items()):
|
|
classifier.fit(X_train, np.ravel(y_train))
|
|
|
|
y_pred = classifier.predict(X_test)
|
|
accuracy = accuracy_score(y_test, y_pred)
|
|
print("Accuracy (train) for %s: %0.1f%% " % (name, accuracy * 100))
|
|
print(classification_report(y_test,y_pred))
|
|
```
|
|
|
|
முடிவு மிகவும் நன்று:
|
|
|
|
```output
|
|
Accuracy (train) for Linear SVC: 78.6%
|
|
precision recall f1-score support
|
|
|
|
chinese 0.71 0.67 0.69 242
|
|
indian 0.88 0.86 0.87 234
|
|
japanese 0.79 0.74 0.76 254
|
|
korean 0.85 0.81 0.83 242
|
|
thai 0.71 0.86 0.78 227
|
|
|
|
accuracy 0.79 1199
|
|
macro avg 0.79 0.79 0.79 1199
|
|
weighted avg 0.79 0.79 0.79 1199
|
|
```
|
|
|
|
## K-Neighbors வகைப்பாட்டாளர்
|
|
|
|
K-Neighbors என்பது "அருகிலுள்ளோர்" குடும்பத்தின் ஒரு உறுப்பினராகும், இது கண்காணிப்பும் கண்காணிக்கப்படாத கற்றலுக்கும் பயன்படுத்தப்படலாம். இதில், முன்கூட்டியே ஒரு குறிப்பிட்ட எண்ணிக்கை புள்ளிகள் உருவாக்கப்படுகின்றன மற்றும் தரவு அந்த புள்ளிகளுக்கு வசிப்பதாக சேகரிக்கப்படுகிறது, பொதுவான குறிச்சொற்களை தரவை முன்கூட்டியே கணிக்க உதவுகின்றது.
|
|
|
|
### பயிற்சி - K-Neighbors வகைப்பாட்டாளரை பயன்படுத்தவும்
|
|
|
|
முந்தைய வகைப்பாட்டாளர் நன்றாக வேலை செய்தது, ஆனால் நம்பகத் தன்மை மேல் பெறலாம். K-Neighbors வகைப்பாட்டாளரை முயற்சி செய்யுங்கள்.
|
|
|
|
1. உங்கள் வகைப்பாடு அடுக்கில் ஒரு வரிசை சேர்க்கவும் (Linear SVC உருப்படியின் பின் ஒரு கமா சேர்க்கவும்):
|
|
|
|
```python
|
|
'KNN classifier': KNeighborsClassifier(C),
|
|
```
|
|
|
|
முடிவு கொஞ்சம் மோசமாக உள்ளது:
|
|
|
|
```output
|
|
Accuracy (train) for KNN classifier: 73.8%
|
|
precision recall f1-score support
|
|
|
|
chinese 0.64 0.67 0.66 242
|
|
indian 0.86 0.78 0.82 234
|
|
japanese 0.66 0.83 0.74 254
|
|
korean 0.94 0.58 0.72 242
|
|
thai 0.71 0.82 0.76 227
|
|
|
|
accuracy 0.74 1199
|
|
macro avg 0.76 0.74 0.74 1199
|
|
weighted avg 0.76 0.74 0.74 1199
|
|
```
|
|
|
|
✅ [K-Neighbors பற்றி கற்றுக்கொள்ளுங்கள்](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
|
|
|
|
## Support Vector Classifier
|
|
|
|
Support-Vector வகைப்பாட்டாளர்கள் [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) குடும்பத்தில் உள்ளவர், வகைப்படுத்தல் மற்றும் மொழி கணக்கீடு பணிகளுக்கு பயன்படும். SVMகள் "பயிற்சி உதாரணங்களை விண்வெளிக்குள் புள்ளிகளாக வரைபடம் செய்கின்றன" மற்றும் இரண்டு பிரிவுகளுக்கிடையிலான தூரத்தை அதிகரிக்க முயல்கின்றன. பின்வரும் தரவு இந்த இடத்துக்குள் வரைபடப்படுகின்றன, அதன் பிரிவை கணிக்க.
|
|
|
|
### பயிற்சி - Support Vector Classifier ஐ பயன்படுத்தவும்
|
|
|
|
சிறிது மேல் நம்பகத்தன்மைக்கு Support Vector Classifier ஐ முயற்சி செய்வோமாக.
|
|
|
|
1. K-Neighbors உருப்படியின் பின் கமாவை சேர்க்கவும், பிறகு இந்த வரியை சேர்க்கவும்:
|
|
|
|
```python
|
|
'SVC': SVC(),
|
|
```
|
|
|
|
முடிவு மிகவும் நன்று!
|
|
|
|
```output
|
|
Accuracy (train) for SVC: 83.2%
|
|
precision recall f1-score support
|
|
|
|
chinese 0.79 0.74 0.76 242
|
|
indian 0.88 0.90 0.89 234
|
|
japanese 0.87 0.81 0.84 254
|
|
korean 0.91 0.82 0.86 242
|
|
thai 0.74 0.90 0.81 227
|
|
|
|
accuracy 0.83 1199
|
|
macro avg 0.84 0.83 0.83 1199
|
|
weighted avg 0.84 0.83 0.83 1199
|
|
```
|
|
|
|
✅ [Support-Vectors பற்றி கற்றுக்கொள்ளுங்கள்](https://scikit-learn.org/stable/modules/svm.html#svm)
|
|
|
|
## Ensemble வகைப்பாட்டாளர்கள்
|
|
|
|
முந்தைய சோதனை நன்றாக இருந்த போதிலும், இறுதிப்பாதையை தொடர்வோம். 'Ensemble வகைப்பாட்டாளர்கள்', குறிப்பாக Random Forest மற்றும் AdaBoost ஐ முயற்சிப்போம்:
|
|
|
|
```python
|
|
'RFST': RandomForestClassifier(n_estimators=100),
|
|
'ADA': AdaBoostClassifier(n_estimators=100)
|
|
```
|
|
|
|
மிக நல்ல முடிவு, குறிப்பாக Random Forest இல்:
|
|
|
|
```output
|
|
Accuracy (train) for RFST: 84.5%
|
|
precision recall f1-score support
|
|
|
|
chinese 0.80 0.77 0.78 242
|
|
indian 0.89 0.92 0.90 234
|
|
japanese 0.86 0.84 0.85 254
|
|
korean 0.88 0.83 0.85 242
|
|
thai 0.80 0.87 0.83 227
|
|
|
|
accuracy 0.84 1199
|
|
macro avg 0.85 0.85 0.84 1199
|
|
weighted avg 0.85 0.84 0.84 1199
|
|
|
|
Accuracy (train) for ADA: 72.4%
|
|
precision recall f1-score support
|
|
|
|
chinese 0.64 0.49 0.56 242
|
|
indian 0.91 0.83 0.87 234
|
|
japanese 0.68 0.69 0.69 254
|
|
korean 0.73 0.79 0.76 242
|
|
thai 0.67 0.83 0.74 227
|
|
|
|
accuracy 0.72 1199
|
|
macro avg 0.73 0.73 0.72 1199
|
|
weighted avg 0.73 0.72 0.72 1199
|
|
```
|
|
|
|
✅ [Ensemble வகைப்பாட்டாளர்கள் பற்றி கற்றுக்கொள்ளுங்கள்](https://scikit-learn.org/stable/modules/ensemble.html)
|
|
|
|
இந்த மெஷின் கற்றல் முறை "பல அடிவகைகளின் முன்னறிவிப்புகளை இணைத்துக் கொண்டு" மாடல் தரத்தைக் மேம்படுத்துகிறது. உதாரணமாக, நாங்கள் Random Trees மற்றும் AdaBoost பயன்படுத்தினோம்.
|
|
|
|
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), ஒரு சராசரி முறை, 'அருச்செடி மரங்கள்' என்ற ஒரு 'காடை' உருவாக்குகிறது, இது மரபுக்கேற்ற முறையில் overfitting தவிர்க்க அசாதாரணத்தைக் கொண்டுள்ளது. n_estimators அளவுரு மரங்களின் எண்ணிக்கையை கொடுக்கிறது.
|
|
|
|
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) ஒரு வகைப்பாட்டாளரை தரவுத்தொகுதியில் பொருத்தி, அதன் பிரதிகளை ஒரே தரவுத்தொகுதியில் பொருத்துகிறது. தவறாக வகைப்படுத்தப்பட்ட உருப்படிகளின் எடைகளை கவனித்து அடுத்த வகைப்பாட்டாளருக்கு சரிசெய்து பொருத்தத்தை மேம்படுத்துகிறது.
|
|
|
|
---
|
|
|
|
## 🚀சவால்
|
|
|
|
இந்த தொழில்நுட்பங்களில் ஒவ்வொன்றும் மிகப்பெரிய அளவுருக்களை கொண்டுள்ளது, அவற்றை நீங்கள் மாற்றி பார்க்கலாம். ஒவ்வொன்றின் இயல்புநிலை அளவுருக்களை ஆராய்ந்து, அவற்றை மாற்றுவதை மாடல் தரத்திற்கு என்ன விளைவுகள் வருமென்பதை யோசிக்கவும்.
|
|
|
|
## [பாட முடிந்த பின் தேர்வு](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
## மதிப்பாய்வு & சுயமரியாதை கற்பது
|
|
|
|
இந்த பாடங்களில் பல தொழின்சொற்கள் உள்ளன, எனவே சில நிமிஷங்கள் எடுத்துக் கொண்டு [இந்த பட்டியலை](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) திரும்பிப் பாருங்கள்!
|
|
|
|
## கடமை
|
|
|
|
[அளவுரு விளையாட்டு](assignment.md)
|
|
|
|
---
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
**செலவுரிமை**:
|
|
இந்த ஆவணம் AI மொழிபெயர்ப்பு சேவை [Co-op Translator](https://github.com/Azure/co-op-translator) மூலம் மொழிபெயர்க்கப்பட்டது. நாங்கள் துல்லியத்தன்மைக்கு முயற்சி செய்தாலும், தானியங்கி மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறான தகவல்கள் இருக்கக்கூடும் என்பதை கவனத்தில் கொள்ளவும். முதற்பத்திரம் அதன் மதிப்பீடு மொழியில் அதிகாரப்பூர்வ ஆதாரமாகக் கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு எங்களால் பொறுப்பேற்க முடியாது.
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |