{ "cells": [ { "source": [ "# Jenga Mifano Zaidi ya Uainishaji\n" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", "0 0 indian 0 0 0 0 0 \n", "1 1 indian 1 0 0 0 0 \n", "2 2 indian 0 0 0 0 0 \n", "3 3 indian 0 0 0 0 0 \n", "4 4 indian 0 0 0 0 0 \n", "\n", " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", "0 0 0 0 ... 0 0 0 \n", "1 0 0 0 ... 0 0 0 \n", "2 0 0 0 ... 0 0 0 \n", "3 0 0 0 ... 0 0 0 \n", "4 0 0 0 ... 0 0 0 \n", "\n", " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", "0 0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 0 \n", "2 0 0 0 0 0 0 0 \n", "3 0 0 0 0 0 0 0 \n", "4 0 0 0 0 0 1 0 \n", "\n", "[5 rows x 382 columns]" ], "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" }, "metadata": {}, "execution_count": 1 } ], "source": [ "import pandas as pd\n", "cuisines_df = pd.read_csv(\"../../data/cleaned_cuisines.csv\")\n", "cuisines_df.head()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0 indian\n", "1 indian\n", "2 indian\n", "3 indian\n", "4 indian\n", "Name: cuisine, dtype: object" ] }, "metadata": {}, "execution_count": 2 } ], "source": [ "cuisines_label_df = cuisines_df['cuisine']\n", "cuisines_label_df.head()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " almond angelica anise anise_seed apple apple_brandy apricot \\\n", "0 0 0 0 0 0 0 0 \n", "1 1 0 0 0 0 0 0 \n", "2 0 0 0 0 0 0 0 \n", "3 0 0 0 0 0 0 0 \n", "4 0 0 0 0 0 0 0 \n", "\n", " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", "0 0 0 0 ... 0 0 0 \n", "1 0 0 0 ... 0 0 0 \n", "2 0 0 0 ... 0 0 0 \n", "3 0 0 0 ... 0 0 0 \n", "4 0 0 0 ... 0 0 0 \n", "\n", " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", "0 0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 0 \n", "2 0 0 0 0 0 0 0 \n", "3 0 0 0 0 0 0 0 \n", "4 0 0 0 0 0 1 0 \n", "\n", "[5 rows x 380 columns]" ], "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" }, "metadata": {}, "execution_count": 3 } ], "source": [ "cuisines_features_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)\n", "cuisines_features_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Jaribu aina tofauti za wanaojaribu darasa\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from sklearn.neighbors import KNeighborsClassifier\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.svm import SVC\n", "from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier\n", "from sklearn.model_selection import train_test_split, cross_val_score\n", "from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "X_train, X_test, y_train, y_test = train_test_split(cuisines_features_df, cuisines_label_df, test_size=0.3)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "\n", "C = 10\n", "# Create different classifiers.\n", "classifiers = {\n", " 'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0),\n", " 'KNN classifier': KNeighborsClassifier(C),\n", " 'SVC': SVC(),\n", " 'RFST': RandomForestClassifier(n_estimators=100),\n", " 'ADA': AdaBoostClassifier(n_estimators=100)\n", " \n", "}\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Accuracy (train) for Linear SVC: 76.4% \n", " precision recall f1-score support\n", "\n", " chinese 0.64 0.66 0.65 242\n", " indian 0.91 0.86 0.89 236\n", " japanese 0.72 0.73 0.73 245\n", " korean 0.83 0.75 0.79 234\n", " thai 0.75 0.82 0.78 242\n", "\n", " accuracy 0.76 1199\n", " macro avg 0.77 0.76 0.77 1199\n", "weighted avg 0.77 0.76 0.77 1199\n", "\n", "Accuracy (train) for KNN classifier: 70.7% \n", " precision recall f1-score support\n", "\n", " chinese 0.65 0.63 0.64 242\n", " indian 0.84 0.81 0.82 236\n", " japanese 0.60 0.81 0.69 245\n", " korean 0.89 0.53 0.67 234\n", " thai 0.69 0.75 0.72 242\n", "\n", " accuracy 0.71 1199\n", " macro avg 0.73 0.71 0.71 1199\n", "weighted avg 0.73 0.71 0.71 1199\n", "\n", "Accuracy (train) for SVC: 80.1% \n", " precision recall f1-score support\n", "\n", " chinese 0.71 0.69 0.70 242\n", " indian 0.92 0.92 0.92 236\n", " japanese 0.77 0.78 0.77 245\n", " korean 0.87 0.77 0.82 234\n", " thai 0.75 0.86 0.80 242\n", "\n", " accuracy 0.80 1199\n", " macro avg 0.80 0.80 0.80 1199\n", "weighted avg 0.80 0.80 0.80 1199\n", "\n", "Accuracy (train) for RFST: 82.8% \n", " precision recall f1-score support\n", "\n", " chinese 0.80 0.75 0.77 242\n", " indian 0.90 0.91 0.90 236\n", " japanese 0.82 0.78 0.80 245\n", " korean 0.85 0.82 0.83 234\n", " thai 0.78 0.89 0.83 242\n", "\n", " accuracy 0.83 1199\n", " macro avg 0.83 0.83 0.83 1199\n", "weighted avg 0.83 0.83 0.83 1199\n", "\n", "Accuracy (train) for ADA: 71.1% \n", " precision recall f1-score support\n", "\n", " chinese 0.60 0.57 0.58 242\n", " indian 0.87 0.84 0.86 236\n", " japanese 0.71 0.60 0.65 245\n", " korean 0.68 0.78 0.72 234\n", " thai 0.70 0.78 0.74 242\n", "\n", " accuracy 0.71 1199\n", " macro avg 0.71 0.71 0.71 1199\n", "weighted avg 0.71 0.71 0.71 1199\n", "\n" ] } ], "source": [ "n_classifiers = len(classifiers)\n", "\n", "for index, (name, classifier) in enumerate(classifiers.items()):\n", " classifier.fit(X_train, np.ravel(y_train))\n", "\n", " y_pred = classifier.predict(X_test)\n", " accuracy = accuracy_score(y_test, y_pred)\n", " print(\"Accuracy (train) for %s: %0.1f%% \" % (name, accuracy * 100))\n", " print(classification_report(y_test,y_pred))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n\n\n**Hakikisho la Kukataa**:\nHati hii imetafsiriwa kwa kutumia huduma ya utafsiri wa AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za otomatiki zinaweza kuwa na makosa au kasoro. Hati asili katika lugha yake ya asili inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa habari muhimu, tafsiri ya kitaalamu na binadamu inapendekezwa. Hatuwajibiki kwa kutoelewana au utofauti wa tafsiri unaotokana na matumizi ya tafsiri hii.\n\n" ] } ], "metadata": { "interpreter": { "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" }, "kernelspec": { "name": "python3", "display_name": "Python 3.7.0 64-bit ('3.7')" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" }, "metadata": { "interpreter": { "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } } }, "nbformat": 4, "nbformat_minor": 4 }