स्किकिट जानें - यादृच्छिक निर्णय पेड़
यह अध्याय आपको स्केलेर के यादृच्छिक वृक्षों को समझने में मदद करेगा।
यादृच्छिक निर्णय ट्री एल्गोरिदम
जैसा कि हम जानते हैं कि एक डीटी को आमतौर पर डेटा को पुनरावर्ती रूप से विभाजित करके प्रशिक्षित किया जाता है, लेकिन ओवरफिट होने का खतरा होने पर, उन्हें डेटा के विभिन्न उप-वर्गों में कई पेड़ों को प्रशिक्षित करके यादृच्छिक जंगलों में बदल दिया गया है। sklearn.ensemble मॉड्यूल यादृच्छिक निर्णय पेड़ों के आधार पर दो एल्गोरिदम का पालन कर रहा है -
रैंडम वन एल्गोरिथ्म
विचाराधीन प्रत्येक सुविधा के लिए, यह स्थानीय रूप से इष्टतम सुविधा / विभाजन संयोजन की गणना करता है। यादृच्छिक वन में, पहनावा में प्रत्येक निर्णय वृक्ष को प्रशिक्षण सेट से प्रतिस्थापन के साथ तैयार किए गए नमूने से बनाया गया है और फिर उनमें से प्रत्येक से भविष्यवाणी प्राप्त होती है और अंत में मतदान के माध्यम से सबसे अच्छा समाधान का चयन करता है। यह दोनों वर्गीकरण के साथ ही प्रतिगमन कार्यों के लिए उपयोग किया जा सकता है।
यादृच्छिक वन के साथ वर्गीकरण
एक यादृच्छिक वन क्लासिफायर बनाने के लिए, स्किट-लर्न मॉड्यूल प्रदान करता है sklearn.ensemble.RandomForestClassifier। यादृच्छिक वन वर्गीकरण का निर्माण करते समय, इस मॉड्यूल का उपयोग करने वाले मुख्य पैरामीटर हैं‘max_features’ तथा ‘n_estimators’।
यहाँ, ‘max_features’नोड को विभाजित करते समय विचार करने के लिए सुविधाओं के यादृच्छिक सबसेट का आकार है। यदि हम इस पैरामीटर्स के मान को किसी में नहीं चुनते हैं तो यह एक यादृच्छिक सबसेट की बजाय सभी विशेषताओं पर विचार करेगा। दूसरी ओर,n_estimatorsजंगल में पेड़ों की संख्या है। पेड़ों की संख्या जितनी अधिक होगी, बेहतर परिणाम होगा। लेकिन यह भी गणना करने के लिए अधिक समय लगेगा।
कार्यान्वयन का उदाहरण
निम्नलिखित उदाहरण में, हम उपयोग करके एक यादृच्छिक वन वर्गीकरण का निर्माण कर रहे हैं sklearn.ensemble.RandomForestClassifier और इसकी शुद्धता की जाँच भी करके cross_val_score मापांक।
from sklearn.model_selection import cross_val_score
from sklearn.datasets import make_blobs
from sklearn.ensemble import RandomForestClassifier
X, y = make_blobs(n_samples = 10000, n_features = 10, centers = 100,random_state = 0) RFclf = RandomForestClassifier(n_estimators = 10,max_depth = None,min_samples_split = 2, random_state = 0)
scores = cross_val_score(RFclf, X, y, cv = 5)
scores.mean()
उत्पादन
0.9997
उदाहरण
रैंडम फ़ॉरेस्ट क्लासिफ़ायर बनाने के लिए हम स्केलेरियन डेटासेट का भी उपयोग कर सकते हैं। निम्नलिखित उदाहरण के रूप में हम आईरिस डेटासेट का उपयोग कर रहे हैं। हमें इसका सटीकता स्कोर और भ्रम मैट्रिक्स भी मिलेगा।
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
path = "https://archive.ics.uci.edu/ml/machine-learning-database
s/iris/iris.data"
headernames = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'Class']
dataset = pd.read_csv(path, names = headernames)
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 4].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30)
RFclf = RandomForestClassifier(n_estimators = 50)
RFclf.fit(X_train, y_train)
y_pred = RFclf.predict(X_test)
result = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(result)
result1 = classification_report(y_test, y_pred)
print("Classification Report:",)
print (result1)
result2 = accuracy_score(y_test,y_pred)
print("Accuracy:",result2)
उत्पादन
Confusion Matrix:
[[14 0 0]
[ 0 18 1]
[ 0 0 12]]
Classification Report:
precision recall f1-score support
Iris-setosa 1.00 1.00 1.00 14
Iris-versicolor 1.00 0.95 0.97 19
Iris-virginica 0.92 1.00 0.96 12
micro avg 0.98 0.98 0.98 45
macro avg 0.97 0.98 0.98 45
weighted avg 0.98 0.98 0.98 45
Accuracy: 0.9777777777777777
यादृच्छिक वन के साथ प्रतिगमन
एक यादृच्छिक वन प्रतिगमन बनाने के लिए, स्किटिट-लर्न मॉड्यूल प्रदान करता है sklearn.ensemble.RandomForestRegressor। यादृच्छिक वन रेजिस्टर का निर्माण करते समय, यह उसी मापदंडों का उपयोग करेगा जैसा कि उपयोग किया जाता हैsklearn.ensemble.RandomForestClassifier।
कार्यान्वयन का उदाहरण
निम्नलिखित उदाहरण में, हम एक यादृच्छिक वन रेजिस्टर का उपयोग करके निर्माण कर रहे हैं sklearn.ensemble.RandomForestregressor और भविष्यवाणी () विधि का उपयोग करके नए मूल्यों के लिए भी भविष्यवाणी कर रहा है।
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import make_regression
X, y = make_regression(n_features = 10, n_informative = 2,random_state = 0, shuffle = False)
RFregr = RandomForestRegressor(max_depth = 10,random_state = 0,n_estimators = 100)
RFregr.fit(X, y)
उत्पादन
RandomForestRegressor(
bootstrap = True, criterion = 'mse', max_depth = 10,
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 = 100, n_jobs = None,
oob_score = False, random_state = 0, verbose = 0, warm_start = False
)
एक बार फिट होने के बाद हम प्रतिगमन मॉडल से निम्नानुसार भविष्यवाणी कर सकते हैं -
print(RFregr.predict([[0, 2, 3, 0, 1, 1, 1, 1, 2, 2]]))
उत्पादन
[98.47729198]
अतिरिक्त पेड़ के तरीके
विचाराधीन प्रत्येक सुविधा के लिए, यह विभाजन के लिए एक यादृच्छिक मूल्य का चयन करता है। अतिरिक्त पेड़ विधियों का उपयोग करने का लाभ यह है कि यह मॉडल के विचरण को थोड़ा और कम करने की अनुमति देता है। इन तरीकों का उपयोग करने का नुकसान यह है कि यह पूर्वाग्रह को थोड़ा बढ़ाता है।
एक्स्ट्रा-ट्री विधि के साथ वर्गीकरण
एक्स्ट्रा-ट्री पद्धति का उपयोग करके एक क्लासिफायर बनाने के लिए, स्किटिट-लर्न मॉड्यूल प्रदान करता है sklearn.ensemble.ExtraTreesClassifier। यह उसी मापदंडों का उपयोग करता है जैसा कि उपयोग किया जाता हैsklearn.ensemble.RandomForestClassifier। एकमात्र अंतर उस तरीके से है, जो ऊपर चर्चा की गई है, वे पेड़ों का निर्माण करते हैं।
कार्यान्वयन का उदाहरण
निम्नलिखित उदाहरण में, हम उपयोग करके एक यादृच्छिक वन वर्गीकरण का निर्माण कर रहे हैं sklearn.ensemble.ExtraTreeClassifier और इसका उपयोग करके इसकी सटीकता की जांच करना cross_val_score मापांक।
from sklearn.model_selection import cross_val_score
from sklearn.datasets import make_blobs
from sklearn.ensemble import ExtraTreesClassifier
X, y = make_blobs(n_samples = 10000, n_features = 10, centers=100,random_state = 0)
ETclf = ExtraTreesClassifier(n_estimators = 10,max_depth = None,min_samples_split = 10, random_state = 0)
scores = cross_val_score(ETclf, X, y, cv = 5)
scores.mean()
उत्पादन
1.0
उदाहरण
हम एक्स्ट्रा-ट्री विधि का उपयोग करके क्लासिफायर बनाने के लिए स्केलेरियन डेटासेट का भी उपयोग कर सकते हैं। निम्नलिखित उदाहरण के रूप में हम पीमा-भारतीय डेटासेट का उपयोग कर रहे हैं।
from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import ExtraTreesClassifier
path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]
seed = 7
kfold = KFold(n_splits=10, random_state=seed)
num_trees = 150
max_features = 5
ETclf = ExtraTreesClassifier(n_estimators=num_trees, max_features=max_features)
results = cross_val_score(ETclf, X, Y, cv=kfold)
print(results.mean())
उत्पादन
0.7551435406698566
एक्स्ट्रा-ट्री विधि के साथ प्रतिगमन
बनाने के लिए Extra-Tree प्रतिगमन, स्किट-लर्न मॉड्यूल प्रदान करता है sklearn.ensemble.ExtraTreesRegressor। यादृच्छिक वन रेजिस्टर का निर्माण करते समय, यह उसी मापदंडों का उपयोग करेगा जैसा कि उपयोग किया जाता हैsklearn.ensemble.ExtraTreesClassifier।
कार्यान्वयन का उदाहरण
निम्नलिखित उदाहरण में, हम आवेदन कर रहे हैं sklearn.ensemble.ExtraTreesregressorऔर उसी डेटा पर जैसा कि हमने यादृच्छिक वन रेजिस्टर का निर्माण करते समय उपयोग किया था। चलिए आउटपुट में अंतर देखते हैं
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.datasets import make_regression
X, y = make_regression(n_features = 10, n_informative = 2,random_state = 0, shuffle = False)
ETregr = ExtraTreesRegressor(max_depth = 10,random_state = 0,n_estimators = 100)
ETregr.fit(X, y)
उत्पादन
ExtraTreesRegressor(bootstrap = False, criterion = 'mse', max_depth = 10,
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 = 100, n_jobs = None,
oob_score = False, random_state = 0, verbose = 0, warm_start = False)
उदाहरण
एक बार फिट होने के बाद हम प्रतिगमन मॉडल से निम्नानुसार भविष्यवाणी कर सकते हैं -
print(ETregr.predict([[0, 2, 3, 0, 1, 1, 1, 1, 2, 2]]))
उत्पादन
[85.50955817]