1.4 Feature Selection
1.4 Feature Selection
1
1.4 ) Feature Selection
, y المطلوبة و المؤثرة و استبعاد الباقين ويتم اختيارها بناء علي مدي ارتباطها بالمخرجfeatures و هي خاصة باختيار الـ
feature_selection وتتم عبر الموديول
1.4.1 feature_selection.SelectPercentile
1.4.2 feature_selection.GenericUnivariateSelect
1.4.3 feature_selection.SelectKBest
1.4.4 feature_selection.SelectFromModel
2
1.4.1) Select Percentile
, ويتم تحديد مقدار االهمية بطرق عديدة, واللي بتختار اهم فيتشرز مرتبطة بالناتج حسب النسبة المئوية المعطاةselectpercentile يتم استخدام اداة
chi2 او أداةf_classif مثل أداة
: الصيغة
# Import Libraries
from sklearn.feature_selection import SelectPercentile
from sklearn.feature_selection import chi2 , f_classif
#----------------------------------------------------
#showing X Dimension
3
print('X Shape is ' , X.shape)
print('Selected Features are : ' , FeatureSelection.get_support())
مثال
from sklearn.datasets import load_digits
from sklearn.feature_selection import SelectPercentile, chi2
X, y = load_digits(return_X_y=True)
64 هنا يتم اظهار عدد فيتشرز الداتا و هي
X.shape
print(X_new.shape)
مثال آخر
4
data = load_breast_cancer()
X = data.data
y = data.target
X.shape
sel = SelectPercentile(score_func = chi2 , percentile = 20).fit_transform(X,y)
sel.shape
5
1.4.2) Generic Univariate Select
و فيها يتم اختيار عدد معين من الفيتشرز بناء علي احد االدوات
: الصيغة
#Import Libraries
from sklearn.feature_selection import GenericUnivariateSelect
from sklearn.feature_selection import chi2 , f_classif
#----------------------------------------------------
#Feature Selection by Generic
#print('Original X Shape is ' , X.shape)
FeatureSelection = GenericUnivariateSelect(score_func= chi2, mode= 'k_best', param=3) # score_func can =
f_classif : mode can = percentile,fpr,fdr,fwe
X = FeatureSelection.fit_transform(X, y)
#showing X Dimension
#print('X Shape is ' , X.shape)
#print('Selected Features are : ' , FeatureSelection.get_support())
6
فيتشرز5 وهنا يتم تحديد عدد
X_new.shape
transformer.get_support()
7
1.4.3) Select KBest
باسلوب رياضي مختلفfeatures يقوم كذلك باختيار عدد معين من الـ
: الصيغة
#Import Libraries
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2 , f_classif
#----------------------------------------------------
#Feature Selection by KBest
#print('Original X Shape is ' , X.shape)
FeatureSelection = SelectKBest(score_func= chi2 ,k=3) # score_func can = f_classif
X = FeatureSelection.fit_transform(X, y)
#showing X Dimension
#print('X Shape is ' , X.shape)
#print('Selected Features are : ' , FeatureSelection.get_support())
8
مثال
from sklearn.datasets import load_digits
from sklearn.feature_selection import SelectKBest, chi2
X, y = load_digits(return_X_y=True)
X.shape
X_new.shape
9
1.4.4) Select From Model
selectfrommodel وده بامر, يتم اختيار الفيتشر بناء علي موديل معين بحيث الموديل نفسه يشوف انهي فيشترز مهمة
: الصيغة
#Import Libraries
from sklearn.feature_selection import SelectFromModel
#----------------------------------------------------
'''
from sklearn.linear_model import LinearRegression
thismodel = LinearRegression()
'''
10
FeatureSelection = SelectFromModel(estimator = thismodel, max_features = None) # make sure that thismodel is
well-defined
X = FeatureSelection.fit_transform(X, y)
#showing X Dimension
#print('X Shape is ' , X.shape)
#print('Selected Features are : ' , FeatureSelection.get_support())
مثال
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import SelectFromModel
data = load_breast_cancer()
X = data.data
y = data.target
وعلي اساسها هيتم اختيار اقوي فيتشرز, لها20 برقم, تم تحديد موديل الغابة العشوائية
الحظ ان مش الزم يتم اختيار نفس الموديل في الترين ,ممكن موديل تاني ,فاختيار الفيتشرز عادي من موديل مختلف ,كمان متنساش ان ممكن يتم
عمل خطوات ورا بعص ,يعني مثال بولينوميال عشان اعمل فيتشرز كتير جدا ,بعدها اجيب موديل يختار منهم
12