Beginner notes
Google Colab
dog-breed-identification
Matplotlib practice (dataset: dog-breed-identification)
Format: Code → Output → İzah. Kod İngiliscədir, izahlar Azərbaycan dilindədir.
Bu yollara uyğun yazılıb
- /content/drive/MyDrive/dog vision/labels.csv
- /content/drive/MyDrive/dog vision/train
- /content/drive/MyDrive/dog vision/dog-breed-identification.zip
A) Drive mount
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.
B) Unzip (terminal cell)
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/ və labels.csv görünməlidir.
C) Yol yoxla
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.
A) CSV oxu + ilk 5 sətir
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).
B) info
Python
df_info.py
labels_csv.info()
İzah: info() — sətir sayı, sütun tipləri, boş dəyər var/yox.
A) filenames list
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.
B) train şəkil sayı = CSV sətir sayı?
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.
A) Top 20 — bar chart
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.
B) Histogram — breed başına şəkil sayı paylanması
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.
C) Pie — yalnız top 10
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.
A) Breed sütununu list et
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.
B) Unikal breed-lər (təkrarsız)
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.
C) Seçilmiş breed-lər üçün filtr (isin)
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.
A) ID ilə şəkil göstər + breed
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.
B) Random 1 şəkil
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.
C) 3x3 grid — 9 random şəkil
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.
A) Seçilmiş breed-lərin sayını göstər (bar)
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.
B) Bir breed seç → 6 şəkil göstər (2x3)
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.
Pandas
- 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.
Matplotlib
- 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.