16 نصيحة لإستخدام Google Colab
يعد كولاب Colab أحد أفضل المنتجا...
يعد تصنيف زهرة السوسن Iris أحد أكثر مشاريع التعلم الآلي شيوعًا في مجتمع علوم البيانات. فكل مبتدئ في علم البيانات يطبق هذا المشروع مرة واحدة على الأقل.
هدفنا في هذا المشروع هو تدريب نموذج التعلم الآلي لمهمة تصنيف زهور Iris. لذلك إذا كنت جديدًا على التعلم الآلي ولم تحاول أبدًا تجربة هذا المشروع، ففي هذه المقالة، سوف أطلعك على طريقة تصنيف زهرة Iris مع التعلم الآلي بإستخدام Python.
أولا قبل التصنيف. علينا التعرف على نوعية البيانات التي سنعمل عليها.
هذه البيانات الخاصة بزهرة Iris تم إستخدامها وأصبحت مشهورة من قبل الإحصائي والبيولوجي البريطاني رونالد فيشر في ورقته العلمية لعام 1936.
تتكون مجموعة البيانات من 50 عينة من كل من ثلاثة أنواع من زهرة Iris وهم: (Iris setosa و Iris virginica و Iris versicolor). والتي تختلف حسب قياساتها.
إفترض الآن أن لديك قياسات زهور Iris وفقًا لنوعها، وتتمثل مهمتك في تدريب نموذج تعلم آلي يمكنه التعلم من قياسات أنواع Iris وتصنيفها.
وتحتوي كل فئة (أو نوع من الزهور) على 4 ميزات، “طول الكأس” ، “عرض الكأس” ، “طول البتلة” ، “عرض البتلة”. والهدف من تصنيف زهرة Iris هو التنبؤ بنوع الزهور بناء على ميزاتها التي نحددها بأنفسنا.
آمل أن تكون قد فهمت الهدف من مشروعنا الخاص بتصنيف زهرة Iris.
على الرغم من أن مكتبة Scikit-Learn توفر مجموعة بيانات لتصنيف زهرة Iris، يمكنك أيضًا تنزيل مجموعة البيانات نفسها من هنا لمهمة تصنيف زهرة Iris بإستخدام التعلم الآلي.
ملاحظة : أرجوا أن تتذكر مكتبة Scikit-Learn فهي من أهم المكتبات في التعلم الآلي وتسهل العمل بشكل كبير.
الآن سأطلعك على كيفية تصنيف أنواع زهرة Iris بالتعلم الآلي بإستخدام لغة برمجة Python.

سنقسم مشروعنا إلى عدة خطوات حتى نقوم بتصنيف زهرة Iris:
أوذ تذكيرك بالرابط الذي وضعناه في بداية المقالة. عليك بتحميلها ورفعها في Google colab (على سبيل المثال) حتى تتمكن من تشغيل الأكواد.
# DataFlair Iris Flower Classification # Import Packages import numpy as np import matplotlib.pyplot as plt import seaborn as sns import pandas as pd %matplotlib inline
أولاً، قمنا بإستيراد بعض الحزم الضرورية للمشروع.
colums = ['Sepal length', 'Sepal width', 'Petal length', 'Petal width', 'Class_labels']
# Load the data
df = pd.read_csv('iris.data', names=colums)
df.head()بعد ذلك، نقوم بتحميل البيانات بإستخدام ()pd.read_csv وتعيين إسم العمود colums وفقًا لمعلومات بيانات Iris.

دعنا نرى بعض المعلومات حول مجموعة البيانات Dataset.
# Some basic statistical analysis about the data df.describe()

من هذا الوصف، يمكننا رؤية جميع الأوصاف المتعلقة بالبيانات، مثل متوسط الطول والعرض، والحد الأدنى للقيمة، والحد الأقصى للقيمة، وقيمة التوزيع 25٪، و 50٪، و 75٪، إلخ.
دعونا نرسم مجموعة البيانات.
# Visualize the whole dataset sns.pairplot(df, hue='Class_labels')
لنرسم مجموعة البيانات بأكملها، إستخدمنا طريقة مخطط pair من seaborn.

# Separate features and target data = df.values X = data[:,0:4] Y = data[:,4]
هنا قمنا بفصل الميزات (يعني X وهي المدخلات) عن القيمة المستهدفة (يعني Y وهي المخرجات).
# Calculate average of each features for all classes
Y_Data = np.array([np.average(X[:, i][Y==j].astype('float32')) for i in range (X.shape[1])
for j in (np.unique(Y))])
Y_Data_reshaped = Y_Data.reshape(4, 3)
Y_Data_reshaped = np.swapaxes(Y_Data_reshaped, 0, 1)
X_axis = np.arange(len(columns)-1)
width = 0.25# Plot the average
plt.bar(X_axis, Y_Data_reshaped[0], width, label = 'Setosa')
plt.bar(X_axis+width, Y_Data_reshaped[1], width, label = 'Versicolour')
plt.bar(X_axis+width*2, Y_Data_reshaped[2], width, label = 'Virginica')
plt.xticks(X_axis, columns[:4])
plt.xlabel("Features")
plt.ylabel("Value in cm.")
plt.legend(bbox_to_anchor=(1.3,1))
plt.show()إستخدمنا matplotlib لإظهار المتوسطات في مخطط شريطي.

هنا يمكننا أن نرى بوضوح أن virginica هي الأطول و setosa هي أقصر زهرة.
# Split the data to train and test dataset. from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2)
بإستخدام train_test_split، قمنا بتقسيم البيانات بأكملها إلى مجموعات بيانات تدريب وإختبار. سنستخدم لاحقًا مجموعة بيانات الإختبار للتحقق من دقة النموذج.
# Support vector machine algorithm from sklearn.svm import SVC svn = SVC() svn.fit(X_train, y_train)
# Predict from the test dataset predictions = svn.predict(X_test) # Calculate the accuracy from sklearn.metrics import accuracy_score accuracy_score(y_test, predictions)
المخرجات:
0.9666666666666667
الدقة أعلى من 96٪.
دعنا الآن نرى تقرير التصنيف المفصل بناءً على مجموعة بيانات الإختبار.
الكود :
# A detailed classification report from sklearn.metrics import classification_report print(classification_report(y_test, predictions))
النتيجة:
precision recall f1-score support
Iris-setosa 1.00 1.00 1.00 15
Iris-versicolor 0.89 1.00 0.94 8
Iris-virginica 1.00 0.86 0.92 7
accuracy 0.97 30
macro avg 0.96 0.95 0.95 30
weighted avg 0.97 0.97 0.97 30الكود:
X_new = np.array([[3, 2, 1, 0.2], [ 4.9, 2.2, 3.8, 1.1 ], [ 5.3, 2.5, 4.6, 1.9 ]])
#Prediction of the species from the input vector
prediction = svn.predict(X_new)
print("Prediction of Species: {}".format(prediction))النتيجة:
ما قمنا به هو إعطاء قيم إفتراضية لنمذوج تعلم الآلة وهو بنفسه يتوقع (التنبؤ) نوع الزهرة Iris أو بالأصح يصنفها ضمن أي نوع إعتمادا على البيانات المعتمدة والتي تم تدريب النموذج عليها.
Prediction of Species: ['Iris-setosa' 'Iris-versicolor' 'Iris-versicolor']
في هذا المشروع، تعلمنا تدريب نموذج التعلم الآلي الخاص بنا بإستخدام مشروع Iris Flower Classification.
من خلال هذا المشروع، تعرفنا على التعلم الآلي، وتحليل البيانات، والتمثيل المرئي للبيانات، وإنشاء النماذج، وما إلى ذلك.
(منقول بتصرف – قمنا بتعديل بعض الأكواد والتغيير في صياغة الكلام بما نراه مناسب كما تم تغيير الصور حتى تكون بجودة أفضل مما كانت عليه)
Iris Flower Classification Project using Machine Learning – DataFlair (data-flair.training)
……