جنگل تصادفی (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 ۰ ۱ ۱۵
اگر نوشته بالا برای شما مفید بوده، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای آمار، احتمالات و دادهکاوی
- آموزش دادهکاوی یا Data Mining در متلب
- مجموعه آموزشهای یادگیری ماشین و بازشناسی الگو
- دادهکاوی (Data Mining) — از صفر تا صد
- یادگیری علم داده (Data Science) با پایتون — از صفر تا صد
- زبان برنامهنویسی پایتون (Python) — از صفر تا صد
مجموعه: برنامه نویسی, داده کاوی برچسب ها: Decision Tree, python, Python Programming, Python Programming Language, Random Forest, الگوریتم جنگل تصادفی, برنامه نویسی پایتون, جنگل تصادفی, درخت تصمیم, زبان برنامه نویسی پایتون, زبان پایتون