Search icon CANCEL
Subscription
0
Cart icon
Cart
Close icon
You have no products in your basket yet
Save more on your purchases!
Savings automatically calculated. No voucher code required
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletters
Free Learning
Arrow right icon
Arrow up icon
GO TO TOP
Hands-On Machine Learning with scikit-learn and Scientific Python Toolkits

You're reading from  Hands-On Machine Learning with scikit-learn and Scientific Python Toolkits

Product type Book
Published in Jul 2020
Publisher Packt
ISBN-13 9781838826048
Pages 384 pages
Edition 1st Edition
Languages
Author (1):
Tarek Amr Tarek Amr
Profile icon Tarek Amr
Toc

Table of Contents (18) Chapters close

Preface 1. Section 1: Supervised Learning
2. Introduction to Machine Learning 3. Making Decisions with Trees 4. Making Decisions with Linear Equations 5. Preparing Your Data 6. Image Processing with Nearest Neighbors 7. Classifying Text Using Naive Bayes 8. Section 2: Advanced Supervised Learning
9. Neural Networks – Here Comes Deep Learning 10. Ensembles – When One Model Is Not Enough 11. The Y is as Important as the X 12. Imbalanced Learning – Not Even 1% Win the Lottery 13. Section 3: Unsupervised Learning and More
14. Clustering – Making Sense of Unlabeled Data 15. Anomaly Detection – Finding Outliers in Data 16. Recommender System – Getting to Know Their Taste 17. Other Books You May Enjoy

Calculating the precision at k

In the example of the viral infection from the previous section, your quarantine capacity may be limited to, say, 500 patients. In such a case, you would want as many positive cases to be in the top 500 patients according to their predicted probabilities. In other words, we do not care much about the model's overall precision, since we only care about its precision for the top k samples.

We can calculate the precision for the top k samples using the following code:

def precision_at_k_score(y_true, y_pred_proba, k=1000, pos_label=1):
topk = [
y_true_ == pos_label
for y_true_, y_pred_proba_
in sorted(
zip(y_true, y_pred_proba),
key=lambda y: y[1],
reverse=True
)[:k]
]
return sum(topk) / len(topk)

If you are not a big fan of the functional programming paradigm, then let me explain the code to you in detail. The zip() method combines the two lists and...

lock icon The rest of the chapter is locked
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at €14.99/month. Cancel anytime