n_neighbors ट्यून करना
n_neighbors KNN का सबसे महत्वपूर्ण पैरामीटर है। जब आपको डेटासेट में आउट्लायर की संख्या का अंदाज़ा नहीं होता (जो अक्सर होता है), तब आप उस thumb rule का इस्तेमाल नहीं कर सकते जो कहता है कि जब contamination 10% से कम हो तो 20 neighbors लें.
ऐसे मामलों में, आपको n_neighbors ट्यून करना होगा। इस प्रक्रिया का अभ्यास पिछले अभ्यास के females डेटासेट के ट्रांसफ़ॉर्म किए गए वर्शन पर कीजिए। यह females_transformed नाम से लोड है। KNN एस्टीमेटर, evaluate_outlier_classifier और evaluate_regressor फंक्शन भी लोड हैं.
स्मरण के लिए फंक्शनों के बॉडी नीचे दिए गए हैं:
def evaluate_outlier_classifier(model, data, threshold=.75):
model.fit(data)
probs = model.predict_proba(data)
inliers = data[probs[:, 1] <= threshold]
return inliers
def evaluate_regressor(inliers):
X, y = inliers.drop("weightkg", axis=1), inliers[['weightkg']]
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=10, train_size=0.8)
lr = LinearRegression()
lr.fit(X_train, y_train)
preds = lr.predict(X_test)
rmse = root_mean_squared_error(y_test, preds)
return round(rmse, 3)
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में Anomaly Detection
अभ्यास निर्देश
n_neighborsके संभावित मानों की एक लिस्ट इसी क्रम में बनाएँ: 5, 10, 20- एक
KNNमॉडल इंस्टैंशिएट करें और लूप में वर्तमानkकोn_neighborsके रूप में सेट करें. evaluate_outlier_classifierफंक्शन का उपयोग करके इनलायर्स निकालें.evaluate_regressorसे RMSE निकालें औरscoresमें इसे स्टोर करें, जहाँ key के रूप मेंkऔर value के रूप में RMSE रखें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# Create a list of values for n_neigbors
n_neighbors = [____, ____, ____]
scores = dict()
for k in n_neighbors:
# Instantiate KNN with the current k
knn = ____(____, n_jobs=-1)
# Find the inliers with the current KNN
inliers = ____(____, ____, .50)
# Calculate and store RMSE into scores
scores[____] = ____
print(scores)