আপনি পাইথনে সাবলীল হন যদি এই ধরণের প্রশ্নগুলির কোডটি সর্বদা সর্বাবস্থায় উত্তর দেওয়া হয়।
RandomForestClassifier.predict
কমপক্ষে বর্তমান সংস্করণ 0.16.1 এ, প্রদত্ত হিসাবে সর্বোচ্চ সম্ভাবনা অনুমান সহ শ্রেণীর পূর্বাভাস দেয় predict_proba
। ( এই লাইন )
এর জন্য ডকুমেন্টেশন predict_proba
বলেছেন:
একটি ইনপুট নমুনার পূর্বাভাসযুক্ত শ্রেণীর সম্ভাবনাগুলি বনের গাছগুলির গড় পূর্বাভাসিত শ্রেণীর সম্ভাবনা হিসাবে গণনা করা হয়। একটি গাছের বর্গ সম্ভাবনা হ'ল পাতায় একই শ্রেণির নমুনাগুলির ভগ্নাংশ।
মূল পদ্ধতি থেকে পার্থক্য সম্ভবত ঠিক তাই predict
ভবিষ্যদ্বাণীগুলির সাথে সামঞ্জস্যপূর্ণ দেয় predict_proba
। মূল ব্রেইম্যান পেপারে ব্যবহৃত "কঠোর" সংখ্যাগরিষ্ঠ ভোটের পরিবর্তে ফলাফলটিকে কখনও কখনও "নরম ভোটদান" বলা হয়। আমি দ্রুত অনুসন্ধানে দুটি পদ্ধতির পারফরম্যান্সের উপযুক্ত তুলনা খুঁজে পাইনি, তবে তারা উভয়ই এই পরিস্থিতিতে মোটামুটি যুক্তিসঙ্গত বলে মনে হয়।
predict
ডকুমেন্টেশন সেরা বেশ বিভ্রান্তিকর এসে গেছে, আমি এটিকে ঠিক করার জন্য একটি টান অনুরোধ জমা দিয়েছি ।
আপনি যদি এর পরিবর্তে সংখ্যাগরিষ্ঠ ভোটের পূর্বাভাস করতে চান তবে এটি করার জন্য এখানে একটি ফাংশন রয়েছে। এর predict_majvote(clf, X)
চেয়ে কল করুন clf.predict(X)
। (ভিত্তিতে predict_proba
; কেবলমাত্র হালকাভাবে পরীক্ষিত, তবে আমি মনে করি এটি কাজ করা উচিত))
from scipy.stats import mode
from sklearn.ensemble.forest import _partition_estimators, _parallel_helper
from sklearn.tree._tree import DTYPE
from sklearn.externals.joblib import Parallel, delayed
from sklearn.utils import check_array
from sklearn.utils.validation import check_is_fitted
def predict_majvote(forest, X):
"""Predict class for X.
Uses majority voting, rather than the soft voting scheme
used by RandomForestClassifier.predict.
Parameters
----------
X : array-like or sparse matrix of shape = [n_samples, n_features]
The input samples. Internally, it will be converted to
``dtype=np.float32`` and if a sparse matrix is provided
to a sparse ``csr_matrix``.
Returns
-------
y : array of shape = [n_samples] or [n_samples, n_outputs]
The predicted classes.
"""
check_is_fitted(forest, 'n_outputs_')
# Check data
X = check_array(X, dtype=DTYPE, accept_sparse="csr")
# Assign chunk of trees to jobs
n_jobs, n_trees, starts = _partition_estimators(forest.n_estimators,
forest.n_jobs)
# Parallel loop
all_preds = Parallel(n_jobs=n_jobs, verbose=forest.verbose,
backend="threading")(
delayed(_parallel_helper)(e, 'predict', X, check_input=False)
for e in forest.estimators_)
# Reduce
modes, counts = mode(all_preds, axis=0)
if forest.n_outputs_ == 1:
return forest.classes_.take(modes[0], axis=0)
else:
n_samples = all_preds[0].shape[0]
preds = np.zeros((n_samples, forest.n_outputs_),
dtype=forest.classes_.dtype)
for k in range(forest.n_outputs_):
preds[:, k] = forest.classes_[k].take(modes[:, k], axis=0)
return preds
বোবা সিনথেটিক কেসে আমি চেষ্টা করেছি, ভবিষ্যদ্বাণীগুলি predict
প্রতিবার পদ্ধতিটির সাথে একমত হয় ।