Ders 22 / 22
Ortam Seçimi
Üç ortam üç ölçütte sayıyla karşılaştırılır ve her ölçüt başka bir ortamı öne çıkarır: dokuz kişilik ekipte yazabilen sayısı 7 / 2 / 4, dokuz adımın hazır parçayla karşılananı 7 / 9 / 5, dokuz üretim kaleminin ortamca karşılananı 3 / 1 / 9 çıkar. Eşit ağırlıkta ham toplam 17 / 12 / 18 olur ve seçim bir puanla belirlenir. Ağırlık taraması seçimin üç ölçütün üçünde de değiştiğini gösterir: ekip ağırlığı 2, ekosistem ağırlığı 2, üretim ağırlığı 0 olduğunda seçim başka ortama geçer; üçüncü ortam ancak ekosistem ağırlığı 4 olunca 39 puanla seçilir. Aynı dokuz sayı aralığa yayılarak normalleştirildiğinde puan 175 / 100 / 140 olur ve hiçbir ham sayı değişmeden seçim döner.
İçindekiler
Üç ders üç yaklaşımı ölçtü: aynı analizin kaç deyimde ifade edildiği, dönüştürmenin kaç fiille yazıldığı, grafiğin kaç katmanla kurulduğu. Üçünde de ölçülen şey ifadenin biçimiydi ve hiçbirinde bir ortamın öbüründen iyi olduğu söylenmedi. Geriye seçimin kendisi kalıyor.
Bu dersin sayısı ölçüt başına sayıdır. Üç ortam üç ölçütte sayılır ve seçimin hangi ölçütte değiştiği aranır. Yanında kursun ikinci sayısı durur: üç ölçütü tek puana indiren işlem de bir soyutlamadır ve kendi varsayılanlarını taşır.
- AO13. Küme K03’ten devralınır ve kurgudur: 3.199 satır, 1.329 abone, 10/25/40 m³ tarife basamakları. Tohum koda yazılıdır.
- AO14. Üç ortam yaklaşımlarıyla anılır ve Python’da modellenir: genel amaçlı bir dilin dizi ve veri çerçevesi arayüzü, analiz odaklı bir dilin bütün-nesne ortamı, hesabın veri deposunda yapıldığı bildirimsel sorgu ortamı. Hiçbir kütüphane ya da ürün adı geçmez.
- AO15. Ölçütler ve birimleri şunlardır. Ekip: dokuz kişilik ekipte o ortamda analizi yazabilen kişi sayısı. Ekosistem: analizin dokuz adımından hazır parçayla karşılananların sayısı. Üretime taşıma: dokuz üretim kaleminden ortamın karşıladıklarının sayısı.
- AO16. Envanter kurgudur ve bu ekibin kendi dokuz adımı içindir; ortamlar hakkında genel bir sıralama değildir. Karşılaştırmalı üstünlük iddiası yazılmaz.
Üç Ortam, Üç Ölçüt
Sorulan analiz üç ortamda da aynıdır ve dersin çıpasıdır: bölge başına ortalama tüketim, azalan sırada ilk üç bölge. Değişen şey cevap değil, cevaba giden yolun envanteridir.
# ortam_secimi.py — MODELDIR. Once K03'un 3.199 satirlik kurgu kumesi ayni tohumla # uretilir, sonra uc ortamin envanteri standart kitaplikla modellenir. import math TOHUM, HAM, M32 = 20260218, 1400, 0xFFFFFFFF BOLGE = [("kuzey", 0.28, 21), ("guney", 0.22, 17), ("dogu", 0.18, 26), ("bati", 0.14, 14), ("merkez", 0.18, 23)] def uretec(t): x = ((t ^ (t >> 16)) * 2246822507) & M32 x = ((x ^ (x >> 13)) * 3266489909) & M32 s = [(x ^ (x >> 16)) & M32] def sonraki(): s[0] = (s[0] * 1664525 + 1013904223) & M32 return s[0] / 4294967296 return sonraki def ayrik(u, w): t = 0.0 for i, x in enumerate(w): t += x if u < t: return i return len(w) - 1 # Hane ve memnuniyet cekilir ama bu derste kullanilmaz; uretec sirasi korunur. _kalan, _elenen = [], [] for i in range(HAM): r = uretec(TOHUM + i) b = BOLGE[ayrik(r(), [x[1] for x in BOLGE])] ayrik(r(), [0.06, 0.24, 0.30, 0.24, 0.11, 0.05]) ayrik(r(), [0.08, 0.14, 0.27, 0.34, 0.17]) (_elenen if r() < 0.046 else _kalan).append( {"abone_no": 10001 + i, "bolge": b[0], "taban": b[2]}) _gecerli = {k["abone_no"] for k in _kalan} OKUMA = [] for k in _kalan + _elenen: r = uretec(TOHUM + 7000 + k["abone_no"]) for d in range(ayrik(r(), [0.05, 0.12, 0.21, 0.62])): t = 0.0 if r() < 0.038 else math.floor( k["taban"] * math.exp((r() + r() + r() - 1.5) * 0.62) * (1 - d * 0.05) * 100 + 0.5) / 100 if k["abone_no"] not in _gecerli: r() continue OKUMA.append({"bolge": k["bolge"], "tuketim_m3": t}) r() ORTAM = ["genel amacli", "analiz odakli", "bildirimsel"] G, A, B = ORTAM ADIM = ["okuma", "tip", "suzme", "birlestirme", "gruplama", "ornekleme", "metin", "grafik", "yayim"] KALEM = ["surum", "kilit", "zamanlama", "izleme", "hata", "erisim", "gunluk", "geri-alma", "olcek"] # Envanter KURGUDUR ve bu ekibin kendi dokuz adimi icindir; ortamlar hakkinda # genel bir siralama degildir. Ikinci sutun yazabilen, ucuncu okuyabilen ortamlar. EKIP = [("cozumleyici-1", {G, A, B}, {G, A, B}), ("cozumleyici-2", {G, A}, {G, A, B}), ("cozumleyici-3", {G, B}, {G, A, B}), ("cozumleyici-4", {G, B}, {G, B}), ("cozumleyici-5", {G}, {G, B}), ("cozumleyici-6", {G}, {G, B}), ("cozumleyici-7", {G}, {G}), ("cozumleyici-8", {B}, {G, B}), ("cozumleyici-9", set(), {G})] HAZIR = {G: set(ADIM) - {"grafik", "yayim"}, A: set(ADIM), B: set(ADIM[:5])} KARSILANAN = {G: {"surum", "kilit", "gunluk"}, A: {"surum"}, B: set(KALEM)} OLCUT = {"ekip": {o: sum(1 for _, y, _ in EKIP if o in y) for o in ORTAM}, "ekosistem": {o: len(HAZIR[o]) for o in ORTAM}, "uretim": {o: len(KARSILANAN[o]) for o in ORTAM}} def hiza(w): return lambda h: "".join(str(v).ljust(w[0]) if j == 0 else str(v).rjust(w[j]) for j, v in enumerate(h)) def ilk_uc(satirlar): t, n = {}, {} for s in satirlar: t[s["bolge"]] = t.get(s["bolge"], 0.0) + s["tuketim_m3"] n[s["bolge"]] = n.get(s["bolge"], 0) + 1 return sorted(((b, t[b] / n[b]) for b in t), key=lambda p: -p[1])[:3] print(f"kurgu kume (tohum {TOHUM}): {len(OKUMA)} satir, {len(_gecerli)} abone") print("sorulan analiz uc ortamda da ayni: " + ", ".join(f"{b} {v:.3f}" for b, v in ilk_uc(OKUMA))) y = hiza([27, 15, 16, 14]) print("\n" + y(["olcut (9 uzerinden)"] + ORTAM)) for k, d in OLCUT.items(): print(y([k] + [d[o] for o in ORTAM])) print(y(["ham toplam (27 uzerinden)"] + [sum(OLCUT[k][o] for k in OLCUT) for o in ORTAM]))
kurgu kume (tohum 20260218): 3199 satir, 1329 abone sorulan analiz uc ortamda da ayni: dogu 24.674, merkez 22.396, kuzey 20.210 olcut (9 uzerinden) genel amacli analiz odakli bildirimsel ekip 7 2 4 ekosistem 7 9 5 uretim 3 1 9 ham toplam (27 uzerinden) 17 12 18
Tablo tek bir gözlemle başlar: üç ölçütün üçü de başka bir ortamı öne çıkarıyor. Ekipte genel amaçlı ortam 7 kişiyle, ekosistemde analiz odaklı ortam 9 adımla, üretime taşımada bildirimsel ortam 9 kalemle önde durur. Bildirimsel ortamda elle kurulacak dört adım vardır: yeniden örnekleme, metin ayrıştırma, katmanlı grafik ve yayım.
Böyle bir tabloda “hangisi iyi” sorusunun cevabı yoktur, çünkü ölçütler farklı şeyleri sayıyor. Cevabı olan tek soru şudur: bu üç sayı nasıl birleştirilecek. Ham toplam 17, 12 ve 18 verir ve seçim tek bir puanla belirlenir.
Seçim Hangi Ölçütte Değişiyor
Ham toplam üç ölçüte eşit ağırlık verir; bu eşitlik ölçülmüş değil, varsayılmıştır. Ağırlığı ölçüt ölçüt değiştirip seçimin nerede döndüğüne bakmak, varsayımı sınamanın sayılabilir yoludur.
def puan(agirlik): return {o: sum(agirlik[k] * OLCUT[k][o] for k in OLCUT) for o in ORTAM} def secim(p): return max(ORTAM, key=lambda o: p[o]) def yaz(p): return " / ".join(str(p[o]) for o in ORTAM) BIR = {k: 1 for k in OLCUT} TEMEL = puan(BIR) y2 = hiza([18, 15, 15, 15, 15, 15]) print("\n" + y2(["olcut agirligi"] + list(range(5)))) for k in OLCUT: print(y2([k] + [secim(puan({**BIR, k: w})) for w in range(5)])) print(f"\nesit agirlikta secim: {secim(TEMEL)} ({yaz(TEMEL)})") for k in OLCUT: aday = [(abs(w - 1), w) for w in range(13) if w != 1 and secim(puan({**BIR, k: w})) != secim(TEMEL)] w = min(aday)[1] p = puan({**BIR, k: w}) print(f" {k} agirligi 1 -> {w}: secim {secim(p)} ({yaz(p)})") kacinci = [w for w in range(13) if secim(puan({**BIR, "ekosistem": w})) == A] p = puan({**BIR, "ekosistem": kacinci[0]}) print(f" analiz odakli ortam yalniz ekosistem agirligi {kacinci[0]} olunca " f"seciliyor ({yaz(p)})")
olcut agirligi 0 1 2 3 4 ekip bildirimsel bildirimsel genel amacli genel amacli genel amacli ekosistem bildirimsel bildirimsel genel amacli genel amacli analiz odakli uretim genel amacli bildirimsel bildirimsel bildirimsel bildirimsel esit agirlikta secim: bildirimsel (17 / 12 / 18) ekip agirligi 1 -> 2: secim genel amacli (24 / 14 / 22) ekosistem agirligi 1 -> 2: secim genel amacli (24 / 21 / 23) uretim agirligi 1 -> 0: secim genel amacli (14 / 11 / 9) analiz odakli ortam yalniz ekosistem agirligi 4 olunca seciliyor (38 / 39 / 33)
Cevap tabloda duruyor: seçim üç ölçütün üçünde de değişiyor, ama eşikler ayrıdır. Ekip ağırlığı 1’den 2’ye çıktığında seçim genel amaçlı ortama geçer ve puanlar 24 ile 22 olur; ekosistem ağırlığı 2 olduğunda aynı yere geçer; üretime taşıma hiç sayılmazsa yine oraya. Üçünün de seçimi çevirebilmesinin nedeni bir puanlık başlangıç farkıdır.
Üçüncü ortamın davranışı ayrıca yazılmalıdır. Analiz odaklı ortam eşit ağırlıkta 12 puanla en düşük toplamı alır, ekosistem ağırlığı 4 olduğunda 39 puanla seçilen ortam olur. Hiçbir sayı değişmemiştir; değişen tek şey dokuz adımın hazır karşılanmasının kaç kat sayıldığıdır. Ağırlık bir ölçüm değil bir karardır.
Ölçütün Kendi Varsayılanı
Ağırlık tek varsayılan değildir. Sayılar toplanmadan önce karşılaştırılabilir kılınır ve bu da bir kuraldır. Üç kural yan yana konuyor: ham sayıları toplamak, her ölçütte en yükseği 100 sayıp ötekileri oranlamak, en yükseği 100 en düşüğü 0 sayıp aradakini yaymak.
def normal(kural, olcut): toplam = {o: 0.0 for o in ORTAM} for d in olcut.values(): v = [d[o] for o in ORTAM] for o in ORTAM: if kural == "ham sayi": toplam[o] += d[o] elif kural == "en iyiye oranlama": toplam[o] += 100.0 * d[o] / max(v) else: toplam[o] += 100.0 * (d[o] - min(v)) / (max(v) - min(v)) return toplam y3 = hiza([22, 15, 16, 14, 16]) print("\n" + y3(["normallestirme"] + ORTAM + ["secim"])) for kural in ("ham sayi", "en iyiye oranlama", "araliga yayma"): t = normal(kural, OLCUT) print(y3([kural] + [f"{t[o]:.1f}" for o in ORTAM] + [secim(t)])) OKUR = dict(OLCUT, ekip={o: sum(1 for _, _, k in EKIP if o in k) for o in ORTAM}) print("\n" + y3(["ekip olcutu"] + ORTAM + ["acik fark"])) for ad, olcut in (("yazabilen", OLCUT), ("okuyabilen", OKUR)): t = normal("ham sayi", olcut) s = sorted((t[o] for o in ORTAM), reverse=True) print(y3([ad] + [f"{t[o]:.0f}" for o in ORTAM] + [f"{s[0] - s[1]:.0f}"]))
normallestirme genel amacli analiz odakli bildirimsel secim ham sayi 17.0 12.0 18.0 bildirimsel en iyiye oranlama 211.1 139.7 212.7 bildirimsel araliga yayma 175.0 100.0 140.0 genel amacli ekip olcutu genel amacli analiz odakli bildirimsel acik fark yazabilen 17 12 18 1 okuyabilen 19 13 21 2
Üç kural aynı dokuz sayıdan üç ayrı puan üretiyor ve üçüncüsü seçimi çeviriyor. Ham toplamdaki bir puanlık fark, oranlamada 211,1 ile 212,7 arasındaki 1,6 puana karşılık gelir ve seçim aynı kalır. Aralığa yayma kuralı her ölçütte en düşük değeri sıfırlar ve ortadaki değeri aralığın genişliğine göre bastırır: üretim ölçütünde aralık 8 birimdir, bu yüzden 3 puanlık ortanca değer 25 puana iner ve toplamlar 175 ile 140 olur. Hiçbir ham sayı değişmeden sıralama değişmiştir.
İkinci tablo bir kademe içeridekini gösteriyor. Ekip ölçütü yazabilen kişi sayısı diye tanımlandı; okuyabilen kişi sayısı da savunulabilir bir tanımdır. Tanım değişince bu kümede seçim değişmez, ama toplamlar 19 / 13 / 21 olur ve açık fark 1 puandan 2 puana çıkar; aynı seçim iki katı güvenle verilmiş görünür.
Üç ölçütü tek puana indiren işlev bir soyutlamadır; ağırlık, normalleştirme kuralı ve ölçüt tanımı onun varsayılanlarıdır. Varsayılanı yazılmayan bir puan bir ölçüm değil, bir seçimdir.
Özet
- Üç ortam üç ölçütte sayılınca her ölçüt başka bir ortamı öne çıkarır: ekip 7 / 2 / 4, ekosistem 7 / 9 / 5, üretime taşıma 3 / 1 / 9.
- Eşit ağırlıkta ham toplam 17 / 12 / 18 olur ve seçim bir puanlık farkla belirlenir.
- Seçim üç ölçütün üçünde de değişir, eşikleri ayrıdır: ekip 2, ekosistem 2, üretim 0. Üçüncü ortam ancak ekosistem ağırlığı 4 olunca 39 puanla seçilir.
- Üç normalleştirme kuralı 17 / 12 / 18, 211,1 / 139,7 / 212,7 ve 175 / 100 / 140 puan verir; üçüncüsü hiçbir ham sayı değişmeden seçimi çevirir.
- Ekip ölçütü okuyabilen diye tanımlanınca seçim aynı kalır, açık fark 1 puandan 2 puana çıkar.
Kurs Kapanışı
Yirmi iki dersin hesabı tek bir tabloda duruyor ve her sayı kendi dersinden okundu.
| Ders | Elle yapınca | Soyutlamayla | Gizlenen karar |
|---|---|---|---|
| Sayısal 01 çalışma ortamı | 2/17 adım aynı | 11/17 kilit dosyasıyla | 5 karar, 1.116 → 1.264 |
| Sayısal 02 diziler | 22 satır, 188.864 bayt | 2 satır, 30.320 bayt | 2 karar, 31,896 ↔ 26,839 |
| Sayısal 03 vektörleştirme | 10 satır, 1 geçiş | 2 satır, 3 geçiş | 3 karar, 102.034 → 1.240 |
| Sayısal 04 yayılım | 30.320 bayt ek | 0 bayt ek | 2 karar, 1.260 → 1.587.600 |
| Sayısal 05 doğrusal cebir | 823.059.744 işlem | 704 işlem | 2 karar, yüzde 50,09 sapma |
| Çerçeve 01 seri ve çerçeve | 781.710 karşılaştırma | 2.361 geçiş | 2 karar, 3.316,42 m³ fark |
| Çerçeve 02 okuma ve yazma | 7 dönüşüm kuralı | 1 okuma çağrısı | 3 karar, 1.123 hücre eksiğe |
| Çerçeve 03 indeksleme | 2.658 karşılaştırma | 21 geçiş | 3 karar, 95 / 94 / 617 satır |
| Çerçeve 04 filtreleme | 5.034 geçiş, 16.184 bayt | 6.398 geçiş, 3.399 bayt | 2 karar, 1.835 / 2.026 / 1.915 |
| Çerçeve 05 gruplama | 15.995 anahtar araması | 3.199 geçiş | 2 karar, 160 satır düşer |
| Çerçeve 06 birleştirme | 2.616.782 karşılaştırma | 4.017 geçiş | 2 karar, 12.250,65 m³ fazla |
| Çerçeve 07 zaman serisi | 41.587 geçiş | 3.212 geçiş | 3 karar, 4.850,82 ↔ 7.882,58 |
| Çerçeve 08 metin işlemleri | 9 satır, 0 satır çıktı | 3 çağrı, 3.199 satır | 3 karar, 256 satır sessizce |
| Başarım 01 bellek kullanımı | 173.837 bayt | 3.628 bayt, 47,9 kat | 3 karar, 108 satır basamak değişir |
| Başarım 02 parça parça işleme | 1.152.229 bayt tepe | 36.132 bayt, 32 kat | 3 karar, 1.035 → 0 abone |
| Başarım 03 sütunlu motorlar | 19.194 değer | 2.835 değer, 6,8 kat | 3 karar, 2.835 → 4.883 değer |
| Başarım 04 paralel ve dağıtık | 3.199 birim | 8.921 birim, eşik 10.833 | 3 karar, 10.833 → 20.119 eşik |
| Başarım 05 sorguyu veriye götürmek | 3.199 satır taşınır | 5 satır, 1.919 kat | 2 karar, 1.919 → 11 kat |
| Alternatif 01 ifade biçimleri | 6 deyim, 6 ara değişken | 1 deyim, 0 ara değişken | 5 karar, 1,473 m³ açıklık |
| Alternatif 02 fiil zinciri | 7 deyim, 6 ara değişken | 1 deyim, 0 ara değişken | 2 karar, 7,301 → 0,593 m³ |
| Alternatif 03 grafik katmanları | 9 bağımsız değişken | 5 katman, 5 yeniden kullanılan | 2 karar, 921 ↔ 24,674 |
| Alternatif 04 ortam seçimi | 3 ölçüt, 3 önde gelen | 1 puan, 1 seçim | 3 karar, 1 puanlık fark |
İkinci ve üçüncü sütunun yönü sabit değildir: bazen soyutlama işi kısaltır (2.616.782 karşılaştırma 4.017 geçişe iner), bazen kısaltmaz (11.340 çarpma iki yazımda da aynıdır), bazen bedeli artırır (30.320 bayt 90.960 bayta çıkar). Kazancın yönü soyutlamadan değil, ölçülen işten gelir.
Dördüncü sütun kursun kuralıdır: bir soyutlama işi kısalttığı kadar kararı da gizler; varsayılanını bilmediğin bir işlev, senin adına karar veren bir işlevdir. Varsayılanı yazılmayan çağrı ölçülmemiş sayılır. Yirmi iki dersin adıyla yazdığı gizlenen karar sayısı 60’tır. Bu sayı bir kusur değil, kursun çıktısıdır: sayılmayan varsayılan sıfır görünür ve sıfır görünen varsayılan her çağrıda sessizce uygulanır.
Yirmi iki derste araç takımı kuruldu ve her varsayılanı yazıldı. Ama araç hâlâ yalnız ne olduğunu söylüyor: doğu bölgesinin ortalaması 24,674 m³, kuzeyin 20,210 m³. Bu sayıların bir örneklemden mi kütleden mi geldiği sorulmadı; aradaki 4,464 m³’lük farkın gerçek mi gürültü mü olduğu da sorulmadı. Sonraki kurs, İstatistiksel Analiz ve Keşifsel Veri Analizi, bu iki soruyu ele alır.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.