جنگل تصادفی (Random Forest) در پایتون — راهنمای کاربردی

«جنگل تصادفی» (Random Forest)، در واقع گروهی از «درخت‌های تصمیم» (Decision Tree) است. در الگوریتم جنگل تصادفی، به منظور دسته‌بندی یک نمونه جدید بر پایه «ویژگی‌های» (Features) آن نمونه، هر درخت، کلاسی که نمونه را متعلق به آن می‌داند مشخص می‌کند و در واقع یک رای می‌دهد. جنگل، بر اساس این آرا، دسته‌ای که بیشترین رای را به خود اختصاص داده انتخاب و به عنوان دسته نهایی نمونه داده تعیین می‌کند.

در ادامه، کدهای لازم برای پیاده‌سازی الگوریتم جنگل تصادفی در «زبان برنامه‌نویسی پایتون» (Python Programming Language) ارائه شده است.

قطعه کد اول:

>>> import numpy as np
>>> import pylab as pl
>>> x=np.random.uniform(1,100,1000)
>>> y=np.log(x)+np.random.normal(0,.3,1000)
>>> pl.scatter(x,y,s=1,label=’log(x) with noise’)

خروجی:

<matplotlib.collections.PathCollection object at 0x0434EC50>

قطعه کد دوم:

>>> pl.plot(np.arange(1,100),np.log(np.arange(1,100)),c=’b’,label=’log(x) true function’)

خروجی:

[<matplotlib.lines.Line2D object at 0x0434EB30>]

قطعه کد سوم:

>>> pl.xlabel(‘x’)

خروجی:

Text(0.5,0,’x’)

قطعه کد چهارم:

>>> pl.ylabel(‘f(x)=log(x)’)

خروجی:

Text(0,0.5,’f(x)=log(x)’)

قطعه کد پنجم:

>>> pl.legend(loc=’best’)

خروجی:

<matplotlib.legend.Legend object at 0x04386450>

قطعه کد ششم:

>>> pl.title(‘A basic log function’)

خروجی:

Text(0.5,1,’A basic log function’)

قطعه کد هفتم:

>>> pl.show()

جنگل تصادفیقطعه کد هشتم:

>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import RandomForestClassifier
>>> import pandas as pd
>>> import numpy as np
>>> iris=load_iris()
>>> df=pd.DataFrame(iris.data,columns=iris.feature_names)
>>> df[‘is_train’]=np.random.uniform(0,1,len(df))<=.75
>>> df[‘species’]=pd.Categorical.from_codes(iris.target,iris.target_names)
>>> df.head()

خروجی:

sepal length (cm) sepal width (cm) … is_train species
۰ ۵٫۱ ۳٫۵ … True setosa
۱ ۴٫۹ ۳٫۰ … True setosa
۲ ۴٫۷ ۳٫۲ … True setosa
۳ ۴٫۶ ۳٫۱ … True setosa
۴ ۵٫۰ ۳٫۶ … False setosa
[۵ rows x 6 columns]

قطعه کد نهم:

sepal length (cm) sepal width (cm) … is_train species
۰ ۵٫۱ ۳٫۵ … True setosa
۱ ۴٫۹ ۳٫۰ … True setosa
۲ ۴٫۷ ۳٫۲ … True setosa
۳ ۴٫۶ ۳٫۱ … True setosa
۴ ۵٫۰ ۳٫۶ … False setosa
[۵ rows x 6 columns]

خروجی:

RandomForestClassifier(bootstrap=True, class_weight=None, criterion=’gini’,
max_depth=None, max_features=’auto’, max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=2,
oob_score=False, random_state=None, verbose=0,
warm_start=False)

قطعه کد دهم:

>>> preds=iris.target_names[clf.predict(test[features])]
>>> pd.crosstab(test[‘species’],preds,rownames=[‘actual’],colnames=[‘preds’])

خروجی:

preds                  setosa            versicolor             virginica
actual
setosa                      ۱۲                      ۰                         ۰
versicolor                   ۰                      ۱۷                       ۲
virginica                     ۰                       ۱                        ۱۵

 

اگر نوشته بالا برای شما مفید بوده، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

منبع [+]

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *