<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Min Xiong</title>
    <description>The latest articles on DEV Community by Min Xiong (@min_xiong_41c246845ccc7dd).</description>
    <link>https://dev.to/min_xiong_41c246845ccc7dd</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3864391%2F1be72f7a-5386-4ee4-b7eb-b38209f4ec0e.png</url>
      <title>DEV Community: Min Xiong</title>
      <link>https://dev.to/min_xiong_41c246845ccc7dd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/min_xiong_41c246845ccc7dd"/>
    <language>en</language>
    <item>
      <title>🔥 KNN Explained in 5 Minutes (Python + Iris Dataset) — Beginner Guide</title>
      <dc:creator>Min Xiong</dc:creator>
      <pubDate>Mon, 06 Apr 2026 18:27:19 +0000</pubDate>
      <link>https://dev.to/min_xiong_41c246845ccc7dd/knn-explained-in-5-minutes-python-iris-dataset-beginner-guide-3a9i</link>
      <guid>https://dev.to/min_xiong_41c246845ccc7dd/knn-explained-in-5-minutes-python-iris-dataset-beginner-guide-3a9i</guid>
      <description>&lt;p&gt;🧠 Why KNN Is So Popular&lt;/p&gt;

&lt;p&gt;Machine learning can feel complicated…&lt;/p&gt;

&lt;p&gt;KNN isn’t.&lt;/p&gt;

&lt;p&gt;No training loops.&lt;br&gt;
No gradients.&lt;br&gt;
No heavy math.&lt;/p&gt;

&lt;p&gt;Just one idea:&lt;/p&gt;

&lt;p&gt;Similar data points are close to each other.&lt;br&gt;
🎬 Full Video Explanation&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/0aIKpEfD-Eo"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;⚙️ How KNN Works&lt;/p&gt;

&lt;p&gt;KNN is a lazy learning algorithm — it doesn’t train a model.&lt;/p&gt;

&lt;p&gt;Instead, it:&lt;/p&gt;

&lt;p&gt;📦 Stores all training data&lt;br&gt;
📏 Computes distance to new data&lt;br&gt;
🔍 Finds the K nearest neighbors&lt;br&gt;
🗳️ Uses their labels to predict&lt;/p&gt;

&lt;p&gt;👉 Majority vote = classification&lt;br&gt;
👉 Average = regression&lt;/p&gt;

&lt;p&gt;🎯 Quick Visual (30s)&lt;/p&gt;


&lt;div&gt;
    &lt;iframe src="https://www.youtube.com/embed/Qe3ob8gPyhA"&gt;
    &lt;/iframe&gt;
  &lt;/div&gt;


&lt;p&gt;📏 Distance Matters (Core Idea)&lt;/p&gt;

&lt;p&gt;Everything in KNN depends on how we measure distance.&lt;/p&gt;

&lt;p&gt;📐 Euclidean vs Manhattan vs Minkowski&lt;br&gt;
🔹 Euclidean Distance&lt;br&gt;
Straight-line distance&lt;br&gt;
Default in most cases&lt;br&gt;
Best for continuous features&lt;/p&gt;

&lt;p&gt;👉 Think: “as the crow flies”&lt;/p&gt;

&lt;p&gt;🔹 Manhattan Distance&lt;br&gt;
Moves in grid-like paths&lt;br&gt;
Sum of absolute differences&lt;/p&gt;

&lt;p&gt;👉 Think: “walking through city blocks”&lt;br&gt;
🔹 Minkowski Distance&lt;br&gt;
General version of both&lt;br&gt;
Controlled by parameter p&lt;br&gt;
p = 1  # Manhattan&lt;br&gt;
p = 2  # Euclidean&lt;/p&gt;

&lt;p&gt;👉 One formula → multiple distance types&lt;/p&gt;

&lt;p&gt;🎬 Distance Explained (Short)&lt;br&gt;
  &lt;/p&gt;
&lt;div&gt;
    &lt;iframe src="https://www.youtube.com/embed/SnLr8ERgkJk"&gt;
    &lt;/iframe&gt;
  &lt;/div&gt;


&lt;p&gt;🌸 Example: Iris Dataset&lt;/p&gt;

&lt;p&gt;The Iris dataset is perfect for beginners.&lt;/p&gt;

&lt;p&gt;3 flower species&lt;br&gt;
4 features:&lt;br&gt;
Sepal length&lt;br&gt;
Sepal width&lt;br&gt;
Petal length&lt;br&gt;
Petal width&lt;/p&gt;

&lt;p&gt;👉 Goal: predict species&lt;/p&gt;

&lt;p&gt;💻 Python Example (Complete)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sklearn.datasets&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;load_iris&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sklearn.model_selection&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;train_test_split&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sklearn.neighbors&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;KNeighborsClassifier&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sklearn.metrics&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;accuracy_score&lt;/span&gt;

&lt;span class="n"&gt;iris&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;load_iris&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;iris&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;
&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;iris&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;

&lt;span class="n"&gt;X_train&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;X_test&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y_train&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y_test&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;train_test_split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;X&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;test_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;random_state&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;knn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;KNeighborsClassifier&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n_neighbors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;knn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;X_train&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y_train&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;y_pred&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;knn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;predict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;X_test&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Accuracy:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;accuracy_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;y_test&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y_pred&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;new_sample&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="mf"&gt;5.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;3.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;span class="n"&gt;prediction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;knn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;predict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;new_sample&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Predicted:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;iris&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;target_names&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;prediction&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧠 Key Takeaways&lt;br&gt;
✅ Pros&lt;br&gt;
Simple and intuitive&lt;br&gt;
No training phase&lt;br&gt;
Great for beginners&lt;br&gt;
⚠️ Cons&lt;br&gt;
Slow for large datasets&lt;br&gt;
Sensitive to noise&lt;br&gt;
Needs feature scaling&lt;/p&gt;

&lt;p&gt;🎯 When Should You Use KNN?&lt;/p&gt;

&lt;p&gt;Use KNN when:&lt;/p&gt;

&lt;p&gt;Dataset is small&lt;br&gt;
Data is well-labeled&lt;br&gt;
You need a quick baseline&lt;br&gt;
🧩 One-Line Summary&lt;/p&gt;

&lt;p&gt;Store data → Find neighbors → Vote → Predict&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>machinelearning</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
