شرح التعامل مع iris datasets في تعليم الاله باستخدام لغة البايثون
في هذا الدرس سوف نتعرف على كيفية التعرف على نوع الزهوز iris من خلال datasets الخاصه بها حيث انها تتكون من ثلاث انواع ونريد معرفة عندما يدخل الى النموذج هذا النوع يعرف ماهو سواء النوع الاول او الثاني او الثالث حيث ان جميعهما شبه بعض تقريبا بنسبة كبيره ولكن تختلف في اشياء بسيطة والصورة التاليه توضح الفرق بين انواع الزهور الثلاث والهدف الذي نريده هو معرفة
نوع الزهره عن طريق حجم الزهره حيث ان النبته في اول نوع يكون كبير قليلا عند غيره وبهذة الطريقة يتم التفريق بين الانواع المختلفه .
يايثون او لغة الثعبان كما يطلق عليها واحده من اهم لغات البرمجه التي يجب على كل مبرمج معرفتها وذلك بسبب سهولتها ولدعمها للمطورين بشكل كبير وتسهل عليهم القيام بالعديد من ال functions المختلفه وتوفر الكثير من الوقت عليهم وايضا python تدخل في تعليم الاله وهذا من اكثر التي اصبحت مطلوبه في يومنا هذا والاقبال عليها كبير جدا .
يتمتع مبرمج python بإمكانية تطوير برمجيات سطح المكتب وتطبيقات الهواتف الذكية وايضا يمكنك عمل apis لانك تستطيع ان تقوم باعمال ال backend ، اليست كل تلك المميزات تجعلك ترغب بالبدء فيها ؟ ومحن نشرح لك كل شيئ فيها تقريبا حتى ال machine learning نشرحه لك وكل ذلك بالمجان .
عرض بيانات الزهور من sklearn.datasets لتعلم الاله
في هذا الجزء كل ما سنقوم به فقط هو اننا سنعرض الكلمات المفتاحية الخاصة بالiris لنتعرف على المحتويات وبعدها قمنا بعرض الtarget لكي نشاهد كيف تم تمييز الزهور ولو نلاحظ ان الزهره اولى بها مجموعه من الصور والمميزات التي تميزها وتم ترقيمها بالقيمة 0 والثاني والثالث على نفس النمط , بعدها قمنا بعرض اسماء الاهداف التي نريد عرضها وهنا نقصد بالتحديد اسماء الزهور التي نريدها ونريد التعرف عليها اخيرا قمنا بطباعة table به معلومات عن كل زهرة من حيث الطول والحجم والسمك ...الخ .
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
print(iris.keys())
print(iris['target'])
print(iris['target_names'])
df = pd.DataFrame(iris['data'] , columns=iris['feature_names'])
df['target'] = iris['target']
print(df.head())
ضغط البيانات بواسطة نموذج PCA في تعليم الالة
عندما يكون لدينا بيانات بها اختلافات كبيرة نحتاج الى عمل StandardScaler لكي نحصرها بين 1 و -1 وبعدها قمنا بمعل pca ليتم ضغط البيانات في عمودين فقط بدلا من باقي الاعمده وهذا يسهل علينا التعامل معها في المستقبل اذا كنا نرغب بعمل scatter لها او التعامل معها عموما فهذة الخطوة تسهل الكثير من الوقت علينا وبعدها قمنا بعرض البيانات لنعرض الshape الخاص بها لعدد الاعمده والصفوف في الجدول والبيانات .
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaled_data = scaler.fit_transform(iris['data'])
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
x_pca = pca.fit_transform(scaled_data)
x_pca.shape
عرض بيانات الزهور في figsize لعمل analysi
في هذة الخطوة قمنا بعرض البيانات في رسمة عبارة عن مجموعة من النقاط كما تشاهدون وقد سبق وقمنا بعمل هذة الرسمة في اكثر من مقالة لذلك اعتقد ان الامر ليس بالصعب عليكم حاليا وبعدها ولو نلاحظ انه كان لدينا ثلاث انواع من النباتات وكل نوع منهم كان بلون معين وهذة الالوان تميز لنا كل نوع من الاخر وايضا قمنا بطباعة محتوى في الاسفل به اسم النبته واللون الخاص بها وكل شيئ واضح بالصورة ويمكنك تجربة الكود للتاكد من النتائج .
import matplotlib.pyplot as plt
plt.figure(figsize=(8,8))
for i in range(3) :
flower_name = iris['target_names'][i]
target_mask = iris['target']==i #target row
plt.scatter(x_pca[target_mask,0] , x_pca[target_mask,1] , label=flower_name)
plt.legend()
تجربة نموذج KNeighborsClassifier مع datasets iris
في هذة الخطوة سوف نقوم بعرض البيانات في report وايضا سنقوم باستخدام KNeighborsClassifier لكي نحسن من النموذج وندرب البيانات من خلاله وسبق وشرحنا لكم هذا النموذج وماهي اهميته ومتى يستخدم واخبرناكم اذا كانت لديكم بيانات قريبه من بعضها يتم استخدام هذا النموذج لانه يكون الانسب غالبا في نوعية هذة البيانات حيث ان هذة هي وظيفته الاساسيه وهذا لا يعني ان باقي النماذج لا تصح بل حاول تجربتها ربما تخرج بنتائج افضل
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(x_pca , iris['target'])
Y_per = knn.predict(x_pca)
print(classification_report(iris['target'] , Y_per))
عرض انواع الزهور في scatter ببايثون
في هذة الخطوة قمنا بعرض الزهور في رسمة وكانت البيانات من اول البيانات الى ال0 والثانية الى 1 لكي يتم عرض انواع البيانات على الرسمة لو نلاحظ ان هناك تداخل في بعض الزهور وخصوصا الاخضر والاصفر ولكن لا نعرف هل البيانات صحيحه وقام الكمبيوتر بعرضها بصورة صحيحه ام هناك تفاصيل تخبرنا اذا كانت البيانات صحيحه ام لا واذا كانت بها مشاكل كيف نقوم بتحسينها ؟ ولكن هذا هو محور المقالة التالية عموما هنا شاهدنا البيانات ولاحظنا انها سليمه
plt.figure(figsize=(12,8))
plt.scatter(iris.data[:,0] , iris.data[:,1] , c=iris.target)
plt.xlabel('Length' , fontsize=18)
plt.ylabel('wigth' , fontsize=18)
شرح Pipeline في تعليم الاله
بعد عرض البيانات ومشاهدتها اعتقدنا انها صحيحة وسليمه ولذلك سوف نقوم بالتجربة عليها ولكي تقوم بتجربة البيانات يمكنك استخدام اماا الطريقة الاولى الموجوده بالصورة التاليه وبعدها تقوم بكتابة البيانات وعرضها مره واحده وهذة تسمى طريقة Pipeline والطريقة الاخرى نفس الوضع ولكن الفرق ان الاولى نكتب الكود مره واحده ونستخدمه عن طريق كتابة اسم الarray وبها البيانات والدالة التي نحصل منها على بيانات اما الاخرى فيجب علينا في كل مره كتابة البيانات بهذة الصورة لكي نعرف ماهي اسم النبات الذي يحتوي على هذة البيانات وكانت هذة النباتات تدخل على الزهرة الاولى والمركز لها بالقيمة صفر
from sklearn.pipeline import Pipeline
pipe = Pipeline([
("scaling" , StandardScaler() ),
("pca", PCA(n_components=2)),
("model", KNeighborsClassifier(n_neighbors=5))
])
pipe.fit(iris['data'] , iris['target'])
test = [1.5 , 3.5 , 0.8, 2.63]
pipe.predict([test])
test = [[1.5 , 3.5 , 0.8, 2.63]]
scale_test = scaler.transform(test)
pca_test = pca.transform(scale_test)
knn.predict(pca_test)