ക്യൂസിൻ ക്ലാസിഫയറുകൾ 1

April 20, 2026 · View on GitHub

ഈ പാഠത്തിൽ, നിങ്ങൾ ക്യൂസിനുകളെക്കുറിച്ച് സുതാര്യമായ, സഞ്ചിതമായ ഡാറ്റകൾ നിറഞ്ഞ് പൂർത്തിയായ Dataset ഉപയോഗിക്കും.

ഒരു ഗ്രൂപ്പ് ഘടകങ്ങളുടെ അടിസ്ഥാനത്തിൽ ഒരു ന شپുക രാഷ്‌ട്രീയം ക്യൂസിൻ പ്രവചിക്കാൻ നിങ്ങൾ ഈ Dataset വിവിധ ക്ലാസിഫയറുകളുമായി ഉപയോഗിക്കും. ഇത് നടത്തുമ്പോൾ, ക്ലാസിഫിക്കേഷൻ ടാസ്ക്കുകൾക്കായി ആलगൊരിതങ്ങള пайдаланിക്കപ്പെടാവുന്ന ചില മാർഗങ്ങളെക്കുറിച്ച് നിങ്ങൾ കൂടുതൽ പഠിക്കും.

പ്രീ-ലെക്ചർ ക്വിസ്

തയ്യാറെടുപ്പ്

Lesson 1 പൂർത്തീകരിച്ചിട്ടുണ്ടെന്ന് കരുതി, ഈ നാല് പാഠങ്ങൾക്കായി cleaned_cuisines.csv ഫയൽ റൂട്ട് /data ഫോൾഡറിൽ ഉണ്ടെന്ന് ഉറപ്പാക്കുക.

വ്യായാമം - ഒരു റാഷ്‌ട്ര ക്യൂസിൻ പ്രവചിക്കുക

  1. ഈ പാഠത്തിലെ notebook.ipynb ഫോൾഡറിലേക്കു ജോലി ചെയ്ത്, Pandas ലൈബ്രറിയോടൊപ്പം ആ ഫയൽ ഇറക്കുമതി ചെയ്യുക:

    import pandas as pd
    cuisines_df = pd.read_csv("../data/cleaned_cuisines.csv")
    cuisines_df.head()
    

    ഡാറ്റ ഇങ്ങനെ കാണപ്പെടുന്നു:

Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
  1. ഇനി, കൂടുതൽ ചില ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യുക:

    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
    
  2. X, y കോര്‍ഡിനേറ്റുകൾ രണ്ട് Dataframe ആയി പരിശീലനത്തിനായി വിഭജിക്കുക. cuisine ലേബലുകൾ ഉള്ള Dataframe ആയിരിക്കാം:

    cuisines_label_df = cuisines_df['cuisine']
    cuisines_label_df.head()
    

    ഇത് ഇങ്ങനെ പ്രത്യക്ഷപ്പെടും:

    0    indian
    1    indian
    2    indian
    3    indian
    4    indian
    Name: cuisine, dtype: object
    
  3. Unnamed: 0 കോളവും cuisine കോളവും drop() വഴി തള്ളുക. ശേഷിക്കുന്ന ഡാറ്റ ട്രെയിനിങ്ങിനുള്ള ഫീച്ചറുകളായി സംരക്ഷിക്കുക:

    cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)
    cuisines_feature_df.head()
    

    നിങ്ങളുടെ ഫീച്ചറുകൾ ഇങ്ങനെ കാണപ്പെടും:

almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010

ഇപ്പോൾ മോഡൽ ട്രെയിനുചെയ്യാൻ നിങ്ങൾ സജ്ജമാണ്!

നിങ്ങളുടെ ക്ലാസിഫയർ തിരഞ്ഞെടുക്കൽ

നിങ്ങളുടെ ഡാറ്റ ക്ലീൻ ആയും പരിശീലനത്തിനുമായി തയ്യാറായതിനുശേഷം, ഏത് ആൽഗോരിതം ഉപയോഗിക്കാമെന്ന് തീരുമാനിക്കേണ്ടതാണ്.

Scikit-learn ക്ലാസിഫിക്കേഷനെ സൂപ്പർവൈസ്ഡ് ലേണിംഗിനായി ഗണിക്കുന്നു, അതിന്റെ കീഴിൽ വിവിധ ക്ലാസിഫിക്കേഷൻ മാർഗങ്ങൾ കാണാൻ കഴിയും. വിധമതങ്ങൾ ആദ്യദൃശ്യത്തിൽ അല്പം ആശയക്കുഴപ്പം വരുത്താം. താഴെപ്പറയുന്ന മാർഗ്ഗങ്ങൾ എല്ലാം ക്ലാസിഫിക്കേഷൻ സാങ്കേതികവിദ്യകൾ ഉൾക്കൊള്ളുന്നു:

  • ലിനിയർ മോഡലുകൾ
  • സപ്പോർട്ട് വെക്ടർ മെഷീൻസ്
  • സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയന്റ് ഡേസന്റ്
  • നെയറസ്റ്റ് നെഞ്ചിബേഴ്സ്
  • ഗോസിയൻ പ്രോസസ്സ്
  • ഡെസിഷൻ ട്രീസ്
  • എൻസെംബിൾ മെത്തഡ്സ് (വോട്ടിംഗ് ക്ലാസിഫയർ)
  • മൾട്ടിക്ലാസ്, മൾട്ടിഔട്ട്പുട്ട് ആൽഗോരിതങ്ങൾ (മൾട്ടിക്ലാസ്, മൾട്ടിലേബൽ ക്ലാസിഫിക്കേഷൻ, മൾട്ടിക്ലാസ്-മൾട്ടിഔട്ട്പുട്ട് ക്ലാസിഫിക്കേഷൻ)

നിങ്ങൾക്ക് ന്യൂറൽ നെറ്റ്വർക്കുകൾ ഉപയോഗിച്ച് ഡാറ്റ ക്ലാസിഫൈ ചെയ്യാൻ സാധിക്കും, പക്ഷേ അത് ഈ പാഠത്തിന്റെ പരിധിക്ക് പുറത്താണ്.

ഏത് ക്ലാസിഫയർ തിരഞ്ഞെടുക്കണം?

ഏതു ക്ലാസിഫയർ തിരഞ്ഞെടുക്കണമെന്നു കണ്ടെത്താൻ പലതും പ്രവർത്തിപ്പിച്ച് നല്ല ഫലത്തിന് നോക്കുക സാധാരണ വഴി ആണ്. Scikit-learn ഒരു ഒപ്പം-ഒപ്പം താരതമ്യം Dataset ഉപയോഗിച്ച് KNeighbors, SVC രണ്ട് രീതികളും, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB, QuadraticDiscrinationAnalysis എന്നിവയുടെ ഫലങ്ങൾ ചിത്രീകരിച്ചിരിക്കുന്നു:

comparison of classifiers

പ്ലോട്ടുകൾ Scikit-learn ഡോക്യുമെന്റേഷനിൽ നിന്ന്

AutoML ഈ പ്രശ്നം ക്ലൗഡിൽ ഓടിച്ചുകൊണ്ട് പരിഹരിക്കുന്നു, നിങ്ങളുടെ ഡാറ്റയ്ക്ക് ഏറ്റവും അനുയോജ്യമായ ആൽഗോരിതം തിരഞ്ഞെടുക്കാൻ അനുവദിക്കുന്നു. ഇത് ഇവിടെ പരീക്ഷിക്കുക

മെച്ചപ്പെട്ട സമീപനം

മുന്നറിയിപ്പ് ചെയ്യാതെ കരുതിയുള്ള പകരം, ഈ ഡൗൺലോഡുചെയ്യാവുന്ന ML ചീറ്റ് ഷീറ്റ് ര ചുവടെ പറഞ്ഞിരിക്കുന്ന ആശയങ്ങൾ പാലിക്കുക. ഇവിടെ, നമ്മുടെ മൾട്ടിക്ലാസ് പ്രശ്നത്തിന് പലയിടത്തായി തിരഞ്ഞെടുക്കാനാകും:

cheatsheet for multiclass problems

മൈക്രോസോഫ്റ്റിന്റെ Algorithm Cheat Sheet-ന്റെ ഒരു വകഭാഗം, മൾട്ടിക്ലാസ് ക്ലാസിഫിക്കേഷൻ ഓപ്ഷനുകൾ വിശദീകരിക്കുന്നു

✅ ഈ ചീറ്റ് ഷീറ്റ് ഡൗൺലോഡ് ചെയ്ത് പ്രിന്റ് ചെയ്ത് നിങ്ങളുടെ ഭിത്തിയിൽ അത് തൂക്കുക!

വിവേകം

നമുക്ക് പല സമീപനങ്ങളും ഉപയോക്തൃ നിർബന്ധങ്ങൾക്ക് അനുസരിച്ചു ഗണിക്കാമോ നോക്കാം:

  • ന്യൂറൽ നെറ്റ്വർക്കുകൾ വളരെ ഭാരമാണ് ന. നമ്മുടെ ക്ലീൻ എന്നാൽ കുറഞ്ഞ ഡാറ്റ സെറ്റ് ഉണ്ട്, ലോക്കലായി നോട്ട്‌ബുക്കുകൾ വഴി ട്രെയ്‌നിംഗ് നടത്തുന്നപക്ഷം ന്യൂറൽ നെറ്റ്‌വർകുകൾ ഭാരമാണ്.
  • രണ്ട് ലേബൽ ക്ലാസിഫയറുകൾ ഇല്ല. അതുകൊണ്ട് ഓൺ-വേഴ്സ്-ആൾ ഒരുക്കം ഒഴിവാക്കാം.
  • ഡെസിഷൻ ട്രീ അല്ലെങ്കിൽ ലോഗിസ്റ്റിക് റിഗ്രഷൻ പ്രയോജനം കാണിക്കും. മൾട്ടിക്ലാസ് ഡാറ്റയ്ക്ക് ഡെസിഷൻ ട്രീ അല്ലെങ്കിൽ ലോഗിസ്റ്റിക് റിഗ്രഷൻ ഉപയോഗിക്കാവുന്നവിധം.
  • മൾട്ടിക്ലാസ് ബൂസ്റ്റഡ് ഡെസിഷൻ ട്രീ വ്യത്യസ്ത പ്രശ്നത്തിന്. മൾട്ടിക്ലാസ് ബൂസ്റ്റഡ് ഡെസിഷൻ ട്രീ പരാമിതിയില്ലാത്ത ടാസ്കുകൾക്കായി ആണ് പറ്റിയത്, പോലെയുള്ള റാങ്കിംഗുകൾ നിർമ്മിക്കുന്നതിനായി, അതിനാൽ അത് നമ്മുടെ പ്രയോഗത്തിന് ഉപയോഗപ്രദമല്ല.

Scikit-learn ഉപയോഗിക്കൽ

ഡാറ്റ വിശകലനം ചെയ്യാൻ Scikit-learn ഉപയോഗിക്കും. എന്നാൽ Scikit-learn ലോഗിസ്റ്റിക് റിഗ്രഷൻ ഉപയോഗിക്കാൻ പല വഴികളും ഉണ്ട്. പാരാമീറ്ററുകൾ പരിശോധിക്കുക.

പ്രധാനമായും multi_class അതും solver എന്നവയാണ് നിർണായക പാരാമീറ്ററുകൾ. Scikit-learn-നെ ലോഗിസ്റ്റിക് റിഗ്രഷൻ നടത്താൻ കോൾ ചെയ്തത് ഈ രണ്ട് പാരാമീറ്ററുകൾ വ്യക്തമാക്കണം. multi_class മൂല്യം ഒരു പ്രത്യേക പെരുമാറ്റം ഏർപ്പെടുത്തുന്നു. solver എന്നത് ഉപയോഗിക്കുന്ന ആൽഗോരിതമാണ്. എല്ലാ solver-കളും എല്ലാ multi_class മൂല്യങ്ങളോടും പൊരുത്തപ്പെടുവാൻ കഴിയാറില്ല.

ഡോക്‌സ് പ്രകാരം, മൾട്ടിക്ലാസ് കാര്യത്തിൽ, പരിശീലന ആൽഗോരിതം:

  • 'ovr' ആണെങ്കിൽ one-vs-rest (OvR) സ്കീം ഉപയോഗിക്കുന്നു.
  • 'multinomial' ആണെങ്കിൽ ക്രോസ്-എൻട്രോപ്പി ലോസ് ഉപയോഗിക്കുന്നു. (multinomial ഇപ്പോൾ 'lbfgs', 'sag', 'saga', 'newton-cg' solver-കൾക്കു മാത്രമേ പിന്തുണയുള്ളു.)

🎓 ഇവിടെ 'സ്കീം' 'ovr' (ഒന്ന്-വേഴ്സ്-റെസ്റ്റ്) അല്ലെങ്കിൽ 'മൾട്ടിനോമിയൽ' ആകാം. ലോഗിസ്റ്റിക് റിഗ്രഷൻ സാധാരണയായി ബൈനറി ക്ലാസിഫിക്കേഷനിനു രൂപപ്പെടുത്തിയിട്ടുള്ളതിനാൽ, ഇതുവഴി മൾട്ടിക്ലാസ് ടാസ്കുകൾ മെച്ചപ്പെട്ടവയായി കൈകാര്യം ചെയ്യപ്പെടുന്നു. മൂലം

🎓 solver എന്ന് പറഞ്ഞാൽ "ഓപ്റ്റിമൈസേഷൻ പ്രശ്നത്തിൽ ഉപയോഗിക്കുന്ന ആൽഗോരിതം" എന്നാണ്. മൂലം.

Scikit-learn solver-കൾ ഓരോ തരത്തിലുള്ള ഡാറ്റ വിവിധ വെല്ലുവിളികൾ എങ്ങനെ കൈകാര്യം ചെയ്യുന്നുവെന്നതിനുള്ള പട്ടിക നൽകുന്നു:

solvers

വ്യായാമം - ഡാറ്റ വിഭജിക്കുക

നിങ്ങൾക്ക് മുമ്പത്തെ പാഠത്തിൽ ലോഗിസ്റ്റിക് റിഗ്രഷൻ പഠിച്ചതിനാൽ ആദ്യ ട്രെയിനിങ്ങിനായി അതിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുക. train_test_split() വിളിച്ച് ഡാറ്റ ട്രെയിനുകളും ടെസ്റ്റിങ്ങും ആയി വിഭജിക്കുക:

X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)

വ്യായാമം - ലോഗിസ്റ്റിക് റിഗ്രഷൻ പ്രയോഗിക്കുക

മൾട്ടിക്ലാസ് കേസ് ഉപയോഗിക്കുന്നതുകൊണ്ട്, ഏത് സ്കീം ഉപയോഗിക്കേണ്ടതും ഏത് സോൾവർ സജ്ജീകരിക്കേണ്ടതും തിരഞ്ഞെടുക്കേണ്ടതാണ്. LogisticRegression ഉപയോഗിച്ച് multi_class 'ovr' ആയും solver 'liblinear' ആയും സജ്ജമാക്കി تربീൻ ചെയ്യുക.

  1. multi_class പാരാമീറ്റർ ovr ആയും, solver liblinear ആയും സെറ്റ് ചെയ്ത് ലോഗിസ്റ്റിക് റിഗ്രഷൻ ഉണ്ടാക്കുക:

    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 ഫംഗ്ഷൻ ആവശ്യമുള്ളപ്പോൾ ഡാറ്റ flatten ചെയ്യുന്നതിന് ഉപയോഗിക്കുക.

    കൃത്യത 80% ലധികം നല്ലതാണ്!

  2. ഡാറ്റയിലെ ഒരു പദവി (#50) ടെസ്റ്റ് ചെയ്ത് ഈ മോഡൽ പ്രവർത്തനം പരിശോധിക്കാം:

    print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}')
    print(f'cuisine: {y_test.iloc[50]}')
    

    ഫലം അച്ചടിപ്പിച്ചു കാണിക്കുന്നു:

    ingredients: Index(['cilantro', 'onion', 'pea', 'potato', 'tomato', 'vegetable_oil'], dtype='object')
    cuisine: indian
    

    ✅ വ്യത്യസ്ത ഒരു പദവി ഉപയോഗിച്ച് പരീക്ഷിച്ച് ഫലങ്ങൾ പരിശോധിക്കുക

  3. കൂടുതൽ ആഴത്തിലുള്ള പരിശോധനയിൽ, ഈ പ്രവചനം സമ്മതിക്കുന്നതിന്റെ കൃത്യത പരിശോധിക്കാം:

    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
    indian0.715851
    chinese0.229475
    japanese0.029763
    korean0.017277
    thai0.007634

    ✅ മോഡൽ എന്തുകൊണ്ട് ഈ പാചക ശൈലി ഇന്ത്യൻ ആണെന്ന് ഉറപ്പുള്ളതായി നിങ്ങൾക്ക് വിശദീകരിക്കാമോ?

  4. റെഗ്രഷൻ പാഠങ്ങളിലെ പോലെ ക്ലാസിഫിക്കേഷൻ റിപ്പോർട്ട് പ്രിന്റ് ചെയ്ത് കൂടുതൽ വിശദാംശങ്ങൾ നേടുക:

    y_pred = model.predict(X_test)
    print(classification_report(y_test,y_pred))
    
    precisionrecallf1-scoresupport
    chinese0.730.710.72229
    indian0.910.930.92254
    japanese0.700.750.72220
    korean0.860.760.81242
    thai0.790.850.82254
    accuracy0.801199
    macro avg0.800.800.801199
    weighted avg0.800.800.801199

🚀ചലഞ്ച്

ഈ പാഠത്തിൽ, ഒരുപാട് ഘടകങ്ങൾ അടിസ്ഥാനമാക്കി ഒരു ദേശീയ പാചക ശൈലി പ്രവചിക്കാൻ കഴിവുള്ള മെഷീൻ ലേർണിംഗ് മോഡൽ നിങ്ങൾ കഴിഞ്ഞു നിർമ്മിച്ചു. ഡാറ്റ ക്ലാസിഫൈ ചെയ്യാൻ Scikit-learn നൽകുന്ന വിവിധ ഓപ്ഷനുകൾ വായിക്കാൻ സമയം എടുത്ത് പഠിക്കുക. 'solver' എന്ന ആശയത്തെ കൂടുതൽ ആഴത്തിൽ അറിയാൻ ശ്രമിക്കുക, പിന്നിലെ പ്രക്രിയകൾ അറിയാൻ.

പാഠശേഷി ക്വിസ്

അവലോകനം & സ്വയം പഠനം

ലോജിസ്റ്റിക് റെഗ്രഷിൻ പിന്നിലുള്ള ഗണിതത്തിൽ ഈ പാഠത്തിൽ കൂടുതൽ ആഴത്തിൽ വെട്ടിവെക്കുക.

അസൈൻമെന്റ്

സോൾവേഴ്‌സിനെ പഠിക്കുക


ഡിസ്ക്ലെയിമർ:
ഈ ദਸਤാവേസ് AI വിവർത്തന സേവനം Co-op Translator ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതക്കായി പരിശ്രമിക്കുന്നുവെങ്കിലും, സ്വയംപ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിഴവുകളോ അപാകതകളോ ഉണ്ടായിരിക്കാമെന്ന് ദയവായി മനസ്സിലാക്കുക. യഥാർത്ഥ ഭാഷയിലുള്ള ദസ്താവേസ് ഉത്തരവാദിത്വപ്പെടുത്തിയ ഉറവിടമായി കണക്കാക്കേണ്ടതാണ്. നിർണായക വിവരങ്ങൾക്കായി പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം നിർദ്ദേശിക്കുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിനാൽ ഉണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കും തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കും നാം ഉത്തരവാദികളല്ല.