मैं एक रैंडम फ़ॉरेस्ट मॉडल के साथ एक मल्टीपाउट वर्गीकरण करने के लिए scikit-learn वेबसाइट पर इस उदाहरण का अनुसरण कर रहा हूं ।
from sklearn.datasets import make_classification
from sklearn.multioutput import MultiOutputClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.utils import shuffle
import numpy as np
X, y1 = make_classification(n_samples=5, n_features=5, n_informative=2, n_classes=2, random_state=1)
y2 = shuffle(y1, random_state=1)
Y = np.vstack((y1, y2)).T
forest = RandomForestClassifier(n_estimators=10, random_state=1)
multi_target_forest = MultiOutputClassifier(forest, n_jobs=-1)
multi_target_forest.fit(X, Y).predict(X)
print(multi_target_forest.predict_proba(X))
इससे predict_proba
मुझे 2 5x2 सरणियाँ मिलती हैं:
[array([[ 0.8, 0.2],
[ 0.4, 0.6],
[ 0.8, 0.2],
[ 0.9, 0.1],
[ 0.4, 0.6]]), array([[ 0.6, 0.4],
[ 0.1, 0.9],
[ 0.2, 0.8],
[ 0.9, 0.1],
[ 0.9, 0.1]])]
मैं वास्तव में मैट्रिक्स n_sample
द्वारा उम्मीद कर रहा था n_classes
। मैं यह समझने के लिए संघर्ष कर रहा हूं कि यह किस तरह मौजूद वर्गों की संभावना से संबंधित है।
डॉक्स के लिए predict_proba
कहता है:
आकार की सरणी = [n_samples, n_classes], या n_outputs की सूची ऐसी सरणियाँ यदि n_outputs> 1।
इनपुट नमूनों की वर्ग संभावनाएँ। कक्षाओं का क्रम विशेषता क्लासेस_ से मेल खाता है।
मैं अनुमान लगा रहा हूं कि मेरे पास विवरण में उत्तरार्द्ध है, लेकिन मैं अभी भी यह समझने के लिए संघर्ष कर रहा हूं कि यह मेरी कक्षा की संभावनाओं से कैसे संबंधित है।
इसके अलावा, जब मैं मॉडल को प्राप्त करने के लिए classes_
विशेषता को एक्सेस करने का प्रयास करता forest
हूं तो AttributeError
यह विशेषता मौजूद नहीं है MultiOutputClassifier
। मैं कक्षाओं को आउटपुट से कैसे संबंधित कर सकता हूं?
print(forest.classes_)
AttributeError: 'RandomForestClassifier' object has no attribute 'classes_'