آموزش انتخاب ویژگی داده ها در یادگیری ماشین با پایتون
آموزش انتخاب ویژگی داده ها در یادگیری ماشین با پایتون
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش انتخاب ویژگی داده ها در یادگیری ماشین با پایتون خواهیم پرداخت.
پیشنهاد ویژه : پکیج آموزش طراحی وب سایت با پایتون و جنگو
در درس قبل، ما به طور مفصل نحوه پیش پردازش و آماده سازی داده ها را برای یادگیری ماشین مشاهده کرده ایم. در این درس، به ما اجازه می دهد جزئیات مربوط به انتخاب ویژگی داده ها و جنبه های مختلف درگیر در آن را درک کنیم.
اهمیت انتخاب ویژگی داده ها
عملکرد مدل یادگیری ماشین با ویژگی های داده مورد استفاده برای آموزش آن متناسب است. اگر ویژگی های داده ای که به آن ارائه نشده باشند ، عملکرد مدل ML تأثیر منفی می گذارد. از طرف دیگر ، استفاده از ویژگی های مربوط به داده می تواند دقت مدل ML شما را بخصوص رگرسیون خطی و لجستیک افزایش دهد.
حال این سوال پیش می آید که انتخاب خودکار ویژگی چیست؟ این ممکن است به عنوان فرایندی تعریف شود که ما به کمک آن ویژگیهایی را در داده خود انتخاب می کنیم که بیشترین ارتباط را با متغیر خروجی یا پیش بینی که در آن علاقمندیم مربوط باشد. به آن انتخاب ویژگی نیز گفته می شود.
موارد زیر برخی از مزایای انتخاب خودکار ویژگی قبل از مدل سازی داده ها است –
- انجام انتخاب ویژگی قبل از مدلسازی داده ها باعث کاهش بیش از حد تجهیزات می شود.
- انجام انتخاب ویژگی قبل از مدل سازی داده باعث افزایش دقت مدل ML می شود.
- انجام انتخاب ویژگی قبل از مدلسازی داده باعث کاهش زمان آموزش می شود
تکنیک های انتخاب ویژگی
موارد زیر تکنیک های انتخاب خودکار ویژگی است که می توانیم برای مدل سازی داده های ML در پایتون استفاده کنیم –
انتخاب تک متغیره
این روش انتخاب ویژگی در انتخاب آن ویژگی ها، با کمک آزمون آماری، داشتن قوی ترین ارتباط با متغیرهای پیش بینی کننده بسیار مفید است. ما می توانیم تکنیک انتخاب ویژگی های تک متغیره را با کمک SelectKBest0class از کتابخانه پایتون به روش scikit-learn پیاده سازی کنیم.
مثال
در این مثال، ما از مجموعه داده های Pima Indians Diabetes برای انتخاب 4 ویژگی با بهترین ویژگی با کمک آزمون آماری مجذور کای استفاده خواهیم کرد.
1 2 3 4 5 6 7 8 |
from pandas import read_csv from numpy import set_printoptions from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import chi2 path = r'C:\pima-indians-diabetes.csv' names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = read_csv(path, names=names) array = dataframe.values |
خطوط کد زیر بهترین ویژگی ها را از مجموعه داده انتخاب می کنند –
1 2 |
X = array[:,0:8] Y = array[:,8] |
ما همچنین می توانیم داده ها را برای خروجی مطابق با انتخاب خود جمع بندی کنیم. در اینجا ، ما دقت را روی 2 تنظیم می کنیم و 4 ویژگی داده را با بهترین ویژگی ها به همراه بهترین امتیاز از هر ویژگی نشان می دهیم –
1 2 3 4 |
et_printoptions(precision=2) print(fit.scores_) featured_data = fit.transform(X) print ("\nFeatured data:\n", featured_data[0:4]) |
خروجی
1 2 3 4 5 6 7 8 |
[ 111.52 1411.89 17.61 53.11 2175.57 127.67 5.39 181.3 ] Featured data: [ [148. 0. 33.6 50. ] [ 85. 0. 26.6 31. ] [183. 0. 23.3 32. ] [ 89. 94. 28.1 21. ] ] |
حذف ویژگی بازگشتی
همانطور که از نامش پیداست، تکنیک انتخاب ویژگی RFE (حذف ویژگی بازگشتی) ویژگی ها را به صورت بازگشتی از بین می برد و مدل را با ویژگی های باقیمانده می سازد. ما می توانیم تکنیک انتخاب ویژگی های RFE را با کمک کلاس RFE از کتابخانه پایتون یادگیری-یاد بگیریم.
مثال
در این مثال، ما از RFE با الگوریتم رگرسیون لجستیک برای انتخاب 3 ویژگی برتر با بهترین ویژگی ها از مجموعه داده های دیابت Pima Indians تا استفاده خواهیم کرد.
1 2 3 4 5 6 7 |
from pandas import read_csv from sklearn.feature_selection import RFE from sklearn.linear_model import LogisticRegression path = r'C:\pima-indians-diabetes.csv' names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = read_csv(path, names=names) array = dataframe.values |
بعد ، ما آرایه را به اجزای ورودی و خروجی آن جدا خواهیم کرد –
1 2 |
X = array[:,0:8] Y = array[:,8] |
خطوط کد زیر بهترین ویژگی ها را از یک مجموعه داده انتخاب می کنند –
1 2 3 4 5 6 |
model = LogisticRegression() rfe = RFE(model, 3) fit = rfe.fit(X, Y) print("Number of Features: %d") print("Selected Features: %s") print("Feature Ranking: %s") |
خروجی
1 2 3 |
Number of Features: 3 Selected Features: [ True False False False False True True False] Feature Ranking: [1 2 3 5 6 1 1 4] |
در خروجی بالا می بینیم که RFE preg ، mass و pedi را به عنوان 3 بهترین ویژگی اول انتخاب می کند. آنها در خروجی به عنوان 1 علامت گذاری شده اند.
تجزیه و تحلیل مولفه های اصلی (PCA)
PCA که معمولاً تکنیک کاهش داده نامیده می شود ، روش انتخاب ویژگی بسیار مفیدی است زیرا از جبر خطی برای تبدیل مجموعه داده به فرم فشرده استفاده می کند. ما می توانیم تکنیک انتخاب ویژگی PCA را با کمک کلاس PCA کتابخانه Python-scikit-learn پیاده سازی کنیم. ما می توانیم تعداد م componentsلفه های اصلی را در خروجی انتخاب کنیم.
مثال
در این مثال ، ما از PCA برای انتخاب 3 جز اصلی از مجموعه داده های دیابت Pima Indians استفاده خواهیم کرد.
1 2 3 4 5 6 |
from pandas import read_csv from sklearn.decomposition import PCA path = r'C:\pima-indians-diabetes.csv' names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = read_csv(path, names=names) array = dataframe.values |
بعد ، ما آرایه را به اجزای ورودی و خروجی جدا خواهیم کرد –
1 2 |
X = array[:,0:8] Y = array[:,8] |
خطوط کد زیر ویژگی هایی را از مجموعه داده استخراج می کند –
1 2 3 4 |
pca = PCA(n_components=3) fit = pca.fit(X) print("Explained Variance: %s") % fit.explained_variance_ratio_ print(fit.components_) |
خروجی
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Explained Variance: [ 0.88854663 0.06159078 0.02579012] [ [ -2.02176587e-03 9.78115765e-02 1.60930503e-02 6.07566861e-02 9.93110844e-01 1.40108085e-02 5.37167919e-04 -3.56474430e-03 ] [ 2.26488861e-02 9.72210040e-01 1.41909330e-01 -5.78614699e-02 -9.46266913e-02 4.69729766e-02 8.16804621e-04 1.40168181e-01 ] [ -2.24649003e-02 1.43428710e-01 -9.22467192e-01 -3.07013055e-01 2.09773019e-02 -1.32444542e-01 -6.39983017e-04 -1.25454310e-01 ] ] |
از خروجی فوق می توانیم مشاهده کنیم که 3 جز اصلی شباهت کمی به داده های منبع دارند.
اهمیت ویژگی
همانطور که از نام آن مشخص است ، از تکنیک اهمیت ویژگی برای انتخاب ویژگی های اهمیت استفاده می شود. در اصل از یک طبقه بندی نظارت شده آموزش دیده برای انتخاب ویژگی ها استفاده می کند. ما می توانیم این تکنیک انتخاب ویژگی را با کمک کلاس ExtraTreeClassifier کتابخانه scikit-learn Python پیاده سازی کنیم.
مثال
در این مثال، ما از ExtraTreeClassifier برای انتخاب ویژگی ها از مجموعه داده های Pima Indians Diabetes استفاده خواهیم کرد.
1 2 3 4 5 6 |
from pandas import read_csv from sklearn.ensemble import ExtraTreesClassifier path = r'C:\Desktop\pima-indians-diabetes.csv' names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = read_csv(data, names=names) array = dataframe.values |
بعد ، ما آرایه را به اجزای ورودی و خروجی جدا خواهیم کرد –
1 2 |
X = array[:,0:8] Y = array[:,8] |
خطوط کد زیر ویژگی هایی را از مجموعه داده استخراج می کند –
1 2 3 |
model = ExtraTreesClassifier() model.fit(X, Y) print(model.feature_importances_) |
خروجی
1 |
[ 0.11070069 0.2213717 0.08824115 0.08068703 0.07281761 0.14548537 0.12654214 0.15415431] |
از خروجی، می توانیم مشاهده کنیم که برای هر ویژگی امتیازاتی وجود دارد. هرچه امتیاز بیشتر باشد، اهمیت آن ویژگی بالاتر است.
لیست جلسات قبل آموزش یادگیری ماشین با پایتون
یک دیدگاه
-
3 سال پیش
سلام، روز بخیر
به فرض اگر ما تعداد ۲۰۰ عدد شاخص داشته باشیم، مرتبط با زنجیره تامین، به طور مثال قدرت مالی، نیروی کار چند مهارته، سرعت پاسخ، تعداد گواهی های کیفی و… که هر کدام از اینها به یکی از پارادایم های تاب اوری، چابکی، ناب و سبز متعلق هستند.
حال اگر بخوایم از بین این ۲۰۰ شاخص ارزیابی، حداکثر تعداد ۱۵ عدد را اتتخاب کنیم، به عنوان ورودی چه چیزی باید برای مدل تعریف کنیم که خروجی ما ۱۵ شاخص مهم باشد؟
منظور بنده این هست که در مدل های نظارت شده، مثلا در مثال معروف گل زنبق به عنوان داده امورش تعدادی داده به مدل میدهیم تا مدل متوجه شود که کدام مشخصات برای چه نوع گلی است، تا در انتها، توانایی تشخیص انواع مختلف گل زنبق را داشته باشد. حال در اینجا، چه چیزی باید تعریف کرد که مدل متوجه شود ما به دنبال چه چیزی هستیم؟
دیدگاه شما