সাইকিট-লার্ন সহ এলোমেলো বনগুলিতে বৈশিষ্ট্য আমদানি ব্যবহার করে বৈশিষ্ট্য নির্বাচন


12

আমি এলোমেলো বনগুলিতে সাইকিট-লার্ন সহ বৈশিষ্ট্য আমদানির প্লট করেছি । এলোমেলো বন ব্যবহার করে পূর্বাভাস উন্নত করতে, কীভাবে আমি বৈশিষ্ট্যগুলি অপসারণের জন্য প্লটের তথ্য ব্যবহার করতে পারি? অর্থাৎ কীভাবে স্পট তথ্যের উপর ভিত্তি করে কোনও বৈশিষ্ট্য অকার্যকর বা এলোমেলো বনগুলির কর্মক্ষমতা আরও খারাপ হ্রাস কিনা তা স্পষ্ট করবেন কীভাবে? প্লটটি বৈশিষ্ট্যের উপর ভিত্তি করে feature_importances_এবং আমি শ্রেণিবদ্ধ ব্যবহার করি sklearn.ensemble.RandomForestClassifier

আমি সচেতন যে বৈশিষ্ট্য নির্বাচনের জন্য অন্যান্য কৌশল রয়েছে , তবে এই প্রশ্নে আমি কীভাবে বৈশিষ্ট্যটি ব্যবহার করতে হবে সেদিকে ফোকাস করতে চাই feature_importances_


এই জাতীয় বৈশিষ্ট্য গুরুত্ব প্লট উদাহরণ:

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

উত্তর:


14

feature_importances_সর্বাধিক গুরুত্বপূর্ণ স্কোর সহ বৈশিষ্ট্যগুলি নির্বাচন করতে আপনি কেবল বৈশিষ্ট্যটি ব্যবহার করতে পারেন । সুতরাং উদাহরণস্বরূপ আপনি গুরুত্ব অনুযায়ী কে সেরা বৈশিষ্ট্য নির্বাচন করতে নিম্নলিখিত ফাংশনটি ব্যবহার করতে পারেন।

def selectKImportance(model, X, k=5):
     return X[:,model.feature_importances_.argsort()[::-1][:k]]

বা যদি আপনি নিম্নলিখিত ক্লাসে পাইপলাইন ব্যবহার করছেন

class ImportanceSelect(BaseEstimator, TransformerMixin):
    def __init__(self, model, n=1):
         self.model = model
         self.n = n
    def fit(self, *args, **kwargs):
         self.model.fit(*args, **kwargs)
         return self
    def transform(self, X):
         return X[:,self.model.feature_importances_.argsort()[::-1][:self.n]]

উদাহরণস্বরূপ:

>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import RandomForestClassifier
>>> iris = load_iris()
>>> X = iris.data
>>> y = iris.target
>>> 
>>> model = RandomForestClassifier()
>>> model.fit(X,y)
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
            max_depth=None, max_features='auto', max_leaf_nodes=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=1,
            oob_score=False, random_state=None, verbose=0,
            warm_start=False)
>>> 
>>> newX = selectKImportance(model,X,2)
>>> newX.shape
(150, 2)
>>> X.shape
(150, 4)

এবং স্পষ্টতই যদি আপনি "শীর্ষ কে বৈশিষ্ট্যগুলি" তুলনায় অন্য কিছু মানদণ্ডের ভিত্তিতে নির্বাচন করতে চান তবে আপনি কেবল সেই অনুযায়ী ফাংশনগুলি সামঞ্জস্য করতে পারেন।


ধন্যবাদ ডেভিড উপরের চৌম্বকটি কীভাবে বৈশিষ্ট্যগুলি কার্যকর তা চয়ন করতে কোনও অন্তর্দৃষ্টি? (কমপক্ষে দরকারী বৈশিষ্ট্যটি অপসারণ থেকে বাদ দিয়ে আবার আরএফ
চালাবেন

1
সর্বাধিক স্বয়ংক্রিয় বৈশিষ্ট্য নির্বাচনের মতো আমিও বলেছি বেশিরভাগ লোকেরা একটি টিউনিং গ্রিড ব্যবহার করেন। তবে (এবং প্রকৌশল) বৈশিষ্ট্যগুলি নির্বাচন করার সময় ডোমেন দক্ষতা ব্যবহার করা সম্ভবত সবচেয়ে মূল্যবান - তবে সত্যই স্বয়ংক্রিয়ভাবে কার্যকর নয় isn't
ডেভিড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.