Beginner notes Google Colab dog-breed-identification

Matplotlib practice (dataset: dog-breed-identification)

Format: CodeOutputİzah. Kod İngiliscədir, izahlar Azərbaycan dilindədir.

  • /content/drive/MyDrive/dog vision/labels.csv
  • /content/drive/MyDrive/dog vision/train
  • /content/drive/MyDrive/dog vision/dog-breed-identification.zip

Python
setup_drive.py
from google.colab import drive
drive.mount("/content/drive")
İzah: Drive qoşulmasa, MyDrive içindəki dataset fayllarına giriş olmaz.
Terminal
$ /content
!unzip "/content/drive/MyDrive/dog vision/dog-breed-identification.zip" -d "/content/drive/MyDrive/dog vision"
İzah: Zip açıldıqdan sonra train/labels.csv görünməlidir.
Python
paths_check.py
import os

base_dir = "/content/drive/MyDrive/dog vision"
train_dir = os.path.join(base_dir, "train")

print("Base exists:", os.path.exists(base_dir))
print("Train exists:", os.path.exists(train_dir))
Output (example)
console
Base exists: True
Train exists: True
İzah: Burada False görsən, yol səhvdir — əvvəl onu düzəlt, sonra davam et.

Python
read_csv.py
import pandas as pd

labels_csv = pd.read_csv("/content/drive/MyDrive/dog vision/labels.csv")
labels_csv.head()
İzah: Burada əsas iki sütun var: id (şəkil adı) və breed (cins).
Python
df_info.py
labels_csv.info()
İzah: info() — sətir sayı, sütun tipləri, boş dəyər var/yox.

Python
filenames.py
import os

base_dir = "/content/drive/MyDrive/dog vision"
train_dir = os.path.join(base_dir, "train")

filenames = [os.path.join(train_dir, f"{img_id}.jpg") for img_id in labels_csv["id"]]

print("Total filenames:", len(filenames))
print("Example:", filenames[0])
İzah: Burada məqsəd: CSV-dəki bütün id-lər üçün tam şəkil yolunu hazırlamaq.
Python
count_check.py
import os

train_images_count = len([f for f in os.listdir(train_dir) if f.endswith(".jpg")])
csv_count = len(labels_csv)

print("Train images:", train_images_count)
print("CSV rows:", csv_count)
print("Equal?", train_images_count == csv_count)
İzah: Əgər Equal? False çıxsa, ya train qovluğu tam deyil, ya da yol səhvdir.

Python
plot_bar.py
import matplotlib.pyplot as plt

breed_counts = labels_csv["breed"].value_counts()

top_n = 20
breed_counts.head(top_n).plot(kind="bar", figsize=(14, 5))

plt.title(f"Top {top_n} Dog Breeds by Count")
plt.xlabel("Breed")
plt.ylabel("Count")
plt.xticks(rotation=45, ha="right")
plt.show()
İzah: value_counts() — hər breed-dən neçə dəfə var (sayır). head(20) — yalnız ilk 20-ni göstərir.
Python
plot_hist.py
import matplotlib.pyplot as plt

breed_counts = labels_csv["breed"].value_counts()

plt.figure(figsize=(10, 5))
plt.hist(breed_counts, bins=20)

plt.title("Distribution: images per breed")
plt.xlabel("Images per breed")
plt.ylabel("Number of breeds")
plt.show()
İzah: Histogram “az şəkilli breed-lər çoxdur, yoxsa az?” kimi balans hissini verir.
Python
plot_pie.py
import matplotlib.pyplot as plt

breed_counts = labels_csv["breed"].value_counts()

top_n = 10
top_breeds = breed_counts.head(top_n)

plt.figure(figsize=(8, 8))
plt.pie(top_breeds, labels=top_breeds.index, autopct="%1.1f%%", startangle=90)
plt.title(f"Top {top_n} Breeds Share")
plt.show()
İzah: Pie chart çox kateqoriya ilə qarışır — ona görə top 10 idealdır.

Python
list_basic.py
breeds_list = labels_csv["breed"].tolist()

print("Total labels:", len(breeds_list))
print("First 10:", breeds_list[:10])
İzah: tolist() pandas sütununu Python list edir. [:10] ilk 10 element deməkdir.
Python
list_unique.py
unique_breeds = labels_csv["breed"].unique().tolist()

print("Unique breed count:", len(unique_breeds))
print("First 20 unique:", unique_breeds[:20])
İzah: unique() — təkrarsız dəyərləri verir.
Python
filter_isin.py
selected_breeds = ["pug", "husky", "beagle"]

filtered_df = labels_csv[labels_csv["breed"].isin(selected_breeds)]

print("Selected:", selected_breeds)
print("Filtered rows:", len(filtered_df))
filtered_df.head()
İzah: isin(list) — “bu siyahının içində var?” filtridir.

Python
image_by_id.py
import os
from IPython.display import Image, display

base_dir = "/content/drive/MyDrive/dog vision"
train_dir = os.path.join(base_dir, "train")

img_id = labels_csv.loc[0, "id"]
breed = labels_csv.loc[0, "breed"]

img_path = os.path.join(train_dir, img_id + ".jpg")

print("ID:", img_id)
print("Breed:", breed)
display(Image(filename=img_path))
İzah: loc[0, "id"] — 0-cı sətirdəki id. Şəkil yolu isə train/id.jpg.
Python
image_random.py
import os
import random
from IPython.display import Image, display

all_images = [f for f in os.listdir(train_dir) if f.endswith(".jpg")]
random_img = random.choice(all_images)

print("Selected:", random_img)
display(Image(filename=os.path.join(train_dir, random_img)))
İzah: os.listdir() qovluğu list edir, random.choice() listdən 1 random seçir.
Python
image_grid.py
import os
import random
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

all_images = [f for f in os.listdir(train_dir) if f.endswith(".jpg")]
sample_images = random.sample(all_images, 9)

plt.figure(figsize=(10, 10))

for i, img_name in enumerate(sample_images):
    img_path = os.path.join(train_dir, img_name)
    img = mpimg.imread(img_path)

    plt.subplot(3, 3, i + 1)
    plt.imshow(img)
    plt.axis("off")
    plt.title(img_name[:10])

plt.suptitle("Random 3x3 Dog Images", fontsize=16)
plt.show()
İzah: subplot(3,3,i+1) — 3x3 paneldə i+1-ci yer. axis("off") oxları gizlədir.

Python
selected_counts.py
import matplotlib.pyplot as plt

selected_breeds = ["pug", "husky", "beagle", "chihuahua"]

counts = labels_csv[labels_csv["breed"].isin(selected_breeds)]["breed"].value_counts()

counts.plot(kind="bar", figsize=(8, 4))
plt.title("Counts for selected breeds")
plt.xlabel("Breed")
plt.ylabel("Count")
plt.xticks(rotation=30, ha="right")
plt.show()
İzah: Məntiq: filtr (isin) → say (value_counts) → plot.
Python
selected_images.py
import os
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

base_dir = "/content/drive/MyDrive/dog vision"
train_dir = os.path.join(base_dir, "train")

target_breed = "pug"

subset = labels_csv[labels_csv["breed"] == target_breed]
n = min(6, len(subset))
sample_rows = subset.sample(n=n, random_state=42)

plt.figure(figsize=(12, 6))

for i, row in enumerate(sample_rows.itertuples(index=False)):
    img_id = row.id
    img_path = os.path.join(train_dir, img_id + ".jpg")
    img = mpimg.imread(img_path)

    plt.subplot(2, 3, i + 1)
    plt.imshow(img)
    plt.axis("off")
    plt.title(target_breed)

plt.suptitle(f"Sample images for: {target_breed}", fontsize=16)
plt.show()
İzah: target_breed dəyiş — eyni kodla fərqli cinslərdən nümunə gör.

  • value_counts() — hər dəyərin sayını verir (məs: hər breed neçə dəfə var).
  • unique() — təkrarsız dəyərləri verir (məs: neçə fərqli breed var).
  • head(n) — ilk n sətri göstərir.
  • loc[row, col] — konkret hüceyrəni seçir.
  • isin(list) — “bu siyahının içində var?” filtridir.
  • index — nəticədə çox vaxt adlar index-də olur.
  • index.tolist() — index adlarını list edir.
  • tolist() — pandas sütununu Python list edir.
  • plt.figure(figsize=(w,h)) — ölçü.
  • plt.title / xlabel / ylabel — başlıq və ox adları.
  • plt.xticks(rotation=...) — x yazılarını döndürür.
  • plt.subplot(r,c,i) — grid-də i-ci yer.
  • plt.imshow(img) — şəkli göstərir.
  • plt.axis("off") — oxları gizlədir.
  • plt.show() — göstər.
Elvin Babanlı
online • quick replies
×
Hi! I’m Elvin. Ask me anything about projects, stack, or your tasks.