আপনার বিবরণ থেকে এটি নিখুঁত ধারণা দেয় বলে মনে হচ্ছে: আপনি কেবলমাত্র আরওসি বক্ররেখা গণনা করতে পারবেন না, তবে আত্মবিশ্বাসের অন্তরগুলি তৈরি করতে এর চারপাশের বৈচিত্রটিও গণনা করতে পারেন। এটি আপনার মডেলটি কতটা স্থিতিশীল তা ধারণা দেওয়া উচিত should
উদাহরণস্বরূপ, এটি পছন্দ করুন:
এখানে আমি পৃথক আরওসি বক্ররেখার পাশাপাশি গড় বক্ররেখা এবং আত্মবিশ্বাসের অন্তরগুলি রেখেছি। এমন কিছু অঞ্চল রয়েছে যেখানে বক্ররেখা সম্মত হয়, তাই আমাদের মধ্যে ভিন্নতা আছে, এবং এমন ক্ষেত্র রয়েছে যেখানে তারা দ্বিমত পোষণ করেন না।
পুনরাবৃত্ত সিভির জন্য আপনি কেবল এটি একাধিকবার পুনরাবৃত্তি করতে পারবেন এবং সমস্ত স্বতন্ত্র ভাঁজগুলিতে মোট গড় পেতে পারেন:
এটি পূর্ববর্তী চিত্রের সাথে বেশ সমান, তবে গড় এবং বৈচিত্রের আরও স্থিতিশীল (অর্থাত্ নির্ভরযোগ্য) অনুমান দেয়।
প্লটটি পেতে কোডটি এখানে:
import matplotlib.pyplot as plt
import numpy as np
from scipy import interp
from sklearn.datasets import make_classification
from sklearn.cross_validation import KFold
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve
X, y = make_classification(n_samples=500, random_state=100, flip_y=0.3)
kf = KFold(n=len(y), n_folds=10)
tprs = []
base_fpr = np.linspace(0, 1, 101)
plt.figure(figsize=(5, 5))
for i, (train, test) in enumerate(kf):
model = LogisticRegression().fit(X[train], y[train])
y_score = model.predict_proba(X[test])
fpr, tpr, _ = roc_curve(y[test], y_score[:, 1])
plt.plot(fpr, tpr, 'b', alpha=0.15)
tpr = interp(base_fpr, fpr, tpr)
tpr[0] = 0.0
tprs.append(tpr)
tprs = np.array(tprs)
mean_tprs = tprs.mean(axis=0)
std = tprs.std(axis=0)
tprs_upper = np.minimum(mean_tprs + std, 1)
tprs_lower = mean_tprs - std
plt.plot(base_fpr, mean_tprs, 'b')
plt.fill_between(base_fpr, tprs_lower, tprs_upper, color='grey', alpha=0.3)
plt.plot([0, 1], [0, 1],'r--')
plt.xlim([-0.01, 1.01])
plt.ylim([-0.01, 1.01])
plt.ylabel('True Positive Rate')
plt.xlabel('False Positive Rate')
plt.axes().set_aspect('equal', 'datalim')
plt.show()
বারবার সিভির জন্য:
idx = np.arange(0, len(y))
for j in np.random.randint(0, high=10000, size=10):
np.random.shuffle(idx)
kf = KFold(n=len(y), n_folds=10, random_state=j)
for i, (train, test) in enumerate(kf):
model = LogisticRegression().fit(X[idx][train], y[idx][train])
y_score = model.predict_proba(X[idx][test])
fpr, tpr, _ = roc_curve(y[idx][test], y_score[:, 1])
plt.plot(fpr, tpr, 'b', alpha=0.05)
tpr = interp(base_fpr, fpr, tpr)
tpr[0] = 0.0
tprs.append(tpr)
অনুপ্রেরণার উত্স: http://scikit-learn.org/stable/auto_exferences/model_selection/plot_roc_crossval.html