├── Python ile Veri Bilimi ├── Bölüm_4 │ ├── odev_5.py │ ├── odev_2.py │ ├── odev_4.py │ ├── odev_6.py │ ├── odev_7.py │ ├── odev_3.py │ ├── odev_1.py │ └── README.md ├── Bölüm_5 │ ├── odev_1.py │ ├── odev_2.py │ ├── odev_3.py │ ├── odev_8.py │ ├── odev_4.py │ ├── odev_5.py │ ├── odev_6.py │ ├── odev_7.py │ └── README.md ├── Bölüm_3 │ ├── TurkishToEnglish.py │ ├── README.md │ └── odev.py ├── Bölüm_8 │ ├── odev_2.py │ ├── odev_1.py │ ├── odev_3.py │ ├── odev_4.py │ └── README.md ├── Bölüm_16 │ ├── odev_2.py │ ├── sigmoid.py │ ├── odev_3.py │ └── README.md ├── Bölüm_6 │ ├── odev_1.py │ └── README.md ├── Extra │ ├── README.md │ └── Wholesale customers data.csv └── README.md ├── Python ├── README.md ├── Notebook_2.ipynb └── Notebook_1.ipynb ├── Projelerle Yapay Zeka ├── Benzerlik_Algoritmaları │ ├── gorsel1.png │ ├── gorsel2.png │ ├── gorsel_fark.py │ ├── tanimoto_similarity.py │ ├── matrix_similarity.py │ ├── tolerant_similarity.py │ ├── spell_checker.py │ ├── origin_matrix_similarity.py │ ├── levenshtein_distance.py │ ├── vector_similarity.py │ ├── weighted_levenshtein_distance.py │ ├── tf_idf.py │ ├── cosine_similarity.py │ ├── rgb_similarity.py │ ├── cosine_similarity_tf_idf.py │ ├── kosinusBenzerligiFark.md │ ├── RGBCodes.txt │ ├── README.md │ ├── Tanimoto_Benzerligi.ipynb │ ├── RGBCodes_normalized.txt │ └── TF-IDF.ipynb └── README.md ├── Uygulamalarla Veri Bilimi ├── 2. Tavsiye Sistemleri │ └── README.md ├── 1. Veri Bilimi Uygulamalarına Giriş │ ├── README.md │ └── calisma_sorulari_1.ipynb └── README.md ├── Veri Bilimi İçin Python ├── sayisal_loto.py ├── pascal_ucgeni.py ├── imdb_veri_cekme.py ├── email_dogrulama.py ├── rastgele_sifre_olusturucu.py ├── opencv_uygulamalari.py ├── xox_oyunu.py ├── ing_tr_sozluk.py ├── sayi_tahmin_oyunu.py ├── adam_asmaca.py ├── twitter_veri_cekme.py ├── datetime_uygulamalar.py ├── README.md └── sozluk.txt ├── README.md └── Algoritma └── README.md /Python ile Veri Bilimi/Bölüm_4/odev_5.py: -------------------------------------------------------------------------------- 1 | def f(x): 2 | if x < 0: 3 | return 0 4 | else: 5 | return x 6 | 7 | 8 | -------------------------------------------------------------------------------- /Python/README.md: -------------------------------------------------------------------------------- 1 | # Python Notları 2 | + `if __name__ == '__main__':` yapısı 3 | + Sınıf nedir ve ne işe yarar? 4 | + `__init__` ve `self`'in görevi 5 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/gorsel1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enesmanan/turkce-kitaplar/HEAD/Projelerle Yapay Zeka/Benzerlik_Algoritmaları/gorsel1.png -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/gorsel2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enesmanan/turkce-kitaplar/HEAD/Projelerle Yapay Zeka/Benzerlik_Algoritmaları/gorsel2.png -------------------------------------------------------------------------------- /Uygulamalarla Veri Bilimi/2. Tavsiye Sistemleri/README.md: -------------------------------------------------------------------------------- 1 | # 2. Tavsiye Sistemleri 2 | 3 | ## Çalışma Soruları Cevapları 4 | 5 | + Sözel sorular 6 | + İşbirlikçi Filtreleme 7 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_5/odev_1.py: -------------------------------------------------------------------------------- 1 | def tekCift(sayi): 2 | if sayi % 2 == 0: 3 | return 'Girilen sayi cifttir.' 4 | else: 5 | return 'Girilen sayi tektir.' 6 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_4/odev_2.py: -------------------------------------------------------------------------------- 1 | matrix = [[j for j in range(5)] for i in range(5)] 2 | 3 | print(*matrix, sep='\n') 4 | # [0, 1, 2, 3, 4] 5 | # [0, 1, 2, 3, 4] 6 | # [0, 1, 2, 3, 4] 7 | # [0, 1, 2, 3, 4] 8 | # [0, 1, 2, 3, 4] 9 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_5/odev_2.py: -------------------------------------------------------------------------------- 1 | def tersten_yaz(liste): 2 | ters_liste = [] 3 | for kelime in liste: 4 | ters_kelime = kelime[::-1] 5 | ters_liste.append(ters_kelime) 6 | return ters_liste 7 | 8 | 9 | -------------------------------------------------------------------------------- /Uygulamalarla Veri Bilimi/1. Veri Bilimi Uygulamalarına Giriş/README.md: -------------------------------------------------------------------------------- 1 | # 1. Veri Bilimi Uygulamalarına Giriş 2 | 3 | ## Çalışma Soruları Cevapları 4 | 5 | + Sözel sorular 6 | + Breast Cancer verisi üzerinden sınıflandırma projesi 7 | 8 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_5/odev_3.py: -------------------------------------------------------------------------------- 1 | def birlestir(kelime1,kelime2): 2 | def buyuk_harf(metin): 3 | metin = metin.upper() 4 | return metin 5 | kelime1 = buyuk_harf(kelime1) 6 | kelime2 = buyuk_harf(kelime2) 7 | return kelime1+kelime2 8 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_5/odev_8.py: -------------------------------------------------------------------------------- 1 | import random 2 | liste = [] 3 | for i in range(0,10): 4 | rastgele_sayi = random.randint(-100,100) 5 | liste.append(rastgele_sayi) 6 | 7 | def sirala(liste): 8 | liste.sort() 9 | return liste 10 | 11 | print(sirala(liste)) -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_5/odev_4.py: -------------------------------------------------------------------------------- 1 | # 100'e kadar olan cift sayilar uretec nesnesi ile olusturuldu 2 | cift_sayilar = (i for i in range(101) if i % 2 == 0) 3 | 4 | # ilk 3 elemanini ekrana bastirmak 5 | print(next(cift_sayilar)) 6 | print(next(cift_sayilar)) 7 | print(next(cift_sayilar)) 8 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_4/odev_4.py: -------------------------------------------------------------------------------- 1 | dersler = ['Matematik', 'Fizik', 'Kimya'] 2 | ogretmenler = ['Cahit Arf', 'Mete Atatüre', 'Aziz Sancar'] 3 | 4 | ders_ogretmen = zip(dersler, ogretmenler) 5 | 6 | for sira, cift in enumerate(ders_ogretmen): 7 | print(f'Ders No {sira}: Ders: {cift[0]}, Ogretmen: {cift[1]}') -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_5/odev_5.py: -------------------------------------------------------------------------------- 1 | def carpim(): 2 | soru = int(input('Kac sayi carpacaksiniz?')) 3 | sayilar = [] 4 | for i in range(1, soru+1): 5 | sayi = int(input('{}. sayiyi giriniz: '.format(i))) 6 | sayilar.append(sayi) 7 | carp = 1 8 | for j in sayilar: 9 | carp *= j 10 | 11 | return carp -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_4/odev_6.py: -------------------------------------------------------------------------------- 1 | calisma_saati = int(input('Haftalik calisma saatini giriniz: ')) 2 | saat_ucreti = int(input('Saat ucretini giriniz: ')) 3 | 4 | ucret = calisma_saati * saat_ucreti 5 | 6 | if calisma_saati > 40: 7 | katma_deger = (calisma_saati - 40) * (saat_ucreti * 1.5) 8 | ucret = (40 * saat_ucreti) + katma_deger 9 | 10 | print(ucret) -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_5/odev_6.py: -------------------------------------------------------------------------------- 1 | def fibonacci(n): 2 | if (n <= 0): 3 | print('Lutfen 0\'dan buyuk bir tamsayi giriniz.') 4 | 5 | elif (n == 2 or n == 1): 6 | return 1 7 | else: 8 | return fibonacci(n-1) + fibonacci(n-2) 9 | 10 | n = int(input("Sira sayisini (n) giriniz:")) 11 | sonuc = fibonacci(n) 12 | print("Sira sayisi: ", sonuc) -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_4/odev_7.py: -------------------------------------------------------------------------------- 1 | metin = input('Metni giriniz: ') 2 | 3 | buyukHarfSayisi = 0 4 | 5 | for harf in metin: 6 | if harf.isupper(): 7 | buyukHarfSayisi += 1 8 | 9 | 10 | buyukHarfSayisi2 = sum(1 for harf in metin if harf.isupper()) 11 | 12 | 13 | print('Metindeki buyuk harf sayisi: ', buyukHarfSayisi) 14 | print('Metindeki buyuk harf sayisi: ', buyukHarfSayisi2) -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_4/odev_3.py: -------------------------------------------------------------------------------- 1 | ulkeler = ['Turkiye', 'Ispanya', 'Cin', 'Italya', 'ABD', 'Ekvador', 'Fas', 'Malta'] 2 | 3 | for i in ulkeler: 4 | if len(i) > 5: 5 | print(i) 6 | 7 | print('---------------------------------------------') 8 | 9 | for j in ulkeler: 10 | if len(j) < 5: 11 | j = j.replace(j,'*') 12 | print(j) 13 | else: 14 | print(j) 15 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_3/TurkishToEnglish.py: -------------------------------------------------------------------------------- 1 | def cevir(metin): 2 | turkce_karakterler = 'çğıöşüÇĞİÖŞÜ' 3 | ingilizce_karakterler = 'cgiosuCGIOSU' 4 | cevrim = '' 5 | for karakter in metin: 6 | if karakter in turkce_karakterler: 7 | index = turkce_karakterler.index(karakter) 8 | cevrim += ingilizce_karakterler[index] 9 | else: 10 | cevrim += karakter 11 | return cevrim 12 | 13 | -------------------------------------------------------------------------------- /Veri Bilimi İçin Python/sayisal_loto.py: -------------------------------------------------------------------------------- 1 | from random import sample 2 | # sample unique degerler uretir 3 | 4 | def loto_sayilarini_uret(min_sayi, max_sayi, adet): 5 | return sample(range(min_sayi, max_sayi + 1), adet) 6 | 7 | def main(): 8 | min_sayi = 1 9 | max_sayi = 49 10 | adet = 6 11 | sayilar = loto_sayilarini_uret(min_sayi, max_sayi, adet) 12 | #sayilar.sort() 13 | print("Lotoyu kazanan sayilar:", sayilar) 14 | 15 | if __name__ == "__main__": 16 | main() -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/gorsel_fark.py: -------------------------------------------------------------------------------- 1 | from PIL import Image ,ImageChops 2 | 3 | def gorselFark(gorsel_1, gorsel_2): 4 | 5 | gorsel_fark = ImageChops.difference(gorsel_1, gorsel_2) 6 | 7 | if gorsel_fark.getbbox(): 8 | gorsel_fark.show() 9 | gorsel_fark.save('fark.png') 10 | 11 | 12 | if __name__ == '__main__': 13 | gorsel_1 = Image.open('gorsel1.png') 14 | gorsel_2 = Image.open('gorsel2.png') 15 | gorselFark(gorsel_1, gorsel_2) -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_8/odev_2.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | # 1'den 1000'e kadar olan sayilardan olusan numpy array 4 | array = np.arange(1, 1001) 5 | 6 | # 18 ile tam bolunen sayilari sec 7 | secim = array[array % 18 == 0] 8 | 9 | print(secim) 10 | #[ 18 36 54 72 90 108 126 144 162 180 198 216 234 252 270 288 306 324 11 | # 342 360 378 396 414 432 450 468 486 504 522 540 558 576 594 612 630 648 12 | # 666 684 702 720 738 756 774 792 810 828 846 864 882 900 918 936 954 972 13 | # 990] -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_8/odev_1.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | # 4x4 boyutunda sifirlardan olusan numpy array 4 | array1 = np.zeros((4, 4)) 5 | 6 | # 4x4 boyutunda False degerlerden olusan numpy array 7 | array2 = np.zeros((4, 4), dtype=bool) 8 | 9 | print(array1) 10 | #[[0. 0. 0. 0.] 11 | # [0. 0. 0. 0.] 12 | # [0. 0. 0. 0.] 13 | # [0. 0. 0. 0.]] 14 | 15 | print(array2) 16 | #[[False False False False] 17 | # [False False False False] 18 | # [False False False False] 19 | # [False False False False]] -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_8/odev_3.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | # dizideki en buyuk 3 elamani buldurma 4 | dizi = np.array([1, 3, 5, 123, 0, 999, 1, 8, 6]) 5 | 6 | sec1 = np.sort(dizi)[-3:] 7 | 8 | # matristeki en buyuk 3 elemani buldurma 9 | matris = np.array([[1, 3, 5], 10 | [123, 0, 999], 11 | [1, 8, 6]]) 12 | 13 | boyut_dusur = matris.flatten() 14 | 15 | sec2 = np.sort(boyut_dusur)[-3:] 16 | 17 | print(sec1) 18 | # [8 123 999] 19 | 20 | print(sec2) 21 | # [8 123 999] -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_4/odev_1.py: -------------------------------------------------------------------------------- 1 | diller = ['Python', 'R', 'Julia', 'C#', 'C++', 'C', 'Java', 'JavaScript','Matlab'] 2 | 3 | # listenin elemanlarini bastiran for dongusu 4 | for i in diller: 5 | print(i) 6 | 7 | print('-------------------------------') 8 | 9 | # iterator ile ilk 3 elamani bastiralim 10 | iterator = iter(diller) 11 | print(next(iterator)) 12 | print(next(iterator)) 13 | print(next(iterator)) 14 | 15 | print('-------------------------------') 16 | 17 | # iterator ile tüm listeyi yazdırmak 18 | iterator2 = iter(diller) 19 | print(*iterator2) -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_16/odev_2.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | girdi = np.array([5,8]) 4 | 5 | agirlik = {'g11': np.array([3,-2]), 6 | 'g12': np.array([4,0.5]), 7 | 'g13': np.array([-1,1]), 8 | 'g2' : np.array([-1,1,2])} 9 | 10 | katman_2 = np.array([(girdi * agirlik['g11']).sum(), 11 | (girdi * agirlik['g12']).sum(), 12 | (girdi * agirlik['g13']).sum()]) 13 | 14 | cikti = (katman_2 * agirlik['g2']).sum() 15 | 16 | print('Girdi: ', girdi, '\nKatman 2: ', katman_2, '\nCikti: ',cikti) 17 | 18 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_5/odev_7.py: -------------------------------------------------------------------------------- 1 | A = dict(zip(('f', 'e', 'h', 'm', 'i'), (1,2,3,4,5))) 2 | print(A) # {'f': 1, 'e': 2, 'h': 3, 'm': 4, 'i': 5} 3 | 4 | B = range(10) 5 | print(B) # range(0, 10) 6 | 7 | C = sorted([A[i] for i in A]) 8 | print(C) # [1, 2, 3, 4, 5] 9 | 10 | D = [i for i in B if i in C] 11 | print(D) # [1, 2, 3, 4, 5] 12 | 13 | E = {i:i*i for i in B} 14 | print(E) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81} 15 | 16 | F = [[i, i*i] for i in B] 17 | print(F) # [[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]] -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_8/odev_4.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | def sirala(dizi): 4 | for i in range(len(dizi)): 5 | min_index = i+ np.argmin(dizi[i:]) 6 | dizi[i], dizi[min_index] = dizi[min_index],dizi[i] 7 | return dizi 8 | 9 | 10 | # argmin metodu kullanmadan 11 | def sirala2(dizi): 12 | for i in range(len(dizi)): 13 | min_index = i 14 | for j in range(i+1, len(dizi)): 15 | if dizi[j] < dizi[min_index]: 16 | min_index = j 17 | dizi[i], dizi[min_index] = dizi[min_index], dizi[i] 18 | return dizi 19 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/README.md: -------------------------------------------------------------------------------- 1 | # :orange_book: Projelerle Yapay Zeka 2 | 3 | ## :open_book: Bölüm İçerikleri 4 | 5 | + ### :point_right: [2. Bölüm: Benzerlik Algoritmaları](https://github.com/enesmanan/turkce-kitaplar/tree/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1) 6 | + Levenshtein, Vektör, Kosinüs ve Matris Benzerliği 7 | + ### :point_right: 3. Bölüm: Bulanık Mantık 8 | + ### :point_right: 4. Bölüm: Öğrenen Makineler 9 | + ### :point_right: 5. Bölüm: Derin Öğrenen Makineler 10 | + ### :point_right: 6. Bölüm: Metin İşleme ve Derin Öğrenme Projeleri 11 | + ### :point_right: 7. Bölüm: Görüntü İşleme ve Projeler 12 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_6/odev_1.py: -------------------------------------------------------------------------------- 1 | class Calisan(): 2 | 3 | toplamCalisanSayisi = 0 4 | 5 | def __init__(self, isim, iseGirisTarihi, unvan, maas): 6 | self.isim = isim 7 | self.iseGirisTarihi = iseGirisTarihi 8 | self.unvan = unvan 9 | self.maas = maas 10 | Calisan.toplamCalisanSayisi += 1 11 | 12 | def calisan_bilgileri(self): 13 | print('Ismi :', self.isim) 14 | print('Ise giris tarihi: ', self.iseGirisTarihi) 15 | print('Unvani:', self.unvan) 16 | print('Maasi:', self.maas) 17 | 18 | def maas_zam(self, zam): 19 | self.maas += zam 20 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/tanimoto_similarity.py: -------------------------------------------------------------------------------- 1 | from PIL import Image 2 | import numpy as np 3 | 4 | def jaccard_similarity(matrix1, matrix2): 5 | intersection = np.logical_and(matrix1, matrix2) 6 | union = np.logical_or(matrix1, matrix2) 7 | return intersection.sum() / union.sum() 8 | 9 | def png_to_matrix(file_path): 10 | img = Image.open(file_path).convert('L') 11 | img_arr = np.array(img) 12 | return img_arr 13 | 14 | file1 = 'gorsel1.png' 15 | file2 = 'gorsel2.png' 16 | 17 | 18 | matrix1 = png_to_matrix(file1) 19 | matrix2 = png_to_matrix(file2) 20 | 21 | similarity = jaccard_similarity(matrix1, matrix2) 22 | 23 | print(f'Benzerlik orani: {similarity}') -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_3/README.md: -------------------------------------------------------------------------------- 1 | ## 3.5 Alıştırmalar 2 | Türkiyedeki belirli illerden oluşan bir listemiz var listeye yapılacak işlemler sırası ile: 3 | 1. `.extend()` metodu ile listeye Edirne ve Aydın şehirlerini eklemek, 4 | 2. İstanbul'un indexini bulmak ve bir değişkene atamak, 5 | 3. Atanan değişkeni kullaranak İstanbu'u listeden çıkarmak, 6 | 4. Listeyi alfabetik sırada yazdırmak. 7 | 8 | Listenin içerisindeki iller Türkçe karakterler ile başladığı için sıralama doğru bir şekilde yapılamıyordu. Bu sorunu çözmek için `cevir()` adında bir fonksiyon yazdım. Bu fonksiyonu `TurkishToEnglish.py` isimli python dosyasından import ederek kullanabilirsiniz. Sorunsuz bir şekilde import olmabilmesi için dosyaların aynı dizinde olması gerekmektedir. 9 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_16/sigmoid.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | # sigmoid aktivasyon fonksiyonu kullanan bir yapay sinir agi ornegi 4 | 5 | girdi_1 = np.array([4,5]) 6 | 7 | agirlik_1 = {'dugum_1': np.array([2,-1]), 8 | 'dugum_2': np.array([1,1])} 9 | 10 | girdi_21 = (girdi_1 * agirlik_1['dugum_1']).sum() 11 | girdi_22 = (girdi_1 * agirlik_1['dugum_2']).sum() 12 | 13 | cikti_21 = 1 / (1 + np.exp(-girdi_21)) 14 | cikti_22 = 1 / (1 + np.exp(-girdi_22)) 15 | 16 | cikti_2 = np.array([cikti_21, cikti_22]) 17 | 18 | agirlik_2 = np.array([2,1]) 19 | 20 | girdi_3 = (cikti_2 * agirlik_2).sum() 21 | 22 | cikti_3 = 1 / (1 + np.exp(-girdi_3)) 23 | 24 | print('Girdi_21: ',girdi_21,'\nGirdi_22: ', girdi_22,'\nCikti:',cikti_3) -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_16/odev_3.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | girdi = np.array([5,8]) 4 | 5 | agirlik = {'g11': np.array([3,-2]), 6 | 'g12': np.array([4,0.5]), 7 | 'g13': np.array([-1,1]), 8 | 'g2' : np.array([-1,1,2])} 9 | 10 | katman_2_girdi = np.array([(girdi * agirlik['g11']).sum(), 11 | (girdi * agirlik['g12']).sum(), 12 | (girdi * agirlik['g13']).sum()]) 13 | 14 | katman_2_cikti = np.tanh(katman_2_girdi) 15 | 16 | katman_3_girdi = (katman_2_cikti * agirlik['g2']).sum() 17 | 18 | cikti = np.tanh(katman_3_girdi) 19 | 20 | print('Girdi: ', girdi, '\nKatman 2 Girdi: ', katman_2_girdi, 21 | '\nKatman 2 Cikti : ', katman_2_cikti,'\nKatman 3 Girdi: ', 22 | katman_3_girdi, '\nCikti: ',cikti) -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_16/README.md: -------------------------------------------------------------------------------- 1 | ## 8.4 Alıştırmalar 2 | 3 | Ödev1: Ağırlıklar bir yapay sinir ağında girdi ile çıktı arasındaki ilişkiyi belirleyen parametrelerdir. Ağırlık belirlerken amacımız sinir ağının hata fonksiyonunu minimize etmesini sağlamaktır. Mantıksal veya sınamasını modellemek için bir yapay sinir ağı kurarken ağırlıklar önceki tecrübe ve bilgi birikimlerinden veya sezgisellikle belirli bir ölçüde olacak şekilde belirlenebilir. 4 | 5 | Ödev2: Görselde görülen yapay sinir ağı basitçe kodlandı ve sonucu hesaplatıldı. 6 | 7 | ![yapay sinir ag](https://user-images.githubusercontent.com/88631980/224144460-b80d703f-9337-43d5-aab4-cdc23a50ba30.png) 8 | 9 | 10 | Ödev3: Görseldeki yapay sinir ağınının 2. ve 3. katmanlarında `tanh()` aktivasyon fonksiyonunu kullanarak sonucu hesapladık. 11 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Extra/README.md: -------------------------------------------------------------------------------- 1 | ## Örnek Uygulamalar ve Extra Projeler 2 | + ### :point_right: [Olasılık Dağılım Grafikleri](https://github.com/enesmanan/turkce-kitaplar/blob/main/Python%20ile%20Veri%20Bilimi/Extra/olas%C4%B1l%C4%B1k-dagilim-grafikleri.ipynb) 3 | + ### :point_right: [Sayı Tanıma Projesi](https://github.com/enesmanan/turkce-kitaplar/blob/main/Python%20ile%20Veri%20Bilimi/Extra/sayi-tanima.ipynb) 4 | + :page_with_curl: [Veri Seti](https://www.kaggle.com/datasets/dillsunnyb11/digit-recognizer) 5 | + ### :point_right: [Müşteri Segmentasyonu (Kümeleme) Projesi](https://github.com/enesmanan/turkce-kitaplar/blob/main/Python%20ile%20Veri%20Bilimi/Extra/musteri_segmentasyonu.ipynb) 6 | + :page_with_curl: [Veri Seti](https://github.com/enesmanan/turkce-kitaplar/blob/main/Python%20ile%20Veri%20Bilimi/Extra/Wholesale%20customers%20data.csv) 7 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_5/README.md: -------------------------------------------------------------------------------- 1 | ## 5.7 Alıştırmalar 2 | 3 | Ödev1: Girilen bir tam sayının tek mi çift mi olduğunu söyleyen bir fonksiyon yazıldı. 4 | 5 | Ödev2: Bir listenin içerisindeki kelimeleri tersten yazan fonksiyon yazılıdı. 6 | 7 | Ödev3: Verilen iki kelimeyi buyuk harfli hale getirerek birleştiren fonksiyon yazıldı. 8 | 9 | Ödev4: 0'dan 100'e kadar çift sayıları üreten bir üreteç yazıldı. Oluşan üreteç nesnesinin ilk 3 elemanını `next()` fonksiyonu ile ekrana bastırıldı. 10 | 11 | Ödev5: İstenildiği kadar sayıyı çarpan fonksiyon yazıldı. 12 | 13 | Ödev6: Fibonacci serisindinde sıra numarası girildiğinde değeri döndüren fonksiyon yazıldı. 14 | 15 | Ödev7: Tanımlanmış değişkenlerin çıktıları tahmin edilmeye çalışıldı ve çıktılarına bakıldı. 16 | 17 | Ödev8: Bir listeyi rastgele sayılarla dolduran kod yazıldı. Akabinde listedeki elemanları küçükten büyüğe sıralayan fonksiyon yazıldı. 18 | -------------------------------------------------------------------------------- /Uygulamalarla Veri Bilimi/README.md: -------------------------------------------------------------------------------- 1 | # :orange_book: Uygulamalarla Veri Bilimi 2 | 3 | :bookmark_tabs: Kitabın içindekiler kısmına [buradan](https://drive.google.com/file/d/19Zuw8qAAUewXebrpf2hG1XpMIcCaVBiN/view) erişilebilir. 4 | 5 | ## :open_book: Bölüm İçerikleri 6 | 7 | + ### :point_right: [1. Bölüm: Veri Bilimi Uygulamalarına Giriş](https://github.com/enesmanan/turkce-kitaplar/tree/main/Uygulamalarla%20Veri%20Bilimi/1.%20Veri%20Bilimi%20Uygulamalar%C4%B1na%20Giri%C5%9F) 8 | + Çalışma Soruları, Breast Cancer Projesi 9 | + ### :point_right: [2. Bölüm: Tavsiye Sistemleri](https://github.com/enesmanan/turkce-kitaplar/tree/main/Uygulamalarla%20Veri%20Bilimi/2.%20Tavsiye%20Sistemleri) 10 | + Çalışma Soruları, İşbirlikçi Filtreleme 11 | + ### :point_right: 3. Bölüm: İnsan Kaynakları 12 | + ### :point_right: 4. Bölüm: Müşteri Hizmetleri 13 | + ### :point_right: 5. Bölüm: Sağlık Hizmetleri 14 | + ### :point_right: 6. Bölüm: Enerji Yönetimi 15 | + ### :point_right: 7. Bölüm: Veri Bilimi Üzerine Sorular 16 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_3/odev.py: -------------------------------------------------------------------------------- 1 | sehirler = ['Ankara', 'İzmir', 'İstanbul', 'Samsun', 'Bursa', 'Çorum', 'Tekirdağ'] 2 | 3 | # extend() metodu ile listeye eleman ekleme 4 | sehirler.extend(['Edirne', 'Aydın']) 5 | print(sehirler) 6 | # ['Ankara', 'İzmir', 'İstanbul', 'Samsun', 'Bursa', 'Çorum', 'Tekirdağ', 'Edirne', 'Aydın'] 7 | 8 | # Istanbul sehrinin indexini bulma 9 | istanbul_index = sehirler.index('İstanbul') 10 | print(istanbul_index) 11 | # 2 12 | 13 | # indexini atadigimiz degisken ile listeden cikarma 14 | sehirler.pop(istanbul_index) 15 | print(sehirler) 16 | # ['Ankara', 'İzmir', 'Samsun', 'Bursa', 'Çorum', 'Tekirdağ', 'Edirne', 'Aydın'] 17 | 18 | # cevir fonksiyonunun import edilisi 19 | from TurkishToEnglish import cevir 20 | # listeyi alfabetik sırada yazdırma 21 | for i in range(len(sehirler)): 22 | sehirler[i] = cevir(sehirler[i]) 23 | sehirler.sort() 24 | print(sehirler) 25 | # ['Ankara', 'Aydin', 'Bursa', 'Corum', 'Edirne', 'Izmir', 'Samsun', 'Tekirdag'] 26 | 27 | 28 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_6/README.md: -------------------------------------------------------------------------------- 1 | ## 6.3 Alıştırmalar 2 | 3 | ### Kod Açıklaması 4 | 5 | Calisan adında bir sınıf tanımladık. Bu sınıfa, çalışanın ismi, işe giriş tarihi, unvanı ve maaşı özellikleri atadık. Çalışanların sayısını tutması için toplamCalisanSayisi adında bir sınıf değişkeni tanımladık. Çalışan bilgilerini ekrana bastırmak için calisan_bilgileri metodu ve çalışanın maaşına zam yapmak için zam_yap adlı iki metod tanımladık. 6 | 7 | Sınıfın özellikleri __init__ metodunda tanımlanır ve her özellik için bir değişken oluşturulur. Bir Calisan örneği oluşturulduğunda, özelliklerine __init__ metodunda verilen değerler atanır. 8 | 9 | Örnek olarak: 10 | 11 | `calisan1 = Calisan('Enes', '10/06/2023', 'Veri Bilimci', 25000)` 12 | 13 | calisan1'in özelliklerine `.` operatörü ile erişilebilir ve bu özelliklerin değerleri okunabilir veya değiştirilebilir. 14 | 15 | calisan1'in bilgilerini ekrana bastırmak için: 16 | `calisan1.calisan_bilgileri()` calisan_bilgileri() metodu kullanılabilir. 17 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/matrix_similarity.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | 4 | def matris_benzerligi(gorsel_1, gorsel_2): 5 | yukseklik = gorsel_1.shape[0] 6 | genislik = gorsel_1.shape[1] 7 | 8 | fark = cv2.absdiff(gorsel_1,gorsel_2) 9 | 10 | farklilik_oran = np.mean(fark) * 100 / 255 11 | print('Iki gorsel arasindaki farklilik orani :' + str(farklilik_oran)) 12 | 13 | benzerlik_oran = 100 - farklilik_oran 14 | print('Iki gorsel arasindaki benzerlik orani :' + str(benzerlik_oran)) 15 | 16 | farkMatris = np.zeros(shape=(yukseklik, genislik, 3), dtype=np.uint8) 17 | mask = fark <= 0 18 | farkMatris[mask] = 255 19 | farkMatris[~mask] = gorsel_2[~mask] 20 | 21 | cv2.imwrite('farkMatris.png',farkMatris) 22 | print('Iki gorsel arasindaki farkliliklar, farkMatris.png dosyasi olarak kayit edildi') 23 | 24 | if __name__ == '__main__': 25 | gorsel_1 = cv2.imread('gorsel1.png') 26 | gorsel_2 = cv2.imread('gorsel2.png') 27 | matris_benzerligi(gorsel_1, gorsel_2) 28 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/tolerant_similarity.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import warnings 3 | 4 | warnings.filterwarnings('ignore') 5 | 6 | def pixel_difference(pixel1, pixel2, tolerance): 7 | return all(abs(p1 - p2) <= tolerance for p1, p2 in zip(pixel1, pixel2)) 8 | 9 | def image_similarity(image1, image2, tolerance): 10 | if image1.shape != image2.shape: 11 | raise ValueError('Goruntuler ayni boyutta olmalidir.') 12 | 13 | height, width = image1.shape[:2] 14 | total_pixels = height * width 15 | matched_pixels = 0 16 | 17 | for i in range(height): 18 | for j in range(width): 19 | if pixel_difference(image1[i, j], image2[i, j], tolerance): 20 | matched_pixels += 1 21 | 22 | similarity_ratio = matched_pixels * 100 / total_pixels 23 | return similarity_ratio 24 | 25 | if __name__ == '__main__': 26 | gorsel_1 = cv2.imread('gorsel1.png') 27 | gorsel_2 = cv2.imread('gorsel2.png') 28 | 29 | tolerance_value = 20 #max=255 30 | 31 | similarity = image_similarity(gorsel_1, gorsel_2, tolerance_value) 32 | print(f'Iki gorsel arasindaki benzerlik orani: {similarity:.2f}%') 33 | -------------------------------------------------------------------------------- /Veri Bilimi İçin Python/pascal_ucgeni.py: -------------------------------------------------------------------------------- 1 | def pascalin_ucgeni(satir_sayisi): 2 | liste = [] 3 | for i in range(satir_sayisi): 4 | liste.append([1]) # Her satirin basina 1 ekle 5 | 6 | for j in range(1, i): 7 | # Her elemanin degeri ust satirdaki iki elemanin toplamina esittir 8 | eleman = liste[i-1][j-1] + liste[i-1][j] 9 | liste[i].append(eleman) 10 | 11 | # Her satirin sonuna 1 ekle 12 | if satir_sayisi != 0: 13 | liste[i].append(1) 14 | 15 | for i in range(satir_sayisi): 16 | # Satir basi bosluklari 17 | print(' '*(satir_sayisi-i), end=' ', sep=' ') 18 | # Her elemani 6 karakter genisliginde yazdir 19 | for j in range(0, i+1): 20 | print('{0:6}'.format(liste[i][j]), end=' ', sep=' ') 21 | print() # Daha bosluklu bir cikti icin print('\n') 22 | 23 | if satir_sayisi < 1: 24 | print('Satir sayisi en az 1 olmalidir.') 25 | return None 26 | 27 | if __name__ == '__main__': 28 | try: 29 | satir_sayisi = int(input('Satir sayisini giriniz: ')) 30 | pascalin_ucgeni(satir_sayisi) 31 | except ValueError as e: 32 | print('Satir sayisi sadece 0\'dan buyuk tamsayilardan olusabilir. ', e) 33 | 34 | 35 | -------------------------------------------------------------------------------- /Veri Bilimi İçin Python/imdb_veri_cekme.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import requests 3 | from bs4 import BeautifulSoup 4 | 5 | # Top 250 filmi cek 6 | def scrape_top_250_movies(): 7 | url = 'https://www.imdb.com/chart/top/' 8 | response = requests.get(url) 9 | html = response.content 10 | soup = BeautifulSoup(html, 'html.parser') # parse islemi 11 | 12 | movies = [] 13 | for idx, tr in enumerate(soup.select('.lister-list tr')): 14 | title = tr.find('td', {'class': 'titleColumn'}).find('a').text 15 | year = tr.find('td', {'class': 'titleColumn'}).find('span').text.strip('()') 16 | rating = tr.find('td', {'class': 'ratingColumn imdbRating'}).find('strong').text 17 | 18 | movie = {'Index': idx + 1, 'Title': title, 'Year': year, 'Rating': rating} 19 | movies.append(movie) 20 | 21 | return movies 22 | 23 | # CSV dosyasina yaz 24 | def write_to_csv(movies): 25 | with open('top_250_movies.csv', 'w', newline='', encoding='utf-8') as csvfile: 26 | fieldnames = ['Index', 'Title', 'Year', 'Rating'] 27 | writer = csv.DictWriter(csvfile, fieldnames=fieldnames) 28 | writer.writeheader() 29 | for movie in movies: 30 | writer.writerow(movie) 31 | 32 | 33 | if __name__ == '__main__': 34 | movies = scrape_top_250_movies() 35 | write_to_csv(movies) 36 | print('Veriler cekildi!') -------------------------------------------------------------------------------- /Veri Bilimi İçin Python/email_dogrulama.py: -------------------------------------------------------------------------------- 1 | import re 2 | 3 | # girilen e-postayi duzenler 4 | def normalize_email(email): 5 | # e-mail için buyuk kucuk harf farketmez 6 | email = email.lower().strip() 7 | 8 | # '@' simgesinin oncesindeki ozel karakterler kaldirilir 9 | # '.' karakteri kaldirilmaz 10 | username, domain = email.split('@') 11 | username = re.sub(r'[^\w.]', '', username) 12 | 13 | # e-posta adresini yeniden olustur 14 | normalized_email = username + '@' + domain 15 | return normalized_email 16 | 17 | 18 | def validate_email(email): 19 | 20 | pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' 21 | 22 | if bool(re.match(pattern, email)): 23 | return True 24 | else: 25 | if '@' not in email: 26 | print('Gecersiz e-posta adresi. Lutfen \'@\' simgesi iceren bir e-posta adresi giriniz.') 27 | else: 28 | return None 29 | 30 | def main(): 31 | 32 | while True: 33 | email = input('Lutfen e-posta adresinizi giriniz: ') 34 | if validate_email(email): 35 | print('Gecerli e-posta adresi') 36 | break 37 | if not validate_email(email): 38 | tahmin = normalize_email(email) 39 | print('Lutfen tekrar deneyiniz.', f'\nE-posta adresiniz {tahmin} olabilir mi?') 40 | 41 | 42 | if __name__ == '__main__': 43 | main() -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_4/README.md: -------------------------------------------------------------------------------- 1 | ## 4.6 Alıştırmalar 2 | 3 | Ödev1: Programlama dillerini içeren bir listeyi önce for döngüsü ile elemanları ekrana bastırdık. Ardından bir iterator (yineleyici) oluşturduk ve iterator ile elemanlarını ekrana bastırdık. 4 | 5 | Ödev2: İç içe liste döngü yapısı ile $5x5$'lik bir matris oluşturuldu. 6 | 7 | Ödev3: Ulkeler listesindeki elemanların harf sayısı 5'ten büyük olanlarını yazdıran bir for döngüsü kuruldu, ikinci olarak kurulan for döngüsü ise harf sayısı 5'ten büyük olanları ekrana bastırırken, 5'ten az harf sayısına sahip olanları ise '*' karakteri ile değiştirip ekrana bastırıyor. 8 | 9 | Ödev4: Dersler ve öğretmenler listeleerindeki elemanları zip fonksiyonu ile bir tuple nesnesine dönüştürdük. Akabinde ders ve öğretmen çiftini ekrana bastıran bir for döngüsü oluşturduk. 10 | 11 | Ödev5: fonksiyon bu fonksiyonun döngü kullanmadan Python'da kodladık. 12 | 13 | Ödev6: Çalışma saati ve saat ücretini alarak kişinin ücretini hesaplayan bir program kodlandı. Eğer ki kişi 40 saatten fazla çalışmışsa, çalıştığı fazladan saat başına normal ücretin bir buçuk katını almasını sağlayacak bir koşul yazıldı. 14 | 15 | Ödev7: Bir metindeki büyük harf sayısını bulan programı for döngüsü ile yazdık daha sonrasında aynı işi tek satırda yapan kodu yazdık. 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Türkçe Kitaplar :books: 2 | 3 | :green_book: Ödevler :ledger: Notlar :blue_book: Projeler :orange_book: Ödevler+Projeler 4 | 5 | Bu repo veri bilimi, makine öğrenmesi, programlama, kriptografi vb. alanlarda ilgili Türkçe kaynaklardaki ödev çözümlerini, üretilmiş projeleri ve notları içerir. 6 | 7 | 8 | |:sparkles: Veri Bilimi | :sparkles: Derin Öğrenme | :sparkles: Python | :sparkles: Programlama | :sparkles: Kriptografi | 9 | |---|---|---|---|---| 10 | |:orange_book: [Python ile Veri Bilimi](https://github.com/enesmanan/turkce-kitaplar/tree/main/Python%20ile%20Veri%20Bilimi) | TensorFlow ile Derin Öğrenme | :ledger: [Python](https://github.com/enesmanan/turkce-kitaplar/tree/main/Python) | :blue_book: [Algoritma](https://github.com/enesmanan/turkce-kitaplar/blob/main/Algoritma/README.md) | Kriptografiye Giriş | 11 | |:orange_book: [Uygulamalarla Veri Bilimi](https://github.com/enesmanan/turkce-kitaplar/tree/main/Uygulamalarla%20Veri%20Bilimi) | Yapay Zeka Uygulamaları | :blue_book: [Veri Bilimi İçin Python](https://github.com/enesmanan/turkce-kitaplar/tree/main/Veri%20Bilimi%20%C4%B0%C3%A7in%20Python) | Algoritmalara Giriş | | 12 | |:orange_book: [Projelerle Yapay Zeka](https://github.com/enesmanan/turkce-kitaplar/tree/main/Projelerle%20Yapay%20Zeka) | OpenCV ve Python ile Görüntü İşleme | | | | 13 | 14 | 15 | ### Oluşturan:sparkles: 16 | 17 | [Enes Fehmi Manan](https://github.com/enesmanan) 18 | 19 | [enesmanan768@gmail.com](mailto:enesmanan768@gmail.com) 20 | 21 | [LinkedIn](https://linkedin.com/in/enesfehmimanan/) 22 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Bölüm_8/README.md: -------------------------------------------------------------------------------- 1 | ## 8.4 Alıştırmalar 2 | ### Kod Açıklamaları 3 | Ödev1: Numpy kütüphanesinin zeros metodu ile sıfırlardan ve False değerlerden oluşan 4x4 boyutunda bir numpy array oluşturduk. 4 | 5 | Ödev2: 1'den 1000'e kadar olan sayilardan olusan numpy array olusturduk, bu arraydaki sayıların 18 ile tam bolunenlerini secerek ekrana bastırdık. 6 | 7 | Ödev3: NumPy dizisi içerisinden en büyük 3 sayıyı seçmek için önce `np.sort()` metodu ile diziyi sıralıyoruz, akabinde sıralanmış diziden `[-3:]` ifadesi ile son 3 elemanını seçiyoruz. 8 | 9 | Matriste seçim yapmak için extra bir işlem olarak `flatten()` metodu ile matrisin boyutunu indirgiyoruz akabinde dizi ile aynı işlemler söz konusu. 10 | 11 | Ödev4: Bir dizi içerisindeki sayıları sıralayan fonksiyonu yazdık. Fonksiyonun çalışma prensibi, her iterasyonda en küçük elemanı seçerek o anki konumuna yerleştirmek ve daha sonra işlemi, kalan elemanlar üzerinde tekrarlamaktır. 12 | 13 | Detaylı bakarsak: 14 | 15 | 1. `for` döngüsü ile dizinin eleman uzunluğunca, diziyi eleman eleman gezeriz. 16 | 2. Dizinin belirlenen aralığındaki en küçük sayının indexini `argmin()` metodu ile buluyoruz. En küçük değerin indexini bulmak içinde `np.argmin()` metodunun sonucu, `i` değişkenine eklenir. Bu işlem her iterasyonda kalan bölüm içindeki en küçük sayının index'ini bulmak için tekrarlanır. 17 | 3. Python'daki çoklu atama özelliği ile geçici bir değişken kullanmadan döngü içindeki en küçük sayının bulunduğu index ile döngü değişkeninin değerinin yer değiştirilmesi sağlanıyor. 18 | 4. `return` anahtar kelimesi ile sıralanmış dizi döndürülüyor ve fonksiyon son buluyor. 19 | -------------------------------------------------------------------------------- /Veri Bilimi İçin Python/rastgele_sifre_olusturucu.py: -------------------------------------------------------------------------------- 1 | import string 2 | import random 3 | 4 | # ozel karakterlerin de eklenmis hali ile 5 | # maksimum 94 haneli bir sifre uretebilir 6 | 7 | def sifre_olustur(uzunluk, ozel_karakterler=True): 8 | kucuk_harfler = string.ascii_lowercase 9 | buyuk_harfler = string.ascii_uppercase 10 | rakamlar = string.digits 11 | 12 | if ozel_karakterler: # printable ile hepsi eklenebilir 13 | ozel_karakterler = string.punctuation 14 | else: 15 | ozel_karakterler = '' 16 | 17 | karakter_listesi = [] 18 | karakter_listesi.extend(list(kucuk_harfler)) 19 | karakter_listesi.extend(list(buyuk_harfler)) 20 | karakter_listesi.extend(list(rakamlar)) 21 | karakter_listesi.extend(list(ozel_karakterler)) 22 | random.shuffle(karakter_listesi) 23 | 24 | password = ''.join(random.sample(karakter_listesi, uzunluk)) 25 | return password 26 | 27 | if __name__ == '__main__': 28 | while True: 29 | try: 30 | password_uzunlugu = int(input('Sifre uzunlugu giriniz: ')) 31 | if password_uzunlugu <= 0: 32 | raise ValueError 33 | break 34 | except ValueError: 35 | print('Lutfen pozitif bir tamsayi giriniz.') 36 | 37 | ozel_karakterler = input('Ozel karakterler kullanilsin mi? (E/H): ') 38 | 39 | if ozel_karakterler.lower() == 'e': 40 | ozel_karakterler = True 41 | else: 42 | ozel_karakterler = False 43 | 44 | password = sifre_olustur(password_uzunlugu, ozel_karakterler) 45 | print('Uretilen sifre:', password) -------------------------------------------------------------------------------- /Algoritma/README.md: -------------------------------------------------------------------------------- 1 | ## Algoritma ve Programlama Mantığı 2 | 3 | #### Repo link: https://github.com/enesmanan/Python_Practices 4 | + **[Genel Uygulamalar](https://github.com/enesmanan/Python_Practices/blob/main/Genel%20Uygulamalar%20I.ipynb)** 5 | + **[Dizi Uygulamaları](https://github.com/enesmanan/Python_Practices/blob/main/Dizi%20Uygulamalar%C4%B1%20II.ipynb)** 6 | + **[Özel Uygulamalar](https://github.com/enesmanan/Python_Practices/blob/main/Ozel%20Uygulamalar%20III.ipynb)** 7 | ---------- 8 | 9 | 10 | ### Açıklama 11 | Algoritma ve Programalama Mantığı kitabı, yazılım alanı için ilk aldığım ve bende yeri ayrı bir kitaptır. Bu kitabı 2020 yılında üniversiteye geçtikten sonra yazılıma nasıl giriş yapabilirim derken tüm yollar bir şekilde algoritmaya çıktığında almıştım. İyi ki de almışım, gerçekten çok açıklayıcı bir dilde ve bolca örnekle bezenmiş çok sevdiğim bir kitap. 12 | 13 | 2022'de Python öğrenirken kitabı tekrar baştan sonra bir kez daha okudum. Kitaptaki örnekler Java ve C++ üzerinden verildiğinden dolayı bunları kendimce Python dilinin yapısına uyarlayarak ama kitaptaki mantıktan da uzaklaşmayaraktan tekrar yazdım. O dönem yaptığım bu iş algoritma mantığımı ve problem çözme yeteneklerimi çokça geliştirmişti. Tabii ki o dönemler ChatGPT gibi modeller yoktu, ben de tamamen kendim yapmaya çalışmıştım. Dolayısıyla bana çok faydası dokunmuştu. [Buradaki](https://github.com/enesmanan/python_documentation) eğitimi verirken de çokça o dönemki bilgilerden faydalandım. Kitabın yazarı H. Burak Tungut'a teşekkür ederim. 14 | 15 | Not: Bugünden baktığımda bazı kodlardaki hatalar bariz bir şekilde gözüme çarpıyor. Bu konu için bir düzeltme uygulamadım. O dönem yazdığım şekilde duruyorlar. Yani kusursuz bir çalışma değil, zaten yazdığım her kod/yazı 2 hafta sonra gözüme kötü geliyor. 16 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/spell_checker.py: -------------------------------------------------------------------------------- 1 | import re 2 | import tkinter as tk 3 | from tkinter.scrolledtext import ScrolledText 4 | 5 | import nltk 6 | from nltk.corpus import words 7 | 8 | nltk.download('words') 9 | 10 | class SpellingChecker: 11 | 12 | def __init__(self): 13 | self.root = tk.Tk() 14 | self.root.title('Yazim Denetleyici') 15 | self.root.geometry('600x500') 16 | self.root.resizable(False, False) 17 | self.root.config(bg='lightblue') 18 | 19 | self.text = ScrolledText(self.root, font=('Helvetica', 14)) 20 | self.text.bind('', self.check) 21 | self.text.pack(padx=10, pady=10, fill=tk.BOTH, expand=True) 22 | 23 | self.clear_button = tk.Button(self.root, text='Clear', command=self.clear_text) 24 | self.clear_button.pack(padx=10, pady=10, side=tk.BOTTOM) 25 | 26 | self.old_spaces = 0 27 | 28 | self.root.mainloop() 29 | 30 | def check(self, event): 31 | content = self.text.get('1.0', tk.END) 32 | space_count = content.count(' ') 33 | 34 | if space_count != self.old_spaces: 35 | self.old_spaces = space_count 36 | 37 | for tag in self.text.tag_names(): 38 | self.text.tag_delete(tag) 39 | 40 | for word in content.split(' '): 41 | if re.sub(r'[^\w]', '', word.lower()) not in words.words(): 42 | position = content.find(word) 43 | self.text.tag_add(word, f'1.{position}', f'1.{position + len(word)}') 44 | self.text.tag_config(word, foreground='red', underline=True) 45 | 46 | def clear_text(self): 47 | self.text.delete('1.0', tk.END) 48 | 49 | 50 | SpellingChecker() 51 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/origin_matrix_similarity.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import warnings 3 | import numpy as np 4 | from PIL import Image 5 | 6 | warnings.filterwarnings('ignore') 7 | 8 | gorsel_1 = cv2.imread('gorsel1.png') 9 | gorsel_2 = cv2.imread('gorsel2.png') 10 | 11 | yukseklik = gorsel_1.shape[0] 12 | genislik = gorsel_1.shape[1] 13 | 14 | pixel_sayi = yukseklik * genislik 15 | 16 | fark = 0 17 | 18 | def pixelFark(pixel1,pixel2): 19 | pixel_fark = 0 20 | for i in range(3): 21 | pixel_fark = pixel_fark + abs(pixel1[i] - pixel2[i]) / 255 22 | return pixel_fark 23 | 24 | 25 | for i in range(yukseklik): 26 | for j in range(genislik): 27 | fark = fark + pixelFark(gorsel_1[i][j],gorsel_2[i][j]) 28 | 29 | def farkMatris(matris1,matris2): 30 | yukseklik, genislik = matris1.shape[0], matris1.shape[1] 31 | matris = np.zeros(shape=(yukseklik, genislik, 3), dtype=np.uint8) 32 | 33 | for i in range(yukseklik): 34 | for j in range(genislik): 35 | if pixelFark(matris1[i][j],matris2[i][j]) <= 0: 36 | matris[i,j,0] = 255 37 | matris[i,j,1] = 255 38 | matris[i,j,2] = 255 39 | #continue 40 | else: 41 | matris[i,j,0] == matris2[i][j][0] 42 | matris[i,j,1] == matris2[i][j][1] 43 | matris[i,j,2] == matris2[i][j][2] 44 | img = Image.fromarray(matris, 'RGB') 45 | img.save('farkMatris.png') 46 | 47 | 48 | farklilik_oran = 100 * fark / (genislik * yukseklik * 3) 49 | print('Iki gorsel arasindaki farklilik orani :' + str(farklilik_oran)) 50 | benzerlik_oran = 100 - farklilik_oran 51 | print('Iki gorsel arasindaki benzerlik orani :' + str(benzerlik_oran)) 52 | farkMatris(gorsel_1,gorsel_2) 53 | print('Iki gorsel arasindaki farkliliklar, farkMatris.png dosyasi olarak kayit edildi') -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/levenshtein_distance.py: -------------------------------------------------------------------------------- 1 | class Levenshtein: 2 | def __init__(self, kelime1, kelime2): 3 | self.kelime1 = kelime1.lower() 4 | self.kelime2 = kelime2.lower() 5 | self.kelime1_len = len(self.kelime1) 6 | self.kelime2_len = len(self.kelime2) 7 | 8 | def normalizasyon(self, kelime): 9 | fark = max(self.kelime1_len, self.kelime2_len) - len(kelime) 10 | if fark > 0: 11 | kelime += ' ' * fark 12 | return kelime 13 | 14 | def mesafe(self): 15 | self.kelime1 = self.normalizasyon(self.kelime1) 16 | self.kelime2 = self.normalizasyon(self.kelime2) 17 | 18 | # mesafe matrisi 19 | matris = [[0 for j in range(self.kelime1_len + 1)] for i in range(self.kelime2_len + 1)] 20 | 21 | for i in range(self.kelime2_len + 1): 22 | matris[i][0] = i 23 | 24 | for j in range(self.kelime1_len + 1): 25 | matris[0][j] = j 26 | 27 | for i in range(1, self.kelime2_len + 1): 28 | for j in range(1, self.kelime1_len + 1): 29 | if self.kelime1[j-1] == self.kelime2[i-1]: 30 | matris[i][j] = matris[i-1][j-1] 31 | else: 32 | matris[i][j] = min(matris[i-1][j-1] + 1, # yer degistir 33 | matris[i-1][j] + 1, # sil 34 | matris[i][j-1] + 1) # ekle 35 | 36 | return matris[-1][-1] 37 | 38 | def benzerlik(self): 39 | max_len = max(self.kelime1_len, self.kelime2_len) 40 | return (max_len - self.mesafe())/max_len 41 | 42 | def __str__(self): 43 | return f'Levenshtein mesafesi: {self.mesafe()}\nBenzerlik orani: {self.benzerlik()}' 44 | 45 | if __name__ == '__main__': 46 | lev = Levenshtein('Enes', 'Fehmi') 47 | print(lev) 48 | -------------------------------------------------------------------------------- /Veri Bilimi İçin Python/opencv_uygulamalari.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import tkinter as tk 3 | from tkinter import filedialog, messagebox 4 | 5 | def main(): 6 | root = tk.Tk() 7 | root.withdraw() 8 | 9 | image_file = filedialog.askopenfilename() 10 | r1 = cv2.imread(image_file) 11 | 12 | cv2.imshow('r_tusuna_bas', r1) 13 | messagebox.showinfo('Bilgilendirme', 'Resmi dondurmek icin r tusuna, gri yapmak icin g tusuna, blur efekti icin b tusuna basiniz!') 14 | 15 | griMi = False 16 | blurMu = False 17 | 18 | while True: 19 | key = cv2.waitKey(1) 20 | if key == ord('r'): 21 | dondur = cv2.rotate(r1, cv2.ROTATE_90_CLOCKWISE) 22 | cv2.imshow('r_tusuna_bas', dondur) 23 | cv2.waitKey(0) 24 | dondur = cv2.rotate(dondur, cv2.ROTATE_90_CLOCKWISE) 25 | cv2.imshow('r_tusuna_bas', dondur) 26 | cv2.waitKey(0) 27 | dondur = cv2.rotate(dondur, cv2.ROTATE_90_CLOCKWISE) 28 | cv2.imshow('r_tusuna_bas', dondur) 29 | cv2.waitKey(0) 30 | dondur = cv2.rotate(dondur, cv2.ROTATE_90_CLOCKWISE) 31 | cv2.imshow('r_tusuna_bas', dondur) 32 | elif key == ord('g'): 33 | if griMi: 34 | cv2.imshow('r_tusuna_bas', r1) 35 | griMi = False 36 | else: 37 | gri = cv2.cvtColor(r1, cv2.COLOR_BGR2GRAY) 38 | cv2.imshow('r_tusuna_bas', gri) 39 | griMi = True 40 | elif key == ord('b'): 41 | if blurMu: 42 | cv2.imshow('r_tusuna_bas', r1) 43 | blurMu = False 44 | else: 45 | blur = cv2.blur(r1, (15,15)) 46 | cv2.imshow('r_tusuna_bas', blur) 47 | blurMu = True 48 | elif key == 27: 49 | break 50 | 51 | cv2.destroyAllWindows() 52 | 53 | if __name__ == '__main__': 54 | main() 55 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/vector_similarity.py: -------------------------------------------------------------------------------- 1 | class VectorSimilarity: 2 | def __init__(self, min_val=0, max_val=255): 3 | self.min_val = min_val 4 | self.max_val = max_val 5 | 6 | def arrange(self, item): 7 | item_count = len(item) 8 | normalized_item = [] 9 | for i in range(item_count): 10 | if i <= item_count: 11 | normalized_value = item[i] / ((self.max_val - self.min_val) / 100) 12 | normalized_item.append(normalized_value) 13 | else: 14 | normalized_value = 50 / ((self.max_val - self.max_val) / 100) 15 | 16 | return normalized_item 17 | 18 | @staticmethod 19 | def sqrt(value): 20 | return value ** (1/2) 21 | 22 | @staticmethod 23 | def power(value, level=2): 24 | return value ** level 25 | 26 | def calculate_similarity(self, A, B): 27 | if len(A) != len(B): 28 | return -1 29 | 30 | len_ = len(A) 31 | total = 0 32 | 33 | for i in range(len_): 34 | total += self.power(B[i] - A[i]) 35 | 36 | distance = self.sqrt(total) 37 | max_dist = self.sqrt(self.power(100) * len_) 38 | 39 | return 1 - (distance / max_dist) 40 | 41 | 42 | 43 | black = [0, 0, 0] 44 | white = [255, 255, 255] 45 | red = [255, 0, 0] 46 | green = [0, 128, 0] 47 | blue = [0, 0, 255] 48 | yellow = [255, 255, 0] 49 | purple = [128, 0, 128] 50 | 51 | 52 | similarity_calculator = VectorSimilarity() 53 | 54 | black_normalized = similarity_calculator.arrange(black) 55 | white_normalized = similarity_calculator.arrange(white) 56 | red_normalized = similarity_calculator.arrange(red) 57 | green_normalized = similarity_calculator.arrange(green) 58 | blue_normalized = similarity_calculator.arrange(blue) 59 | yellow_normalized = similarity_calculator.arrange(yellow) 60 | purple_normalized = similarity_calculator.arrange(purple) 61 | 62 | 63 | similarity = similarity_calculator.calculate_similarity(red_normalized, purple_normalized) 64 | print(similarity) -------------------------------------------------------------------------------- /Veri Bilimi İçin Python/xox_oyunu.py: -------------------------------------------------------------------------------- 1 | from colorama import Fore, Style 2 | # renk icin gerekli modul 3 | 4 | tahta = {'1': '', '2': '', '3': '', 5 | '4': '', '5': '', '6': '', 6 | '7': '', '8': '', '9': ''} 7 | 8 | def oyun_tahtasi(tahta): 9 | for i in range(1, 10): 10 | # sayilari yerlestir 11 | if tahta[str(i)] == '': 12 | # sayilari soluk yaz 13 | print(Fore.LIGHTBLACK_EX + str(i) + Style.RESET_ALL, end='') 14 | else: 15 | print(tahta[str(i)], end='') 16 | # tabloyu ciz 17 | if i % 3 == 0: 18 | print() 19 | if i < 9: 20 | print('-+-+-') 21 | else: 22 | print('|', end='') 23 | 24 | def kazanma_durumu(tahta, simge): 25 | # yan yana kazanma durumu 26 | if tahta['1'] == tahta['2'] == tahta['3'] == simge: 27 | return True 28 | if tahta['4'] == tahta['5'] == tahta['6'] == simge: 29 | return True 30 | if tahta['7'] == tahta['8'] == tahta['9'] == simge: 31 | return True 32 | 33 | # alt alta kazanma durumu 34 | elif tahta['1'] == tahta['4'] == tahta['7'] == simge: 35 | return True 36 | elif tahta['2'] == tahta['5'] == tahta['8'] == simge: 37 | return True 38 | elif tahta['3'] == tahta['6'] == tahta['9'] == simge: 39 | return True 40 | 41 | #capraz kazanma durumu 42 | elif tahta['1'] == tahta['5'] == tahta['9'] == simge: 43 | return True 44 | elif tahta['3'] == tahta['5'] == tahta['7'] == simge: 45 | return True 46 | 47 | else: 48 | return False #beraberlik durumu 49 | 50 | sembol = 'X' # ilk olarak oyuna X baslasin 51 | oyun_tahtasi(tahta) # tahtayi yazdir 52 | for i in range(9): 53 | print(sembol + ', nereye yerlestirilsin?') 54 | gir = input() # sembol gir 55 | if tahta[gir] == '': # girilen hucre bossa 56 | tahta[gir] = sembol 57 | if sembol == 'X': # sembolu degistir 58 | sembol = 'O' 59 | else: 60 | sembol = 'X' 61 | else: 62 | print('Bu hucre zaten dolu! Lutfen baska bir hucre seciniz.') 63 | continue 64 | oyun_tahtasi(tahta) # sembolu tahtaya yerlestir 65 | # sonuc ciktisi 66 | if kazanma_durumu(tahta, 'X'): 67 | print('X kazandi!') 68 | break 69 | if kazanma_durumu(tahta, 'O'): 70 | print('O kazandi!') 71 | break 72 | # beraberlik durumu 73 | if not kazanma_durumu(tahta, 'O') and not kazanma_durumu(tahta, 'X'): 74 | print('Berabere!') 75 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/README.md: -------------------------------------------------------------------------------- 1 | # :orange_book: Python ile Veri Bilimi 2 | Bu klasör kitabın ilgili bölümlerinde verilen alıştırmaların çözümlerini ve kod açıklamalarını içerir. Her bölümde alıştırma verilmediği için sadece alıştırmaların verildiği bölümlerinin kapsamı hakkında bilgi verilmiştir. 3 | 4 | :bookmark_tabs: Kitabın içindekiler kısmına [buradan](https://drive.google.com/file/d/1eZteuf95RAWspMwW4r0TWT9marQVZlVa/view?usp=sharing) erişilebilir. 5 | 6 | # :sparkles: [Extra](https://github.com/enesmanan/turkce-kitaplar/tree/main/Python%20ile%20Veri%20Bilimi/Extra) 7 | + Kitabın 13. bölümünde anlatılan olasılık dağılımlarını daha da genişletilerek, bu dağılımların görsel çıktılarını içeren bir notebook hazırlandı. 8 | + Kitabın 17. bölümünde anlatılan sayı tanıma uygulamasınının kapsamını daha da genişleterek çeşitli sınıflandırma algoritmaları ile yüksek bir aaccuracy değerine ulaşılmaya çalışıldı. 9 | + Kitabın 17. bölümünde anlatılan kümeleme uygulamasının kapsamını daha da genişleterek k-means dışında DBSCAN ve Gaussian Mixture modelleri de veri üzerinde denendi. 10 | ## :open_book: Alıştırma Verilen Bölümlerin İçerdiği Konular 11 | 12 | + ## :point_right: [3. Bölüm: Veri Yapıları](https://github.com/enesmanan/turkce-kitaplar/tree/main/Python%20ile%20Veri%20Bilimi/B%C3%B6l%C3%BCm_3) 13 | + Liste, Demet, Küme ve Sözlük 14 | 15 | + ## :point_right: [4. Bölüm: Koşullu İfadeler ve Döngüler](https://github.com/enesmanan/turkce-kitaplar/tree/main/Python%20ile%20Veri%20Bilimi/B%C3%B6l%C3%BCm_4) 16 | + Koşullu ifadeleri Döngüler (For, While), Yineleyiciler, Liste Döngüleri, Sözlük Döngüleri 17 | 18 | + ## :point_right: [5. Bölüm: Fonksiyonlar](https://github.com/enesmanan/turkce-kitaplar/tree/main/Python%20ile%20Veri%20Bilimi/B%C3%B6l%C3%BCm_5) 19 | + Fonksiyon Tanımlama, Değişken Argümanlar, Lambda Fonksiyonları, Fonksiyonlarda Kapsama, Medodlar, Üreteç fonksiyonları 20 | 21 | + ## :point_right: [6. Bölüm: Modüller ve Nesne Yönelimli Programlama](https://github.com/enesmanan/turkce-kitaplar/tree/main/Python%20ile%20Veri%20Bilimi/B%C3%B6l%C3%BCm_6) 22 | + Modüller, Nesneler ve Sınıflar 23 | 24 | + ## :point_right: [8. Bölüm: NumPy Paketi](https://github.com/enesmanan/turkce-kitaplar/tree/main/Python%20ile%20Veri%20Bilimi/B%C3%B6l%C3%BCm_8) 25 | + Çok Boyutlu NumPy Dizileri, NumPy Dizileri ile İşlemler, Kullanışlı NumPy Metodları 26 | 27 | + ## :point_right: [16. Bölüm: Yapay Sinir Ağları](https://github.com/enesmanan/turkce-kitaplar/tree/main/Python%20ile%20Veri%20Bilimi/B%C3%B6l%C3%BCm_16) 28 | + İleri Yayılım Algoritması, Geri yayılım Algoritması, Keras Modülü ile Uygulama 29 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/weighted_levenshtein_distance.py: -------------------------------------------------------------------------------- 1 | class Levenshtein: 2 | alfabe = 'abcçdefgğhıijklmnoöprsştuüvyz' 3 | 4 | def __init__(self, kelime1, kelime2): 5 | self.kelime1 = kelime1.lower() 6 | self.kelime2 = kelime2.lower() 7 | self.kelime1_len = len(self.kelime1) 8 | self.kelime2_len = len(self.kelime2) 9 | 10 | def normalizasyon(self, kelime): 11 | fark = max(self.kelime1_len, self.kelime2_len) - len(kelime) 12 | if fark > 0: 13 | kelime += ' ' * fark 14 | return kelime 15 | 16 | def mesafe(self): 17 | self.kelime1 = self.normalizasyon(self.kelime1) 18 | self.kelime2 = self.normalizasyon(self.kelime2) 19 | 20 | # mesafe matrisi 21 | matris = [[0 for j in range(self.kelime1_len + 1)] for i in range(self.kelime2_len + 1)] 22 | 23 | for i in range(self.kelime2_len + 1): 24 | matris[i][0] = i 25 | 26 | for j in range(self.kelime1_len + 1): 27 | matris[0][j] = j 28 | 29 | for i in range(1, self.kelime2_len + 1): 30 | for j in range(1, self.kelime1_len + 1): 31 | if self.kelime1[j-1] == self.kelime2[i-1]: 32 | matris[i][j] = matris[i-1][j-1] 33 | else: 34 | mesafe = 1 # default puan 35 | if self.kelime1[j-1] in self.alfabe and self.kelime2[i-1] in self.alfabe: 36 | index1 = self.alfabe.index(self.kelime1[j-1]) 37 | index2 = self.alfabe.index(self.kelime2[i-1]) 38 | diff = abs(index1 - index2) 39 | if diff == 1: 40 | mesafe = 0.25 41 | elif diff == 2: 42 | mesafe = 0.5 43 | elif diff > 2: 44 | mesafe = 1 45 | matris[i][j] = min(matris[i-1][j-1] + mesafe, # yer degistir 46 | matris[i-1][j] + 1, # sil 47 | matris[i][j-1] + 1) # ekle 48 | 49 | return matris[-1][-1] 50 | 51 | def benzerlik(self): 52 | max_len = max(self.kelime1_len, self.kelime2_len) 53 | return (max_len - self.mesafe()) / max_len 54 | 55 | def __str__(self): 56 | return f'Agirlikli Levenshtein mesafesi: {self.mesafe()}\nBenzerlik orani: {self.benzerlik()}' 57 | 58 | if __name__ == '__main__': 59 | lev = Levenshtein('a', 'c') 60 | print(lev) -------------------------------------------------------------------------------- /Veri Bilimi İçin Python/ing_tr_sozluk.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | sozluk = {} 4 | 5 | # yeni_kelimeler.txt dosyasini olusturmak icin 6 | def bos_dosya_olustur(dosya_adi): 7 | if os.path.exists(dosya_adi): # dosya zaten varsa 8 | return 9 | with open(dosya_adi, 'w') as f: 10 | pass 11 | 12 | def sozluk_arama(kelime): 13 | if kelime in sozluk: 14 | return sozluk[kelime] 15 | else: 16 | return 'Kelime bulunamadi' 17 | 18 | # sozluge kelime ekle 19 | # sozlukte kelime yoksa yeni kelimelere ekle 20 | def sozluk_ekle(ingilizce, turkce): 21 | if ingilizce not in sozluk: 22 | sozluk[ingilizce] = turkce 23 | with open('yeni_kelimeler.txt', 'a', encoding='utf-8') as dosya: 24 | dosya.write(f'\n{ingilizce}:{turkce}') 25 | print(f'{ingilizce.capitalize()} kelimesi basariyla eklendi.') 26 | else: 27 | print('Bu kelime zaten sozlukte var.') 28 | 29 | def main(): 30 | bos_dosya_olustur('yeni_kelimeler.txt') 31 | with open('sozluk.txt', 'r', encoding='utf-8') as dosya: 32 | for line in dosya: 33 | if ':' not in line: 34 | continue 35 | kelime, anlam = line.strip().split(':') 36 | sozluk[kelime.strip()] = anlam.strip() 37 | 38 | while True: 39 | secim = input('Arama yapmak icin 1, kelime eklemek icin 2, cikmak icin q\'ya basiniz: ').lower() 40 | if secim == '1': 41 | aranacak_kelime = input('Aramak istediginiz Ingilizce kelimeyi giriniz: ').lower() 42 | sonuc = sozluk_arama(aranacak_kelime) 43 | if sonuc == 'Kelime bulunamadi': 44 | with open('yeni_kelimeler.txt', 'r', encoding='utf-8') as dosya: 45 | for line in dosya: 46 | if ':' not in line: 47 | continue 48 | kelime, anlam = line.strip().split(':') 49 | if kelime.strip() == aranacak_kelime: 50 | sonuc = anlam.strip() 51 | break 52 | print(f'{aranacak_kelime.capitalize()}: {sonuc.capitalize()}') 53 | elif secim == '2': 54 | ingilizce_kelime = input('Eklemek istediginiz Ingilizce kelimeyi giriniz: ').lower() 55 | turkce_kelime = input('Eklemek istediginiz Turkce kelimeyi giriniz: ').lower() 56 | sozluk_ekle(ingilizce_kelime, turkce_kelime) 57 | elif secim == 'q': 58 | print('Sozluk programindan ciktiniz.') 59 | break 60 | else: 61 | print('Gecersiz secim, lutfen tekrar deneyiniz.') 62 | 63 | if __name__ == '__main__': 64 | main() -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/tf_idf.py: -------------------------------------------------------------------------------- 1 | import re 2 | import math 3 | 4 | stop_words = ['acaba', 'ama', 'ancak', 'artık', 'asla', 'aslında', 'az', 'bana', 'bazen', 'bazı', 'belki', 5 | 'ben','beni', 'bu','benim', 'beri', 'bile', 'bir', 'biri', 'birkaç', 'birçok', 'şey', 'daha', 6 | 'az', 'gene','gibi', 'da', 'de', 'en', 'daha','diğer', 'diğeri' , 'diye', 'dolayı', 'fakat', 7 | 'falan', 'filan', 'gibi', 'hala', 'hatta', 'ise', 'kim', 'kime', 'niye', 'oysa', 'pek', 8 | 'rağmen', 'sanki', 'şayet', 'sen', 'siz', 'tabii', 've', 'veya', 'zira'] 9 | 10 | def kelime_listesi(dokuman): 11 | liste = [] 12 | for kelime in dokuman: 13 | kelimeler = kelime.split(' ') 14 | for kelime in kelimeler: 15 | kelime = re.sub(r'[^\w\s]', '', kelime) 16 | if kelime.lower() not in stop_words: 17 | liste.append(kelime.lower()) 18 | return liste 19 | 20 | def dokuman_boyutu(liste): 21 | return len(liste) 22 | 23 | def frekans(liste): 24 | frekans = {} 25 | for kelime in liste: 26 | if kelime in frekans: 27 | frekans[kelime] += 1 28 | else: 29 | frekans[kelime] = 1 30 | return frekans 31 | 32 | def tf_degeri(frekans, boyut): 33 | tf_values = {} 34 | for anahtar, deger in frekans.items(): 35 | tf = deger / boyut 36 | tf_values[anahtar] = tf 37 | return tf_values 38 | 39 | def idf_degeri(frekans_degerleri, idf_boyut): 40 | idf_values = {} 41 | for anahtar, deger in frekans_degerleri.items(): 42 | idf = math.log(idf_boyut / deger) 43 | idf_values[anahtar] = idf 44 | return idf_values 45 | 46 | def main(dokuman): 47 | degerler = kelime_listesi(dokuman) 48 | boyut = dokuman_boyutu(degerler) 49 | 50 | frekans_degerleri = frekans(degerler) 51 | 52 | print('\nTF degerleri:\n') 53 | tf_values = tf_degeri(frekans_degerleri, boyut) 54 | for kelime, tf in tf_values.items(): 55 | print(f'{kelime}: {tf}') 56 | 57 | print('\n---------------------------\n') 58 | print('IDF degerleri:\n') 59 | idf_boyut = len(dokuman) 60 | idf_values = idf_degeri(frekans_degerleri, idf_boyut) 61 | for kelime, idf in idf_values.items(): 62 | print(f'{kelime}: {idf}') 63 | 64 | print('\n---------------------------\n') 65 | print('TF-IDF degerleri:\n') 66 | for kelime in frekans_degerleri: 67 | tf_idf = tf_values[kelime] * idf_values[kelime] 68 | print(f'{kelime}: {tf_idf}') 69 | 70 | if __name__ == '__main__': 71 | dokuman = ['Platon\'un devletinde kişinin başkasına değil, kendisine köle olma düşüncesi vardır.', 72 | 'Platon\'un devlet eserinde başka birisine köle olmaktansa insanın kendisine köle olma düşüncesi vardır.'] 73 | main(dokuman) 74 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/cosine_similarity.py: -------------------------------------------------------------------------------- 1 | import re 2 | 3 | stop_words = ['acaba', 'ama', 'ancak', 'artık', 'asla', 'aslında', 4 | 'az', 'bana', 'bazen', 'bazı', 'belki', 'ben', 'beni', 5 | 'benim', 'beri', 'bile', 'bir', 'biri', 'birkaç', 'birçok', 6 | 'şey', 'daha', 'az', 'gene', 'gibi', 'da', 'de', 'en', 'daha', 7 | 'diğer', 'diğeri', 'diye', 'dolayı', 'fakat', 'falan', 'filan', 8 | 'gibi', 'hala', 'hatta', 'ise', 'kim', 'kime', 'niye', 'oysa', 'pek', 9 | 'rağmen', 'sanki', 'şayet', 'sen', 'siz', 'tabii', 've', 'veya', 'zira'] 10 | 11 | # kelime stop_words'te var mi 12 | # True/False 13 | def stop_word(kelime): 14 | kelime = kelime.lower() 15 | return kelime in stop_words 16 | 17 | # cumlelerdeki uniqe kelimeleri bul 18 | def kelime_sozluk(cumleler): 19 | sozluk = set() 20 | for cumle in cumleler: 21 | kelimeler = cumle.split(' ') 22 | for kelime in kelimeler: 23 | kelime = re.sub(r'[^\w\s]', '', kelime) 24 | if kelime.lower() not in stop_words: 25 | sozluk.add(kelime.lower()) 26 | return list(sozluk) 27 | 28 | # kelime vektorlerini hesapla 29 | def cumle2Vec(cumle, sozluk): 30 | vector = [0] * len(sozluk) 31 | kelimeler = cumle.split(' ') 32 | for kelime in kelimeler: 33 | kelime = re.sub(r'[^\w\s]', '', kelime) 34 | kelime = kelime.lower() 35 | if kelime in sozluk: 36 | index = sozluk.index(kelime) 37 | vector[index] += 1 38 | return vector 39 | 40 | # noktasal carpim 41 | def dot_product(vector1, vector2): 42 | if len(vector1) != len(vector2): 43 | raise ValueError('Vektorlerin uzunluklari esit olmalidir.') 44 | 45 | toplam = 0 46 | for i in range(len(vector1)): 47 | toplam = toplam + vector1[i] * vector2[i] 48 | return toplam 49 | 50 | # vektor buyuklugu 51 | def vector_magnitude(vector): 52 | toplam = 0 53 | for i in range(len(vector)): 54 | toplam = toplam + (vector[i] * vector[i]) 55 | return toplam ** (1/2) 56 | 57 | # kosinus benzerligini hesapla 58 | def calculate_cosine_similarity(vector1, vector2): 59 | magnitude1 = vector_magnitude(vector1) 60 | magnitude2 = vector_magnitude(vector2) 61 | 62 | if magnitude1 == 0 or magnitude2 == 0: 63 | return 0 64 | 65 | return dot_product(vector1, vector2) / (magnitude1 * magnitude2) 66 | 67 | if __name__ == '__main__': 68 | cumle_1 = 'Sokrates bir Antik Yunan filozofudur' 69 | cumle_2 = 'Sokrates Antik Yunanda doğmuş ve yaşamıştır' 70 | 71 | sozluk = kelime_sozluk([cumle_1, cumle_2]) 72 | 73 | cumle_1_vector = cumle2Vec(cumle_1, sozluk) 74 | cumle_2_vector = cumle2Vec(cumle_2, sozluk) 75 | 76 | benzerlik_orani = calculate_cosine_similarity(cumle_1_vector, cumle_2_vector) 77 | 78 | print(f'Benzerlik orani {benzerlik_orani}') 79 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/rgb_similarity.py: -------------------------------------------------------------------------------- 1 | class VectorSimilarity: 2 | def __init__(self, min_val=0, max_val=255): 3 | self.min_val = min_val 4 | self.max_val = max_val 5 | 6 | def arrange(self, item): 7 | item_count = len(item) 8 | normalized_item = [] 9 | for i in range(item_count): 10 | if i <= item_count: 11 | normalized_value = item[i] / ((self.max_val - self.min_val) / 100) 12 | normalized_item.append(normalized_value) 13 | else: 14 | normalized_value = 50 / ((self.max_val - self.max_val) / 100) 15 | 16 | return normalized_item 17 | 18 | @staticmethod 19 | def sqrt(value): 20 | return value ** (1/2) 21 | 22 | @staticmethod 23 | def power(value, level=2): 24 | return value ** level 25 | 26 | def calculate_similarity(self, A, B): 27 | if len(A) != len(B): 28 | return -1 29 | 30 | len_ = len(A) 31 | total = 0 32 | 33 | for i in range(len_): 34 | total += self.power(B[i] - A[i]) 35 | 36 | distance = self.sqrt(total) 37 | max_dist = self.sqrt(self.power(100) * len_) 38 | 39 | return 1 - (distance / max_dist) 40 | 41 | @staticmethod 42 | def normalized(color): 43 | return VectorSimilarity().arrange(color) 44 | 45 | 46 | # RGBCodes_normalized.txt 47 | def read_normalized_txt(file_name): 48 | normalized_colors = {} 49 | with open(file_name, 'r') as file: 50 | lines = file.readlines() 51 | for line in lines: 52 | line = line.strip() 53 | if line: 54 | color, rgb_values = line.split(':') 55 | rgb_values = [float(val) for val in rgb_values.strip().strip('[]').split(',')] 56 | normalized_colors[color] = rgb_values 57 | return normalized_colors 58 | 59 | 60 | def get_most_similar_colors(input_colors, normalized_colors): 61 | vector_similarity = VectorSimilarity() 62 | similarity_scores = {} 63 | 64 | for color, normalized_values in normalized_colors.items(): 65 | similarity = 0 66 | for input_color in input_colors: 67 | similarity += vector_similarity.calculate_similarity(input_color, normalized_values) 68 | similarity_scores[color] = similarity 69 | 70 | sorted_colors = sorted(similarity_scores.items(), key=lambda x: x[1], reverse=True) 71 | return sorted_colors[:3] 72 | 73 | 74 | normalized_colors = read_normalized_txt('RGBCodes_normalized.txt') 75 | 76 | user_input = [] 77 | r = int(input('Enter the value of R: ')) 78 | g = int(input('Enter the value of G: ')) 79 | b = int(input('Enter the value of B: ')) 80 | user_input.append(VectorSimilarity.normalized([r, g, b])) 81 | 82 | most_similar_colors = get_most_similar_colors(user_input, normalized_colors) 83 | 84 | print('Most similar colors:') 85 | for color, similarity in most_similar_colors: 86 | print(color, similarity) 87 | -------------------------------------------------------------------------------- /Veri Bilimi İçin Python/sayi_tahmin_oyunu.py: -------------------------------------------------------------------------------- 1 | from random import randint 2 | import webbrowser 3 | 4 | def sayi_tahmin_oyunu(): 5 | print('----------------------------------------------') 6 | print(' SAYI TAHMIN OYUNU') 7 | print('----------------------------------------------') 8 | print() 9 | 10 | oyun = True 11 | puan = 0 12 | rapor = [] 13 | 14 | while oyun: 15 | print() 16 | x = int(input('''Level seciniz: 17 | Kolay icin 1 (1-10) 18 | Orta icin 2 (1-50) 19 | Zor icin 3 (1-100) 20 | Cok zor icin 4 (1-1000)'e basiniz: ''')) 21 | 22 | if (x == 1): 23 | i = randint(1,10) 24 | hak = 5 25 | 26 | elif (x == 2): 27 | i = randint(1,50) 28 | hak = 6 29 | 30 | elif (x == 3): 31 | i = randint(1,100) 32 | hak = 7 33 | 34 | elif (x == 4): 35 | i = randint(1,1000) 36 | hak = 8 37 | 38 | else: 39 | print('Lutfen 1 ile 5 arasinda sayi giriniz.') 40 | break 41 | 42 | while True: 43 | 44 | if hak > 0: 45 | try: 46 | tahmin = int(input('Sizce sayi kactir? \n')) 47 | except ValueError: 48 | print('Lutfen bir tam sayi giriniz.') 49 | continue 50 | else: 51 | print('Sayiyi tahmin edemediniz: Sayi : {}'.format(i)) 52 | rapor.append(f'{x}{puan}Kaybettiniz') 53 | break 54 | if tahmin != i: 55 | hak -= 1 56 | if tahmin > i: 57 | print('Sayi asagida, kalan tahmin hakkiniz : {}'.format(hak)) 58 | else: 59 | print('Sayi yukarida, kalan tahmin hakkiniz : {}'.format(hak)) 60 | else: 61 | print('Tebrikler, sayiyi buldunuz.') 62 | puan += hak 63 | rapor.append(f'{x}{puan}Kazandiniz') 64 | break 65 | 66 | devam = input('Oyuna devam etmek istiyor musunuz? (E/H)') 67 | 68 | if devam == 'E' or devam == 'e': 69 | oyun = True 70 | else: 71 | oyun = False 72 | 73 | return rapor 74 | 75 | 76 | def oyun_raporu_html(): 77 | rapor = sayi_tahmin_oyunu() 78 | html = f''' 79 | 80 | 81 | Oyun Raporu 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | {''.join(rapor)} 91 |
LevelPuanDurum
92 | 93 | 94 | ''' 95 | with open('oyun_raporu.html', 'w') as file: 96 | file.write(html) 97 | webbrowser.open_new_tab('oyun_raporu.html') 98 | 99 | 100 | if __name__ == '__main__': 101 | oyun_raporu_html() 102 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/cosine_similarity_tf_idf.py: -------------------------------------------------------------------------------- 1 | import re 2 | import math 3 | import numpy as np 4 | 5 | stop_words = ['acaba', 'ama', 'ancak', 'artık', 'asla', 'aslında', 'az', 'bana', 'bazen', 'bazı', 'belki', 6 | 'ben','beni', 'bu','benim', 'beri', 'bile', 'bir', 'biri', 'birkaç', 'birçok', 'şey', 'daha', 7 | 'az', 'gene','gibi', 'da', 'de', 'en', 'daha','diğer', 'diğeri' , 'diye', 'dolayı', 'fakat', 8 | 'falan', 'filan', 'gibi', 'hala', 'hatta', 'ise', 'kim', 'kime', 'niye', 'oysa', 'pek', 9 | 'rağmen', 'sanki', 'şayet', 'sen', 'siz', 'tabii', 've', 'veya', 'zira'] 10 | 11 | def kelime_listesi(dokuman): 12 | liste = [] 13 | for kelime in dokuman: 14 | kelimeler = kelime.split(' ') 15 | for kelime in kelimeler: 16 | kelime = re.sub(r'[^\w\s]', '', kelime) 17 | if kelime.lower() not in stop_words: 18 | liste.append(kelime.lower()) 19 | return liste 20 | 21 | def dokuman_boyutu(liste): 22 | return len(liste) 23 | 24 | def frekans(liste): 25 | frekans = {} 26 | for kelime in liste: 27 | if kelime in frekans: 28 | frekans[kelime] += 1 29 | else: 30 | frekans[kelime] = 1 31 | return frekans 32 | 33 | def tf_degeri(frekans, boyut): 34 | tf_values = {} 35 | for anahtar, deger in frekans.items(): 36 | tf = deger / boyut 37 | tf_values[anahtar] = tf 38 | return tf_values 39 | 40 | def idf_degeri(frekans_degerleri, idf_boyut): 41 | idf_values = {} 42 | for anahtar, deger in frekans_degerleri.items(): 43 | idf = math.log(idf_boyut / deger) 44 | idf_values[anahtar] = idf 45 | return idf_values 46 | 47 | def cosine_similarity(v1, v2): 48 | dot_product = np.dot(v1, v2) 49 | norm_v1 = np.linalg.norm(v1) 50 | norm_v2 = np.linalg.norm(v2) 51 | return dot_product / (norm_v1 * norm_v2) 52 | 53 | def main(dokuman): 54 | degerler = kelime_listesi(dokuman) 55 | boyut = dokuman_boyutu(degerler) 56 | 57 | frekans_degerleri = frekans(degerler) 58 | 59 | print('\nTF degerleri:\n') 60 | tf_values = tf_degeri(frekans_degerleri, boyut) 61 | for kelime, tf in tf_values.items(): 62 | print(f'{kelime}: {tf}') 63 | 64 | print('\n---------------------------\n') 65 | print('IDF degerleri:\n') 66 | idf_boyut = len(dokuman) 67 | idf_values = idf_degeri(frekans_degerleri, idf_boyut) 68 | for kelime, idf in idf_values.items(): 69 | print(f'{kelime}: {idf}') 70 | 71 | print('\n---------------------------\n') 72 | print('TF-IDF degerleri:\n') 73 | for kelime in frekans_degerleri: 74 | tf_idf = tf_values[kelime] * idf_values[kelime] 75 | print(f'{kelime}: {tf_idf}') 76 | 77 | print('\n---------------------------\n') 78 | tfidf_vectors = np.array([list(tf_values.values()), list(idf_values.values())]) 79 | cosine_sim = cosine_similarity(tfidf_vectors[0], tfidf_vectors[1]) 80 | print(f'Kosinüs Benzerliği: {cosine_sim}') 81 | 82 | if __name__ == '__main__': 83 | dokuman = ['Platon\'un devletinde kişinin başkasına değil, kendisine köle olma düşüncesi vardır.', 84 | 'Platon\'un devlet eserinde başka birisine köle olmaktansa insanın kendisine köle olma düşüncesi vardır.'] 85 | main(dokuman) 86 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/kosinusBenzerligiFark.md: -------------------------------------------------------------------------------- 1 | ### Standart Optimizasyon Koşullarında Gerçeklenmiş Kosinüs Benzerliği ile TF-IDF İşlemi ile Optimize Edilmiş Kosinüs Benzerliği Arasındaki Farklar 2 | 3 | Kelimeleri [TF-IDF](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/TF-IDF.ipynb) ile vektörleştirdiğimizde, algoritma dokumandaki kelimelere belli ağırlık değerleri atar. Dolayısıyla standart optimizasyon koşullarında gerçeklenmiş kosinüs benzerliği algoitmasına göre benzerlik oranında fark olacaktır. 4 | 5 | TF-IDF işlemi, bir kelimenin dokümanlardaki önemini ölçer. Bu sayede, dokümana özgü ve ayırt edici kelimelerin ağırlığı artarken dokümanda sıkça geçen, genel kelimelerin ağırlığı azalır. Bu da, cümleler arasındaki benzerliği daha iyi yansıtır. 6 | 7 | **"Sokrates bir Antik Yunan filozofudur"** ve **"Sokrates Antik Yunanda doğmuştur"** cümlelerini ele alalım. Standart olanda benzerlik oranı 0.5 çıkarken TF-IDF yönteminde (aşağıdaki kodları verilen hazır algoritma kullanılmıştır) 0.33 çıkıyor. Bunun sebebi *Sokrates* ve *Antik* kelimelerinin ortak olmasıdır. TF-IDF bu kelimelerin ağırlıklarını azaltmıştır. Bunun sonucunda daha düşük bir benzerlik oranına ulaşılmıştır. 8 | 9 | Genel olarak iki dokümanı karşılaştırken TF-IDF yöntemi, her dokümandaki kelimelerin benzersizliğini dikkate alarak ortak kelimelerin etkisini azaltmasından dolayı daha uygun olarak kabul edilir. 10 | 11 | **TF-IDF ile kosinüs benzerliğinde her dokümanda unique geçen kelime sayısı arttıkça dokümanlar arasındaki benzerlik oranı da artacaktır.** 12 | 13 | ### Sklearn ile TF-IDF Kosinus Benzerliği 14 | 15 | ```python 16 | from sklearn.metrics.pairwise import cosine_similarity 17 | from sklearn.feature_extraction.text import TfidfVectorizer 18 | 19 | stop_words = ['acaba', 'ama', 'ancak', 'artık', 'asla', 'aslında', 'az', 'bana', 'bazen', 'bazı', 'belki', 20 | 'ben','beni', 'bu','benim', 'beri', 'bile', 'bir', 'biri', 'birkaç', 'birçok', 'şey', 'daha', 21 | 'az', 'gene','gibi', 'da', 'de', 'en', 'daha','diğer', 'diğeri' , 'diye', 'dolayı', 'fakat', 22 | 'falan', 'filan', 'gibi', 'hala', 'hatta', 'ise', 'kim', 'kime', 'niye', 'oysa', 'pek', 23 | 'rağmen', 'sanki', 'şayet', 'sen', 'siz', 'tabii', 've', 'veya', 'zira'] 24 | 25 | def preprocess(text): 26 | text = text.lower() 27 | words = text.split() 28 | words = [word for word in words if word not in stop_words] 29 | return ' '.join(words) 30 | 31 | def cosine_similarity_tfidf(documents): 32 | preprocessed_documents = [preprocess(doc) for doc in documents] 33 | 34 | vectorizer = TfidfVectorizer() 35 | tfidf_matrix = vectorizer.fit_transform(preprocessed_documents) 36 | 37 | cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix) 38 | return cosine_sim 39 | 40 | if __name__ == '__main__': 41 | documents = ['Sokrates bir Antik Yunan filozofudur.', 42 | 'Sokrates Antik Yunanda doğmuştur.'] 43 | 44 | similarity_matrix = cosine_similarity_tfidf(documents) 45 | print(similarity_matrix[0][1]) 46 | ``` 47 | 48 | [Standart Kosinüs Benzerliği](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/cosine_similarity.py) 49 | 50 | [TF-IDF Kosinus Benzerliği](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/cosine_similarity_tf_idf.py) 51 | -------------------------------------------------------------------------------- /Veri Bilimi İçin Python/adam_asmaca.py: -------------------------------------------------------------------------------- 1 | import random 2 | 3 | def rastgele_kelime_tut(): 4 | kelimeler = ['python', 'numpy', 'pandas', 'scikitlearn', 'keras', 'tensorflow', 'matplotlib', 'pytorch', 'seaborn', 'flask', 'pillow', 'deepface'] 5 | return random.choice(kelimeler) 6 | 7 | def asma_basamaklari(denemeler): 8 | adimlar = [ 9 | ''' 10 | +------+ 11 | | | 12 | | O 13 | | \\|/ 14 | | | 15 | | / \\ 16 | _===_ 17 | ''', 18 | ''' 19 | +------+ 20 | | | 21 | | O 22 | | \\|/ 23 | | | 24 | | / 25 | _===_ 26 | ''', 27 | ''' 28 | +------+ 29 | | | 30 | | O 31 | | \\|/ 32 | | | 33 | | 34 | _===_ 35 | ''', 36 | ''' 37 | +------+ 38 | | | 39 | | O 40 | | \\| 41 | | | 42 | | 43 | _===_ 44 | ''', 45 | ''' 46 | +------+ 47 | | | 48 | | O 49 | | | 50 | | | 51 | | 52 | _===_ 53 | ''', 54 | ''' 55 | +------+ 56 | | | 57 | | O 58 | | 59 | | 60 | | 61 | _===_ 62 | ''', 63 | ''' 64 | +------+ 65 | | | 66 | | 67 | | 68 | | 69 | | 70 | _===_ 71 | ''' 72 | ] 73 | return adimlar[denemeler] 74 | 75 | def oyun(): 76 | kelime = rastgele_kelime_tut() 77 | kelime_uzunlugu= len(kelime) 78 | tutulan_kelime = '_' * kelime_uzunlugu 79 | tahmin_harfleri = set() 80 | denemeler = 6 81 | 82 | print('ADAM ASMACA OYUNUNA HOS GELDINIZ!','\nYONERGE:', 83 | 'Programin rastgele bir sekilde tuttugu Python kutuphanesini tahmin etmeye calisin.', 84 | '\nNOT: 7 adet deneme hakkiniz vardir.') 85 | 86 | while (denemeler > 0 or denemeler == 0) and tutulan_kelime != kelime: 87 | print(asma_basamaklari(denemeler)) 88 | print(tutulan_kelime) 89 | print(f'Kullanilan harfler: {", ".join(tahmin_harfleri)}') 90 | 91 | tahmin = input('Bir harf giriniz: ').lower() 92 | 93 | if len(tahmin) == 1 and tahmin.isalpha(): 94 | if tahmin in tahmin_harfleri: 95 | print('Bu harf zaten girildi.') 96 | elif tahmin in kelime: 97 | print('Harfi tutturdunuz!') 98 | tahmin_harfleri.add(tahmin) 99 | tutulan_kelime = ''.join([harfler if harfler in tahmin_harfleri else '_' for harfler in kelime]) 100 | else: 101 | print('Bu harf tutmadi.') 102 | tahmin_harfleri.add(tahmin) 103 | denemeler -= 1 104 | else: 105 | print('Lütfen geçerli bir harf giriniz.') 106 | 107 | if tutulan_kelime == kelime: 108 | print('Tebrikler, kutuphaneyi tutturdunuz!') 109 | else: 110 | print(f'Bulamadiniz, doğru kutuphane {kelime} olacakti.') 111 | 112 | if __name__ == '__main__': 113 | oyun() 114 | -------------------------------------------------------------------------------- /Veri Bilimi İçin Python/twitter_veri_cekme.py: -------------------------------------------------------------------------------- 1 | from pprint import pprint 2 | from pytwitterscraper import TwitterScraper 3 | 4 | tw = TwitterScraper() 5 | 6 | 7 | def tr_trend_konular(code='TR'): 8 | tt = tw.get_trends(code=code) 9 | for i, trend in enumerate(tt.contents[:10], 1): 10 | print(f"{i}. {trend['name']}") 11 | 12 | # imput str-iso 3166 ulke kodlari 13 | def trend_konular(code): 14 | tt = tw.get_trends(code=code) 15 | for i, trend in enumerate(tt.contents[:10], 1): 16 | print(f"{i}. {trend['name']}") 17 | 18 | # input str 19 | def profil(name): 20 | pr = tw.get_profile(name=name) 21 | pprint(pr.__dict__) 22 | 23 | # input int 24 | def profil_id(id_key): 25 | pr = tw.get_profile(id=id_key) 26 | pprint(pr.__dict__) 27 | 28 | # calismiyor 29 | #def tweet_cek(): 30 | # tweets = tw.get_tweets(44196397, count=3) 31 | # pprint(tweets.contents) 32 | 33 | # input int 34 | def tweet_bilgileri(tweet_id): 35 | twinfo = tw.get_tweetinfo(tweet_id) 36 | pprint(twinfo.contents) 37 | 38 | # imput int 39 | def tweet_yorumlari(tweetid): 40 | twcomments = tw.get_tweetcomments(tweetid) 41 | pprint(twcomments.contents) 42 | 43 | # input str 44 | def kullanici_ara(kullanici_adi): 45 | search = tw.searchkeywords(kullanici_adi) 46 | pprint(search.users) 47 | 48 | # input str 49 | def id_bul(name): 50 | data = tw.get_profile(names=[name]) 51 | for data_mem in data: 52 | print(data_mem.id) 53 | 54 | 55 | def main(): 56 | giris = int(input(''' 57 | Merhaba! 58 | Turkiye'deki trend konulari gormek icin 1 59 | Diger ulkelerdeki trend konulari gormek icin 2 60 | Kullanici adi bilinen kisinin profil bilgilerini gormek icin 3 61 | ID bilgisi bilinen kisinin profil bilgilerini gormek icin 4 62 | Bir tweetin bilgilerini gormek icin 5 63 | Bir tweetin yorumlarini gormek icin 6 64 | Kullanici adi ile arama yapmak icin 7 65 | Kullanicinin Twitter ID bilgisine ulaşmak icin 8'e basiniz. 66 | ''')) 67 | 68 | if giris == 1: 69 | tr_trend_konular() 70 | if giris == 2: 71 | code = input('''İstenilen ulkenin ISO 3166 ulke kodunu giriniz: 72 | Bazi yaygin ulke kodlari TR: Turkiye, 73 | US: Amerika Birlesik Devletleri, 74 | GB: Ingiltere, 75 | DE: Almanya, 76 | FR: Fransa, 77 | JP: Japonya, 78 | CN: Cin, 79 | RU: Rusya''') 80 | trend_konular(code) 81 | if giris == 3: 82 | name = input('Twitter kullanici adiniz giriniz: ') 83 | profil(name) 84 | if giris == 4: 85 | id_key = input('Kullanicinin ID bilgisini giriniz: ') 86 | profil_id(id_key) 87 | if giris == 5: 88 | tweet_id = int(input('Tweet\'in ID bilgisini giriniz: ')) 89 | tweet_bilgileri(tweet_id) 90 | if giris == 6: 91 | tweetid = int(input('Tweet\'in ID bilgisini giriniz: ')) 92 | tweet_yorumlari(tweetid) 93 | if giris == 7: 94 | kullanici_adi = input('Aramak istediginiz kullanici adini giriniz: ') 95 | kullanici_ara(kullanici_adi) 96 | if giris == 8: 97 | name = input('ID bilgisine erismek istediginiz kullanici adiniz giriniz: ') 98 | id_bul(name) 99 | 100 | if __name__ == '__main__': 101 | main() -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/RGBCodes.txt: -------------------------------------------------------------------------------- 1 | maroon: [128,0,0] 2 | dark red: [139,0,0] 3 | brown: [165,42,42] 4 | firebrick: [178,34,34] 5 | crimson: [220,20,60] 6 | red: [255,0,0] 7 | tomato: [255,99,71] 8 | coral: [255,127,80] 9 | indian red: [205,92,92] 10 | light coral: [240,128,128] 11 | dark salmon: [233,150,122] 12 | salmon: [250,128,114] 13 | light salmon: [255,160,122] 14 | orange red: [255,69,0] 15 | dark orange: [255,140,0] 16 | orange: [255,165,0] 17 | gold: [255,215,0] 18 | dark golden rod: [184,134,11] 19 | golden rod: [218,165,32] 20 | pale golden rod: [238,232,170] 21 | dark khaki: [189,183,107] 22 | khaki: [240,230,140] 23 | olive: [128,128,0] 24 | yellow: [255,255,0] 25 | yellow green: [154,205,50] 26 | dark olive green: [85,107,47] 27 | olive drab: [107,142,35] 28 | lawn green: [124,252,0] 29 | chartreuse: [127,255,0] 30 | green yellow: [173,255,47] 31 | dark green: [0,100,0] 32 | green: [0,128,0] 33 | forest green: [34,139,34] 34 | lime: [0,255,0] 35 | lime green: [50,205,50] 36 | light green: [144,238,144] 37 | pale green: [152,251,152] 38 | dark sea green: [143,188,143] 39 | medium spring green: [0,250,154] 40 | spring green: [0,255,127] 41 | sea green: [46,139,87] 42 | medium aqua marine: [102,205,170] 43 | medium sea green: [60,179,113] 44 | light sea green: [32,178,170] 45 | dark slate gray: [47,79,79] 46 | teal: [0,128,128] 47 | dark cyan: [0,139,139] 48 | aqua: [0,255,255] 49 | cyan: [0,255,255] 50 | light cyan: [224,255,255] 51 | dark turquoise: [0,206,209] 52 | turquoise: [64,224,208] 53 | medium turquoise: [72,209,204] 54 | pale turquoise: [175,238,238] 55 | aqua marine: [127,255,212] 56 | powder blue: [176,224,230] 57 | cadet blue: [95,158,160] 58 | steel blue: [70,130,180] 59 | corn flower blue: [100,149,237] 60 | deep sky blue: [0,191,255] 61 | dodger blue: [30,144,255] 62 | light blue: [173,216,230] 63 | sky blue: [135,206,235] 64 | light sky blue: [135,206,250] 65 | midnight blue: [25,25,112] 66 | navy: [0,0,128] 67 | dark blue: [0,0,139] 68 | medium blue: [0,0,205] 69 | blue: [0,0,255] 70 | royal blue: [65,105,225] 71 | blue violet: [138,43,226] 72 | indigo: [75,0,130] 73 | dark slate blue: [72,61,139] 74 | slate blue: [106,90,205] 75 | medium slate blue: [123,104,238] 76 | medium purple: [147,112,219] 77 | dark magenta: [139,0,139] 78 | dark violet: [148,0,211] 79 | dark orchid: [153,50,204] 80 | medium orchid: [186,85,211] 81 | purple: [128,0,128] 82 | thistle: [216,191,216] 83 | plum: [221,160,221] 84 | violet: [238,130,238] 85 | magenta: [255,0,255] 86 | orchid: [218,112,214] 87 | medium violet red: [199,21,133] 88 | pale violet red: [219,112,147] 89 | deep pink: [255,20,147] 90 | hot pink: [255,105,180] 91 | light pink: [255,182,193] 92 | pink: [255,192,203] 93 | antique white: [250,235,215] 94 | beige: [245,245,220] 95 | bisque: [255,228,196] 96 | blanched almond: [255,235,205] 97 | wheat: [245,222,179] 98 | corn silk: [255,248,220] 99 | lemon chiffon: [255,250,205] 100 | light golden rod yellow: [250,250,210] 101 | light yellow: [255,255,224] 102 | saddle brown: [139,69,19] 103 | sienna: [160,82,45] 104 | chocolate: [210,105,30] 105 | peru: [205,133,63] 106 | sandy brown: [244,164,96] 107 | burly wood: [222,184,135] 108 | tan: [210,180,140] 109 | rosy brown: [188,143,143] 110 | moccasin: [255,228,181] 111 | navajo white: [255,222,173] 112 | peach puff: [255,218,185] 113 | misty rose: [255,228,225] 114 | lavender blush: [255,240,245] 115 | linen: [250,240,230] 116 | old lace: [253,245,230] 117 | papaya whip: [255,239,213] 118 | sea shell: [255,245,238] 119 | mint cream: [245,255,250] 120 | slate gray: [112,128,144] 121 | light slate gray: [119,136,153] 122 | light steel blue: [176,196,222] 123 | lavender: [230,230,250] 124 | floral white: [255,250,240] 125 | alice blue: [240,248,255] 126 | ghost white: [248,248,255] 127 | honeydew: [240,255,240] 128 | ivory: [255,255,240] 129 | azure: [240,255,255] 130 | snow: [255,250,250] 131 | black: [0,0,0] 132 | dim gray: [105,105,105] 133 | gray: [128,128,128] 134 | dark gray: [169,169,169] 135 | silver: [192,192,192] 136 | light gray: [211,211,211] 137 | gainsboro: [220,220,220] 138 | white smoke: [245,245,245] 139 | white: [255,255,255] -------------------------------------------------------------------------------- /Veri Bilimi İçin Python/datetime_uygulamalar.py: -------------------------------------------------------------------------------- 1 | import pytz 2 | import datetime 3 | import calendar 4 | from dateutil.relativedelta import relativedelta 5 | 6 | # girilen gecmis tarih ile bugun arasindaki farki hesapla 7 | def tarih_farki(): 8 | bugun = datetime.datetime.now() 9 | tarih = ['yili', 'ayi', 'gunu'] 10 | tarih_gir = [] 11 | for i in tarih: 12 | giris = input(f'Lutfen {i} giriniz: ') 13 | tarih_gir.append(giris) 14 | yil, ay, gun = map(int, tarih_gir) 15 | tarih_gir = datetime.datetime(yil, ay, gun) 16 | fark = bugun - tarih_gir 17 | print('Girilen tarih ile bugun arasindaki fark: ', fark.days, ' gun') 18 | 19 | def dogum_gunume_kadar(): 20 | bugun = datetime.datetime.now() 21 | tarih = ['yili', 'ayi', 'gunu'] 22 | tarih_gir = [] 23 | for i in tarih: 24 | giris = input(f'Lutfen {i} giriniz: ') 25 | tarih_gir.append(int(giris)) 26 | yil, ay, gun = tarih_gir 27 | dogum_gunu = datetime.datetime(bugun.year, ay, gun) 28 | if dogum_gunu < bugun: 29 | dogum_gunu = datetime.datetime(bugun.year + 1, ay, gun) 30 | kalan_gun = (dogum_gunu - bugun).days 31 | print('Dogum gunune', kalan_gun, 'gun kaldi.') 32 | 33 | def print_calendar(): 34 | year = int(input('Lutfen yili giriniz: ')) 35 | print(calendar.prcal(year)) 36 | 37 | 38 | # girilen ulkeye gore yerel saati getirir 39 | def dunya_saati(): 40 | ulke = input('Lutfen bir ulke kodu giriniz: \nTum ulke kodlarini gormek icin \'iso\' yaziniz.') 41 | if ulke == 'iso': 42 | iso_3166_kodlari() 43 | else: 44 | try: 45 | saat_dilimi = pytz.country_timezones[ulke][0] 46 | yerel_saat = datetime.datetime.now(pytz.timezone(saat_dilimi)) 47 | print('su an saat', yerel_saat.strftime('%H:%M'), ':', yerel_saat.strftime('%S'), '(', saat_dilimi, 'saati)') 48 | 49 | except KeyError: 50 | print('ulke bulunamadi.') 51 | 52 | # ulke etiketleri 53 | def iso_3166_kodlari(): 54 | for country_code, timezones in pytz.country_timezones.items(): 55 | print(country_code, timezones) 56 | 57 | def tatil_bayram(): 58 | tatiller = { 59 | 'Yilbasi': datetime.date(datetime.date.today().year, 1, 1), # baz tarih 60 | 'Ulusal Egemenlik ve Cocuk Bayrami': datetime.date(datetime.date.today().year, 4, 23), 61 | 'Isci Bayrami': datetime.date(datetime.date.today().year, 5, 1), 62 | 'Ataturk\'u Anma Genclik ve Spor Bayrami': datetime.date(datetime.date.today().year, 5, 19), 63 | 'Ramazan Bayrami': datetime.date(datetime.date.today().year, 4, 21) + relativedelta(days=1), # 1. gunu 64 | 'Kurban Bayrami': datetime.date(datetime.date.today().year, 6, 29) + relativedelta(days=1), # 1. gunu 65 | 'Cumhuriyet Bayrami': datetime.date(datetime.date.today().year, 10, 29) 66 | } 67 | 68 | kalan_gunler = {} 69 | for tatil, tarih in tatiller.items(): 70 | if tarih >= datetime.date.today(): 71 | kalan_gun = tarih - datetime.date.today() 72 | kalan_gunler[tatil] = kalan_gun.days 73 | 74 | if kalan_gunler: 75 | for tatil, kalan_gun in kalan_gunler.items(): 76 | print(f'{tatil} tatiline {kalan_gun} gun kaldi.') 77 | else: 78 | print('Bu yil kalan bir tatil veya bayram gunu yok.') 79 | 80 | def finaller_2023(): 81 | ege_final_tarihi = datetime.date(2023, 6, 12) 82 | kalan_gun = ege_final_tarihi - datetime.date.today() 83 | if kalan_gun.days > 0: 84 | print(f'Finallere {kalan_gun.days} gun kaldi.') 85 | elif kalan_gun.days == 0: 86 | print('Bugun Ege universitesi ogrencilerinin finallerinin basladigi gundur.') 87 | else: 88 | print('2023 finalleri zaten yapildi sinavi zaten yapildi.') 89 | 90 | def main(): 91 | giris = int(input(''' 92 | Merhaba! 93 | Iki tarih arasindaki farki hesaplamak icin 1 94 | Dogum gunune kac gun kaldigini gormek icin 2 95 | Takvimi gormek icin 3 96 | Istenilen ulkenin saatini gormek icin 4 97 | Tatil ve bayram gunlerine kac gun kaldigini gormek icin 5 98 | Ege 2023 finallerine kalan zamani gormek icin 6'ya basiniz. 99 | ''')) 100 | 101 | if giris == 1: 102 | tarih_farki() 103 | if giris == 2: 104 | dogum_gunume_kadar() 105 | if giris == 3: 106 | print_calendar() 107 | if giris == 4: 108 | dunya_saati() 109 | if giris == 5: 110 | tatil_bayram() 111 | if giris == 6: 112 | finaller_2023() 113 | 114 | 115 | 116 | if __name__ == '__main__': 117 | main() 118 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/README.md: -------------------------------------------------------------------------------- 1 | # Bölüm 2 - Benzerlik Algoritmaları 2 | ## Levenshtein Distance 3 | + [Levenshtein Benzerlik Algoritması](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/levenshtein_distance.py) 4 | + İki stringin birbirine dönüşümündeki en kısa mesafeyi (minimum edit distance) bulmak için en yaygın kullanılan yöntemlerden biri Levenshtein Mesafesi olduğu için, bu algoritmaya yabancı kaynaklarda Minimum Edit Distance de denilmektedir. Ancak, minimum edit distance sadece bir metrik olduğu için, Levenshtein algoritması dışında başka yöntemler ile de bulunabilir. 5 | + [Ağırlıklı Levenshtein Benzerlik Algoritması](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/weighted_levenshtein_distance.py) $\to$ **Ödev_1** 6 | + Algoritmanın ağırlıklandırılması Türk alfabesindeki harf düzenine göre yapıldı. Klavyedeki harflerin yakınlıklarına göre de yapılabilir, o zaman bir Json dosyası yazmak gerekebilir. 7 | + [Spell Checker](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/spell_checker.py) 8 | + İngilizce için örnek bir spell checker programı eklendi. İleride Türkçe için [hunspell](https://github.com/hunspell/hunspell) kütüphanesi ile entegre çalışan bir spell checker programı kodlamayı düşünüyorum. 9 | + Kaynak: [https://www.youtube.com/watch?v=_nkQd9SyEpw](https://www.youtube.com/watch?v=_nkQd9SyEpw) 10 | 11 |
12 | 13 | ## Vector Space Similarity 14 | + [Vektör Uzay Benzerlik Algoritması](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/vector_similarity.py) 15 | + [RGB Renk Koduna Göre En Yüksek Benzerlik Oranına Sahip Rengi Bulan Algoritma](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/rgb_similarity.py) $\to$ **Ödev_2** 16 | + Algoritma, konsoldan rastgele girilen RGB renk koduna göre isimlendirilmiş renklerden en yüksek benzerlik oranına sahip 3 rengi tespit eder ve döndürür. 17 | + Renk kodlarını [buradaki](https://www.rapidtables.com/web/color/RGB_Color.html) siteden aldım ve toplamda 139 adet renk içeriyor. 18 | + Renkleri algoritma her çalıştığında RGB değerlerini normalize etmek algoritmanın time complexity değerini olumsuz etkileyebileceği için ve kullancağım tüm uzay da bu değerlerden oluştuğu için algoritmaya RGB renk kodlarını normalize ederek verdim. 19 | + RGB renk kodları $\to$ [RGBCodes.txt](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/RGBCodes.txt) 20 | + Normalize edilmiş RGB renk kodları $\to$ [RGBCodes_normalized.txt](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/RGBCodes_normalized.txt) 21 | 22 |
23 | 24 | ## Cosine Similarity 25 | + [Kosinüs Benzerlik Algoritması](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/cosine_similarity.py) 26 | + [TF-IDF Nedir?](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/TF-IDF.ipynb) 27 | + [TF-IDF Algoritması](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/tf_idf.py) 28 | + [TF-IDF ile Kosinüs Benzerliği](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/cosine_similarity_tf_idf.py) 29 | + [Standart vs TF-IDF ile Optimize Edilmiş Kosinüs Benzerliği Arasındaki Farklar](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/kosinusBenzerligiFark.md) $\to$ **Ödev_3** 30 | 31 |
32 | 33 | ## Matrix Similarity 34 | + [Origin Matris Benzerliği](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/origin_matrix_similarity.py) 35 | + Kitaptaki kodda bazı düzeltmeler yapıldı. (eksik import eklendi ve bazı küçük düzeltmeler yapıldı) 36 | + [Matris Benzerliği Algoritması](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/matrix_similarity.py) 37 | + Matris benzerliğini hesaplamak için OpenCV kütüphanesinin içerisinde bulunan hazır fonksiyonlar kullanıldı. 38 | + [PIL ile Görsel Fark](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/gorsel_fark.py) 39 | + PIL (Pillow) kütüphanesindeki hazır fonksiyonlar ile iki görsel arasındaki farkı tespit eder ve image olarak ekrana döndürür. 40 | + [Toleranslı Benzerlik Algoritması](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/tolerant_similarity.py) $\to$ **Ödev_4** 41 | + Algoritma, tolerans değeri büyüdükçe iki piksel arasındaki renk farkının yüksek olmasına izin verir ve benzerlik oranı artar. 42 | + [Tanimoto Benzerliği Nedir](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/Tanimoto_Benzerligi.ipynb) $\to$ **Ödev_5** 43 | + [Tanimoto Benzerlik Algoritması](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/tanimoto_similarity.py) 44 | #### Gorseller 45 | + Kitaptaki görsellere ek aşağıdaki gibi farklı görseller üzerinden de denemeler yapıldı. 46 | + [gorsel1](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/gorsel1.png), [gorsel2](https://github.com/enesmanan/turkce-kitaplar/blob/main/Projelerle%20Yapay%20Zeka/Benzerlik_Algoritmalar%C4%B1/gorsel2.png) 47 | -------------------------------------------------------------------------------- /Veri Bilimi İçin Python/README.md: -------------------------------------------------------------------------------- 1 | # :blue_book: Veri Bilimi İçin Python 2 | Bu klasör kitaptaki ilgimi çeken örnek programların genişletilmiş ve geliştirilmiş versiyonlarını içerir. 3 | 4 | Kitabın isminde veri bilimi ibaresi olsa da büyük bir kısımda Python temelleri anlatılmış olduğundan dolayı veri bilimi ile doğrudan alakalı program sayısı tatminkar seviyede değil. 5 | 6 | ## :open_book: Programlar 7 | 8 | ### :point_right: [Pascal Üçgeni](https://github.com/enesmanan/turkce-kitaplar/blob/main/Veri%20Bilimi%20%C4%B0%C3%A7in%20Python/pascal_ucgeni.py) 9 | + Kullanıcıdan int tipinde aldığı satır sayısı inputuna göre konsola Pascal Üçgenini basar. Buradaki ana amacım gerçekten konsoldaki görüntünün orantılı bir şekilde gözükmesiydi. 10 | 11 | ### :point_right: [Rastgele Şifre Oluşturucu](https://github.com/enesmanan/turkce-kitaplar/blob/main/Veri%20Bilimi%20%C4%B0%C3%A7in%20Python/rastgele_sifre_olusturucu.py) 12 | + Kullanıcıdan int tipinde aldığı şifre uzunluğu inputuna göre rastgele karakterlerden oluşan bir şifre oluşturur. 13 | 14 | **NOT:** Pascal Üçgeni ve Rastgele Şifre Oluşturucu programlarında hata ayıklama işlemini `if __name__ == '__main__':` yapısı altına yazdığım için modül olarak kullanılırsa hata ayıklama kısımları çalışmayacaktır. Hata ayıklama ksımlarının çalışmasını istiyorsak, bir main fonksiyonu oluşturup içerisinde hata ayıklama yapmak daha doğru bir yaklaşım olacaktır. Nitekim yazdığım diğer programlarda bunu tecrübe ettim. 15 | 16 | ### :point_right: [Sayısal Loto Çekilişi](https://github.com/enesmanan/turkce-kitaplar/blob/main/Veri%20Bilimi%20%C4%B0%C3%A7in%20Python/sayisal_loto.py) 17 | + Program her çalıştırıldığında 1 ile 49 arasındaki (49 dahil) 6 adet unique sayı üretir. 18 | 19 | ### :point_right: [Puanlı Sayı Tahmin Oyunu](https://github.com/enesmanan/turkce-kitaplar/blob/main/Veri%20Bilimi%20%C4%B0%C3%A7in%20Python/sayi_tahmin_oyunu.py) 20 | + Dört adet zorluk seviyesi sunar ve bilgisayarın rastgele olarak tutmuş olduğu sayıyı oyuncu tahmin etmeye çalışır. Buradaki ana amacım oyun scorunu şaşaalı bir şekilde sunabilmekti. Bununu yapmanın yolunuda tarayıcıyı açıp raporu oyuncuya göstermeyi düşündüm. Bunun için [webbrowser](https://docs.python.org/3/library/webbrowser.html) modülünü kullandım. Daha estetik bir sonuç için HTML kısmı geliştirilebilir. 21 | 22 | ### :point_right: [Adam Asmaca](https://github.com/enesmanan/turkce-kitaplar/blob/main/Veri%20Bilimi%20%C4%B0%C3%A7in%20Python/adam_asmaca.py) 23 | + Oyuncu bilgisayarın rastgele bir şekilde tuttuğu Python kütüphanesini tahmin etmeye çalışır. 24 | 25 | ### :point_right: [Ing-Tr Sözlük](https://github.com/enesmanan/turkce-kitaplar/blob/main/Veri%20Bilimi%20%C4%B0%C3%A7in%20Python/ing_tr_sozluk.py) 26 | + Bilmediğiniz bir ingilizce kelimeyi arayabilirsiniz. Eğer kelime [sozluk.txt](https://github.com/enesmanan/turkce-kitaplar/blob/main/Veri%20Bilimi%20%C4%B0%C3%A7in%20Python/sozluk.txt) dosyasının içinde yoksa, olmayan kelimeyi program ilk çalıştırıldığı anda otamatik olarak oluşan yeni_kelimeler.txt dosyasının içerisine, programın 2 numaralı fonksiyonu ile ekleyebilirsiniz. 27 | 28 | **NOT:** Programın çalışabilmesi için sozluk.txt dosyası ile programın kaynak kodlarının aynı dizinde olması gerekiyor. 29 | 30 | ### :point_right: [XOX Oyunu](https://github.com/enesmanan/turkce-kitaplar/blob/main/Veri%20Bilimi%20%C4%B0%C3%A7in%20Python/xox_oyunu.py) 31 | + XOX oyununu konsol üzerinden oynayabilirsiniz. Oyunda herhangi bir algoritma veya yapay zeka eşlik etmiyor, oyuncu sırası ile X ve O harflerini tahtada belirtilen yerlerden birisine koyar. 32 | 33 | ### :point_right: [E-Posta Doğrulama](https://github.com/enesmanan/turkce-kitaplar/blob/main/Veri%20Bilimi%20%C4%B0%C3%A7in%20Python/email_dogrulama.py) 34 | + Regex ile girilen e-postanın doğruluğu kontrol edilir. E-postaların içerisinde "." dışında özel karakterler bulunamayacağı için eğer özel karakter girildiyse onları kaldırarak girilen e-postayı tahmin etmeye çalışır. 35 | 36 | ### :point_right: [Datetime Uygulamaları](https://github.com/enesmanan/turkce-kitaplar/blob/main/Veri%20Bilimi%20%C4%B0%C3%A7in%20Python/datetime_uygulamalar.py) 37 | + Datetime modülünü öğrenebilmek için çeşitli-ufak programların bir araya getirilmesinden oluşur. Program ile iki tarih arasındaki farkı bulmak, doğum gününe kaç gün kaldığını görmek, takvimi görüntülmek, istenilen ülkenin saatini görmek, tatil ve bayram günlerine kaç gün kaldığını öğrenmek gibi şeyler yapılabiliyor. 38 | 39 | **NOT:** Bu programı exe formatına getirdim, dileyenler [buradaki](https://drive.google.com/drive/folders/1t2TfsGxblBPyYrzBzz2RuYUcErF3ksvw?usp=sharing) adresten sağ yukarıdan tümünü indir deyip ***dist*** klasörünün içerisindeki ***run.exe*** dosyasını çalıştırarak, kendi bilgisayarında Python kurulu olmasa bile programı deneyimleyebilirsiniz. 40 | 41 | ### :point_right: [IMDB Top 250](https://github.com/enesmanan/turkce-kitaplar/blob/main/Veri%20Bilimi%20%C4%B0%C3%A7in%20Python/imdb_veri_cekme.py) 42 | + Bu program IMDB sitesinde top 250 olarak gözüken filmlerin bilgilerini çeker akabinde bir csv dosyası oluşturur ve bilgileri içerisine yazar. 43 | 44 | ### :point_right: [Twitter Veri Çekme](https://github.com/enesmanan/turkce-kitaplar/blob/main/Veri%20Bilimi%20%C4%B0%C3%A7in%20Python/twitter_veri_cekme.py) 45 | + Twitter'an veri çekmenin birçok farklı yolu mevcuttur. Bu programı kodlarken ben de kitapta gösterilen [pytwitterscraper](https://github.com/mrwan200/pytwitterscraper) isimli modülü kullandım. Program ile Türkiye'deki ve diğer ülkelerdeki trend konuları görebilmek, kullanıcı adı veya ID'si girilen kişinin profil bilgilerine ulaşmak, bir tweetin bilgilerini veya yorumlarını görmek, girilen kullanıcı adını kullanan diğer kişileri görüntülemek ve kullanıcı adı bilinen bir kişinin ID bilgisine ulaşmak gibi işlemler yapılabilir. 46 | 47 | **NOT:** Maalesef tweet çekme işlemini bu paket ile yapamıyoruz. Tahminimce Elon Musk'ın Twitter'ı satın almasından sonra değişen politikalar ile alakalı. (Tweet çekmek için [Tweepy](https://docs.tweepy.org/en/stable/) kütüphanesi kullanılabilir.) 48 | 49 | ### :point_right: [OpenCV Uygulamaları](https://github.com/enesmanan/turkce-kitaplar/blob/main/Veri%20Bilimi%20%C4%B0%C3%A7in%20Python/opencv_uygulamalari.py) 50 | + Kullanıcının bilgisayarından seçtiği bir resme döndürme, grileştirme ve blur atma gibi işlemler yapılabiliyor. 51 | 52 | **NOT:** Bu programın çalışabilmesi için resmin bulunduğu dosya yolunda Türkçe karakter bulunmaması gerekiyor. Yani bilgisayarınızı Türkçe olarak kullanıyorsanız dosya yolunda Masa Üstü bulunabilir. Bu durumda dosya yolu Türkçe karakter içerdiği için program çalışmayacaktır. 53 | -------------------------------------------------------------------------------- /Uygulamalarla Veri Bilimi/1. Veri Bilimi Uygulamalarına Giriş/calisma_sorulari_1.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# 1. Bölüm Çalışma Soruları Cevapları" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "## 1. Soru: Regresyon mu, sınıflandırma mı?\n", 15 | "\n", 16 | "Karşımıza gelen bir problemin regresyon mu yoksa sınıflandırma mı olduğunu anlamak için hedef değişkenin yapısını inceleriz. Eğer bağımlı değişkenimiz kategorik verilerden oluşuyorsa sınıflandırma, sürekli verilerden oluşuyosa regresyon problemi olduğunu kabaca anlayabiliriz.\n", 17 | "\n", 18 | "**Kategorik Veriler:** \n", 19 | "+ **İkili sınıflandırma** $\\to$ Kadın/Erkek, Evli/Bekar, Kedi/Köpek vb.\n", 20 | "+ **Çok sınıflı sınıflandırma** $\\to$ Araba markaları, renkler vb.\n", 21 | "\n", 22 | "**Sürekli Veriler:**\n", 23 | "+ Sıcaklık, yaş, maaş, bir şeyin fiyatı vb.\n", 24 | "\n", 25 | "*Burada hangisinin seçileceği iş probleminin tanımına ve eldeki veriye göre değişkenlik gösterebilir.*" 26 | ] 27 | }, 28 | { 29 | "cell_type": "markdown", 30 | "metadata": {}, 31 | "source": [ 32 | "
" 33 | ] 34 | }, 35 | { 36 | "cell_type": "markdown", 37 | "metadata": {}, 38 | "source": [ 39 | "## 2. Soru: Dengesiz bir veri kümesine karşı yaklaşımınız nasıl olur?\n", 40 | "\n", 41 | "**Dengesiz veri kümesi**, sınıflar arası farkın bariz bir şekilde açık olduğu veri kümesidir. Yani, bir gözlem biriminde 100 varken öteki gözlem biriminden 10000 olması gibi. Bir veri kümesindeki dengesizliğin kesin bir tanımı yoktur.\n", 42 | "\n", 43 | "Dengesizliği gidermek için yöntemler:\n", 44 | "1. **Azınlıkta olan sınıf için daha fazla veri toplamak:** Bu yöntem, veriyi biz topladıysak kullanılabilir.\n", 45 | "2. **Çoğunlukta olan sınıfın örneklerini azaltmak:** Eğer bunu uygularsak çoğunlukta olan sınıf için veri kaybına neden olabilriz. Bunun sonucunda algoritma yeterince öğrenemeyebilir.\n", 46 | "3. **Azınlık sınıfın örneklerini kopyalamak:** Aynı veriler tekrarlanacağız için overfitting sorununa neden olabilir.\n", 47 | "4. **Sentetik örnekleme yöntemleri ile sınıflar arası dengesizliği azaltmak:** SMOTE gibi bir yöntem ile azınlık sınıfın örnekleri sentetik olarak artırılabilir." 48 | ] 49 | }, 50 | { 51 | "cell_type": "markdown", 52 | "metadata": {}, 53 | "source": [ 54 | "
" 55 | ] 56 | }, 57 | { 58 | "cell_type": "markdown", 59 | "metadata": {}, 60 | "source": [ 61 | "## 3. Soru: Tasarlanan bir algoritma ve oluşturulan model hangi aralıklarla güncellenmelidir?\n", 62 | "\n", 63 | "Bu sorunun kesin bir cevabı yoktur, iş problemine ve veri kümesindeki performans kriterlerine göre değişkenlik gösterebilir.\n", 64 | "\n", 65 | "Bazı genel prensipler:\n", 66 | "+ **Veri setinde önemli bir değişiklik olduğunda** \n", 67 | "+ **Modelin performansında önemli bir değişiklik olduğunda**\n", 68 | "+ **Yeni çıkan teknolojik gelişmeler olduğunda**\n", 69 | "\n", 70 | "Bu şartlar sağlandığında algoritma ve modelde güncellemeler yapmak gerekebilir.\n", 71 | "\n", 72 | "*Bu işin bir standartı yoktur. Aslolan, algoritma ve modelin düzenli olarak gözlemlenmesi, performanslarının takip edilmesi, değişen gereksinimlere ve koşullara göre güncellenmesidir.*\n" 73 | ] 74 | }, 75 | { 76 | "cell_type": "markdown", 77 | "metadata": {}, 78 | "source": [ 79 | "
" 80 | ] 81 | }, 82 | { 83 | "cell_type": "markdown", 84 | "metadata": {}, 85 | "source": [ 86 | "## 4. Soru: 500 sütun ve 1 milyon satırlık satırlık bir veri seti üzerinde sınıflandırma yaptığımızı düşünelim. Çalıştığımız bilgisayarda da bellek kısıtları olduğunu düşünelim. Hesaplama bellek yetersizliğinden dolayı aşırı zaman alacaktır, hesaplama zamanını kısaltmak için verinin boyutunu hangi yaklaşımlar ile küçültebiliriz?\n", 87 | "\n", 88 | "1. **Özellik Seçimi (Feature Selection):** Her özelliğin hedef değişkeni açıklamaktaki başarısı bir olmadığı için hedef değişkeni en iyi açıklayan özellikler seçilerek hesaplama süresi azaltılabilir.\n", 89 | "2. **Özellik Çıkarımı (Feature Extraction):** Var olan özelliklerden yeni özellikler oluşturarak verinin boyutunu küçültmek için kullanılabilcek bir yöntemdir.\n", 90 | "3. **Boyut İndirgeme:** Veri setindeki sütunlarının sayısını azaltmak için kullanılır. PCA (Temel Bileşen Analizi) en basit ve bilinen yöntemlerden biridir.\n", 91 | "4. **Örneklem Seçimi:** Veri kümesinden rastgele olarak örneklemeler alınabilir. Bu yöntem sonucunda bilgi kaybı oluşabilir. Bilgi kaybını en aza indirgemek için daha fazla örneklem alarak bunların ortak sonucuna bakılabilir. " 92 | ] 93 | }, 94 | { 95 | "cell_type": "markdown", 96 | "metadata": {}, 97 | "source": [ 98 | "
" 99 | ] 100 | }, 101 | { 102 | "cell_type": "markdown", 103 | "metadata": {}, 104 | "source": [ 105 | "## 5. Soru: Modelde düşük bias ve yüksek varyans varsa bu durumu aşmak için hangi algoritma kullanılmalıdır?\n", 106 | "\n", 107 | "Modelde düşük bias ve yüksek varyans gözleniyorsa model overfitting (aşırı uyum) problemi yaşıyordur. Bu durumda modelin eğitim hatası düşük olmasına rağmen test hatası yüksek olabilir.\n", 108 | "\n", 109 | "Modelin genelleme yeteneğini korumak için aşağıdaki yöntemler kullanılabilir:\n", 110 | "+ **Düzenlileştirme (Regularization):** Düzenlileştireme ile modelin karmaşıklığını düşürerek overfitting sorunundan kurtulmaya çalışırız. Modelin ağırlıklarına (weights) bir ceza terimi ekleyerek modelin eğitim verisinde aşırı uymasını engeller.\n", 111 | "+ **Topluluk Modelleri (Ensemble Learning):** Bu modeller birden fazla modeli birleştirerek tek bir modelden daha iyi performans vermeyi amaçlarlar. Ensemble yöntemler, varyansı azaltarak modelin performansını artırabilir. Bunlar arasında Bagging, Boosting ve Random Forest gibi yöntemler yer alır." 112 | ] 113 | }, 114 | { 115 | "cell_type": "markdown", 116 | "metadata": {}, 117 | "source": [ 118 | "
" 119 | ] 120 | } 121 | ], 122 | "metadata": { 123 | "kernelspec": { 124 | "display_name": "Python 3 (ipykernel)", 125 | "language": "python", 126 | "name": "python3" 127 | }, 128 | "language_info": { 129 | "codemirror_mode": { 130 | "name": "ipython", 131 | "version": 3 132 | }, 133 | "file_extension": ".py", 134 | "mimetype": "text/x-python", 135 | "name": "python", 136 | "nbconvert_exporter": "python", 137 | "pygments_lexer": "ipython3", 138 | "version": "3.9.16" 139 | } 140 | }, 141 | "nbformat": 4, 142 | "nbformat_minor": 4 143 | } 144 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/Tanimoto_Benzerligi.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "ae11b079-d826-4322-ba0e-2281e2c3c684", 6 | "metadata": {}, 7 | "source": [ 8 | "# Tanimoto Benzerliği" 9 | ] 10 | }, 11 | { 12 | "cell_type": "markdown", 13 | "id": "8457ef07-94b8-4491-b9b5-eee224fd0ae5", 14 | "metadata": {}, 15 | "source": [ 16 | "### Tanimoto (Jaccard) Benzerliği\n", 17 | "\n", 18 | "Tanimoto benzerliği, Jaccard benzerliğini taban alarak oluşturulmuştur. iki kümenin ne kadar çok elemanı paylaştığını ölçen bir benzerlik metriğidir. İki kümenin kesişimini, birleşimine bölerek benzerlik oranını hesaplar. Formülü aşağıdaki gibidir:" 19 | ] 20 | }, 21 | { 22 | "cell_type": "markdown", 23 | "id": "2485c2e3-f1b9-4f8c-b08b-404f0fbc8216", 24 | "metadata": {}, 25 | "source": [ 26 | " " 27 | ] 28 | }, 29 | { 30 | "cell_type": "markdown", 31 | "id": "86a13f11-775e-448b-921d-f0b924881f51", 32 | "metadata": {}, 33 | "source": [ 34 | "Burada:\n", 35 | "- `A ∩ B` kümelerin kesişimi,\n", 36 | "- `A ∪ B` kümelerin birleşimi." 37 | ] 38 | }, 39 | { 40 | "cell_type": "markdown", 41 | "id": "20e73575-13b2-4975-995c-2f886843b2f5", 42 | "metadata": {}, 43 | "source": [ 44 | "Tanimoto (Jaccard) benzerliği, ikili veya binarize edilmiş verilerin kullanıldığı bilgisayar bilimi, ekoloji, genomik, kimya gibi alanlarda yaygın olarak kullanılır. 0 ile 1 arasında değer alabilir." 45 | ] 46 | }, 47 | { 48 | "cell_type": "markdown", 49 | "id": "3e2bc4be-4f27-44df-94b9-62360932a489", 50 | "metadata": {}, 51 | "source": [ 52 | "### Matris Benzerliği\n", 53 | "\n", 54 | "Matris benzerliği, genellikle piksel değerlerini kullanarak iki görsel arasındaki farkı matrisler yardımıyla ölçer. Piksel değerleri arasındaki farkı veya benzerliği hesaplamak için farklı metrikler kullanabilir. Örneğin, L1 veya L2 normları veya mutlak fark gibi metrikler kullanılabilir." 55 | ] 56 | }, 57 | { 58 | "cell_type": "markdown", 59 | "id": "305056af-da47-4b34-98c1-d2e61a729c9e", 60 | "metadata": {}, 61 | "source": [ 62 | "### Tanimoto ile Matris Benzerliği Arasındaki Farklar\n", 63 | "\n", 64 | "Bu iki benzerlik algoritması farklı yaklaşımlar kullanıldığından ötürü sonuçlarda farklılaşıyor:\n", 65 | "\n", 66 | "- Tanimoto benzerliği, görüntüleri siyah beyaz matrislere dönüştürüp piksel değerlerini kullanarak benzerlik hesaplar. Bu yaklaşım, renk tonlarından ziyade yalnızca varlık veya yokluğu dikkate alır. Bundan dolayı da benzerlik oranı yüksek çıkma eğilimindedir.\n", 67 | "- Matris benzerliği ise renkli piksel değerlerini kullanarak daha detaylı bir farklılık ve benzerlik değeri elde etmeye çalışır. Bu yaklaşım renk farklarını da içerir.\n", 68 | "\n", 69 | "Sonuçlar arasındaki bu farklılık, iki yöntemin de farklı özellikleri nedeniyle oluşabilir. Bir yöntemin diğerine üstün olduğunu söylemek için, hangi benzerlik metriğinin spesifik senaryoda daha uygun olduğunu anlamak önemlidir. Örneğin, Tanimoto (Jaccard) benzerliği ikili veya ikili hale getirilmiş verilerde kullanılırken matris benzerliği daha genel durumlarda kullanılabilir." 70 | ] 71 | }, 72 | { 73 | "cell_type": "markdown", 74 | "id": "0f8f7f6d-f3c5-4682-b173-bb24fa73be47", 75 | "metadata": {}, 76 | "source": [ 77 | "## Tanimoto Benzerliği" 78 | ] 79 | }, 80 | { 81 | "cell_type": "code", 82 | "execution_count": 1, 83 | "id": "50b11d88-77a8-47a1-9f99-061fe2195509", 84 | "metadata": {}, 85 | "outputs": [ 86 | { 87 | "name": "stdout", 88 | "output_type": "stream", 89 | "text": [ 90 | "Benzerlik orani: 0.995361906808377\n" 91 | ] 92 | } 93 | ], 94 | "source": [ 95 | "import numpy as np\n", 96 | "from PIL import Image\n", 97 | "\n", 98 | "def jaccard_similarity(matrix1, matrix2):\n", 99 | " intersection = np.logical_and(matrix1, matrix2)\n", 100 | " union = np.logical_or(matrix1, matrix2)\n", 101 | " return intersection.sum() / union.sum()\n", 102 | "\n", 103 | "def png_to_matrix(file_path):\n", 104 | " img = Image.open(file_path).convert('L')\n", 105 | " img_arr = np.array(img)\n", 106 | " return img_arr\n", 107 | "\n", 108 | "file1 = 'gorsel1.png'\n", 109 | "file2 = 'gorsel2.png'\n", 110 | "\n", 111 | "\n", 112 | "matrix1 = png_to_matrix(file1)\n", 113 | "matrix2 = png_to_matrix(file2)\n", 114 | "\n", 115 | "similarity = jaccard_similarity(matrix1, matrix2)\n", 116 | "\n", 117 | "print(f'Benzerlik orani: {similarity}')" 118 | ] 119 | }, 120 | { 121 | "cell_type": "markdown", 122 | "id": "0189e343-a21e-42cc-9f67-af152f9e723b", 123 | "metadata": {}, 124 | "source": [ 125 | "## Matris Benzerliği" 126 | ] 127 | }, 128 | { 129 | "cell_type": "code", 130 | "execution_count": 2, 131 | "id": "a108edf6-6b4e-48fe-834d-850fa7d22a18", 132 | "metadata": {}, 133 | "outputs": [ 134 | { 135 | "name": "stdout", 136 | "output_type": "stream", 137 | "text": [ 138 | "Iki gorsel arasindaki farklilik orani :32.44940104341378\n", 139 | "Iki gorsel arasindaki benzerlik orani :67.55059895658621\n", 140 | "Iki gorsel arasindaki farkliliklar, farkMatris.png dosyasi olarak kayit edildi\n" 141 | ] 142 | } 143 | ], 144 | "source": [ 145 | "import cv2\n", 146 | "import numpy as np\n", 147 | "\n", 148 | "def matris_benzerligi(gorsel_1, gorsel_2):\n", 149 | " yukseklik = gorsel_1.shape[0]\n", 150 | " genislik = gorsel_1.shape[1]\n", 151 | "\n", 152 | " fark = cv2.absdiff(gorsel_1,gorsel_2)\n", 153 | "\n", 154 | " farklilik_oran = np.mean(fark) * 100 / 255\n", 155 | " print('Iki gorsel arasindaki farklilik orani :' + str(farklilik_oran))\n", 156 | "\n", 157 | " benzerlik_oran = 100 - farklilik_oran\n", 158 | " print('Iki gorsel arasindaki benzerlik orani :' + str(benzerlik_oran))\n", 159 | "\n", 160 | " farkMatris = np.zeros(shape=(yukseklik, genislik, 3), dtype=np.uint8)\n", 161 | " mask = fark <= 0\n", 162 | " farkMatris[mask] = 255\n", 163 | " farkMatris[~mask] = gorsel_2[~mask]\n", 164 | "\n", 165 | " cv2.imwrite('farkMatris.png',farkMatris)\n", 166 | " print('Iki gorsel arasindaki farkliliklar, farkMatris.png dosyasi olarak kayit edildi')\n", 167 | "\n", 168 | "if __name__ == '__main__':\n", 169 | " gorsel_1 = cv2.imread('gorsel1.png')\n", 170 | " gorsel_2 = cv2.imread('gorsel2.png')\n", 171 | " matris_benzerligi(gorsel_1, gorsel_2)" 172 | ] 173 | } 174 | ], 175 | "metadata": { 176 | "kernelspec": { 177 | "display_name": "Python 3 (ipykernel)", 178 | "language": "python", 179 | "name": "python3" 180 | }, 181 | "language_info": { 182 | "codemirror_mode": { 183 | "name": "ipython", 184 | "version": 3 185 | }, 186 | "file_extension": ".py", 187 | "mimetype": "text/x-python", 188 | "name": "python", 189 | "nbconvert_exporter": "python", 190 | "pygments_lexer": "ipython3", 191 | "version": "3.9.16" 192 | } 193 | }, 194 | "nbformat": 4, 195 | "nbformat_minor": 5 196 | } 197 | -------------------------------------------------------------------------------- /Python/Notebook_2.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "80890a0c-3604-4f2d-8e7c-a7617a203233", 6 | "metadata": {}, 7 | "source": [ 8 | "# Nesne Tabanlı Programlama (Object Oriented Programming-OOP)\n", 9 | "\n", 10 | "## Sınıf (Class) Yapısı" 11 | ] 12 | }, 13 | { 14 | "cell_type": "markdown", 15 | "id": "6faefaa4-f3ed-4151-8039-34b29705e718", 16 | "metadata": {}, 17 | "source": [ 18 | "**Sınıflar, nesne üretmemizi sağlayan veri tipleridir. Sınıflar, bir 'şablon' veya 'taslak' olarak düşünülebilir ve bu şablonu kullanarak farklı nesneler oluşturulabilir.**\n", 19 | "\n", 20 | "Class kullanmanın avantajları:\n", 21 | "+ Kodun yeniden kullanılabilirliğini artırır.\n", 22 | "+ Kodun okunabilirliğini artırır.\n", 23 | "+ Kodun bakımını kolaylaştırır.\n", 24 | "+ Kodun karmaşıklığını azaltır.\n", 25 | "\n", 26 | "> *Bir programcının görevi yalnızca çalışan kodlar yazmak değildir. Programcı aynı zamanda kodlarının okunaklılığını artırmak ve bakımını kolaylaştırmakla da yükümlüdür.*" 27 | ] 28 | }, 29 | { 30 | "cell_type": "markdown", 31 | "id": "018fef65-94be-4863-a1b6-5c6d665db2aa", 32 | "metadata": {}, 33 | "source": [ 34 | "## Sınıf Metotları:\n", 35 | "### 1. Sınıflar (Classes) \n", 36 | "+ **Büyük harfle tanımlanırlar**" 37 | ] 38 | }, 39 | { 40 | "cell_type": "markdown", 41 | "id": "6f3de465-8a8d-4a13-98c8-b348bcce8c4a", 42 | "metadata": {}, 43 | "source": [ 44 | "### 2. Sınıf Nitelikleri (Class Attribute)\n", 45 | "+ **Sınıf tanımlandıktan sonra sınıf nitelikleri (class attribute) tanımlanabilir ve üzerlerinde değişiklik yapılırsa tüm nesneler için geçerli bir değişim olmuş olur.**\n", 46 | " + Sınıf niteliklerine erişmek için sınıf adını parantezsiz olarak kullanılır. $\\to$ `SuperKahraman.evren` " 47 | ] 48 | }, 49 | { 50 | "cell_type": "markdown", 51 | "id": "2abbe3c7-83f0-4331-86a0-cde058150587", 52 | "metadata": {}, 53 | "source": [ 54 | "### 3. Örnekler (Instances) ve Örnek Nitelikleri (Instances Attributes)\n", 55 | "+ **Sınıflardan yeni nesneler (objects) oluşturabiliriz ve bu nesneler, sınıfın örnekleri (instances) olarak adlandırılırlar.**\n", 56 | " + Sınıfların örneklenmesi, bir sınıfın yapıcı metotu olan `__init__(self):` fonksiyonu ile gerçekleştirilir. \n", 57 | " + Bu fonksiyon, bir sınıftan nesne türetildiğinde otomatik olarak çağrılır ve sınıfın özelliklerine başlangıç değerlerini atar.\n", 58 | " + Örnek niteliği (instance attributes), self kelimesini kullanarak tanımlanır. Örneğin, `self.ad = ad` ifadesi, sınıfın her bir örneğinin ad özniteliğini tanımlar.\n", 59 | " + Örnek nitelikleri sadece fonksiyonlar içerisinde tanımlanabilir. " 60 | ] 61 | }, 62 | { 63 | "cell_type": "markdown", 64 | "id": "73173712-e0fd-43ff-af8a-70f8bf680239", 65 | "metadata": {}, 66 | "source": [ 67 | "### 4. Örnek Metotları (Instance Methods)\n", 68 | "+ **Sınıfların örnekleri tarafından kullanılan örnek metotları (instance methods) olabilir.**\n", 69 | " + Bu metotlar bir sınıfın örnekleri vasıtasıyla çağırılabilen fonksiyonlardır.\n", 70 | " + Bu fonksiyonların ilk parametresi her zaman self kelimesidir.\n", 71 | " + Örneğin, `donusum(self):` ve `saldir(self):`" 72 | ] 73 | }, 74 | { 75 | "cell_type": "markdown", 76 | "id": "9abbd027-2efc-453e-93d8-906b1ceff6ba", 77 | "metadata": {}, 78 | "source": [ 79 | "## Örnek: SuperKahraman Sınıfı" 80 | ] 81 | }, 82 | { 83 | "cell_type": "code", 84 | "execution_count": 1, 85 | "id": "5e801ef8-f811-4344-b8bf-9e25b08d7d35", 86 | "metadata": { 87 | "tags": [] 88 | }, 89 | "outputs": [], 90 | "source": [ 91 | "class SuperKahraman:\n", 92 | " evren = 'DC'\n", 93 | " \n", 94 | " def __init__(self, ad, zirh, silahlar, guc):\n", 95 | " self.ad = ad\n", 96 | " self.zirh = zirh\n", 97 | " self.silahlar = silahlar\n", 98 | " self.guc = guc\n", 99 | " self.durum = 'Normal'\n", 100 | "\n", 101 | " def donusum(self):\n", 102 | " if self.durum == 'Normal':\n", 103 | " self.durum = 'Super Kahraman'\n", 104 | " return f'{self.ad}, donusum gerceklestirdi! Artik {self.durum} olarak hareket ediyor.'\n", 105 | " elif self.durum == 'Super Kahraman':\n", 106 | " self.durum = 'Normal'\n", 107 | " return f'{self.ad}, donusum gerceklestirdi! Artik {self.durum} olarak hareket ediyor.'\n", 108 | "\n", 109 | " def saldir(self, hedef):\n", 110 | " return f'{self.ad}, {hedef} uzerine saldiri gerceklestirildi!'\n" 111 | ] 112 | }, 113 | { 114 | "cell_type": "markdown", 115 | "id": "62a1c0b0-9456-46b7-98ac-118d9aefcd1b", 116 | "metadata": {}, 117 | "source": [ 118 | "+ Class $\\to$ SuperKahraman\n", 119 | "+ Class Attributes $\\to$ evren\n", 120 | "+ Instance Attributes $\\to$ ad, zirh, silahlar, guc, durum\n", 121 | "+ Instance Methods $\\to$ donusum(), saldir()" 122 | ] 123 | }, 124 | { 125 | "cell_type": "code", 126 | "execution_count": 2, 127 | "id": "2b6ff896-962d-41c4-9d2c-93d83558d8d5", 128 | "metadata": {}, 129 | "outputs": [ 130 | { 131 | "data": { 132 | "text/plain": [ 133 | "'DC'" 134 | ] 135 | }, 136 | "execution_count": 2, 137 | "metadata": {}, 138 | "output_type": "execute_result" 139 | } 140 | ], 141 | "source": [ 142 | "# Sinif niteliklerine erismek icin sinif adini parantezsiz olarak kullandık\n", 143 | "SuperKahraman.evren" 144 | ] 145 | }, 146 | { 147 | "cell_type": "code", 148 | "execution_count": 3, 149 | "id": "9a96e26f-74ea-4239-b2a9-eb8fa548c15f", 150 | "metadata": {}, 151 | "outputs": [], 152 | "source": [ 153 | "# SuperKahraman sinifindan yeni bir örnek olusturalim\n", 154 | "# Batman nesnesi olusturalim\n", 155 | "batman = SuperKahraman('Batman', 'Batsuit', ['Batarang', 'Batmobile'], 'Zeka ve Fiziksel Beceriler')" 156 | ] 157 | }, 158 | { 159 | "cell_type": "markdown", 160 | "id": "61661c58-1bc3-48b6-9b9b-fccd204760ab", 161 | "metadata": {}, 162 | "source": [ 163 | "SuperKahraman sınıfından yeni bir örnek oluşturmak için, sınıfın adını ve parantez içinde sınıfın `__init__` fonksiyonuna gönderilecek parametreleri girerek sınıfı çağırırız." 164 | ] 165 | }, 166 | { 167 | "cell_type": "code", 168 | "execution_count": 4, 169 | "id": "76786f82-86ed-4a4e-9ca0-e6653d79d5bd", 170 | "metadata": {}, 171 | "outputs": [ 172 | { 173 | "name": "stdout", 174 | "output_type": "stream", 175 | "text": [ 176 | "Batman, zirh: Batsuit, Silahlar: Batarang, Batmobile, guc: Zeka ve Fiziksel Beceriler\n", 177 | "Batman, donusum gerceklestirdi! Artik Super Kahraman olarak hareket ediyor.\n", 178 | "Batman, Joker uzerine saldiri gerceklestirildi!\n", 179 | "Batman, donusum gerceklestirdi! Artik Normal olarak hareket ediyor.\n" 180 | ] 181 | } 182 | ], 183 | "source": [ 184 | "# Batman'in ozelliklerine eriselim ardindan donusum ve saldiri yeteneklerini cagiralim\n", 185 | "print(f'{batman.ad}, zirh: {batman.zirh}, Silahlar: {\", \".join(batman.silahlar)}, guc: {batman.guc}')\n", 186 | "print(batman.donusum())\n", 187 | "print(batman.saldir('Joker'))\n", 188 | "print(batman.donusum())" 189 | ] 190 | } 191 | ], 192 | "metadata": { 193 | "kernelspec": { 194 | "display_name": "Python 3 (ipykernel)", 195 | "language": "python", 196 | "name": "python3" 197 | }, 198 | "language_info": { 199 | "codemirror_mode": { 200 | "name": "ipython", 201 | "version": 3 202 | }, 203 | "file_extension": ".py", 204 | "mimetype": "text/x-python", 205 | "name": "python", 206 | "nbconvert_exporter": "python", 207 | "pygments_lexer": "ipython3", 208 | "version": "3.9.16" 209 | } 210 | }, 211 | "nbformat": 4, 212 | "nbformat_minor": 5 213 | } 214 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/RGBCodes_normalized.txt: -------------------------------------------------------------------------------- 1 | maroon: [50.196078431372555, 0.0, 0.0] 2 | dark red: [54.50980392156863, 0.0, 0.0] 3 | brown: [64.70588235294117, 16.47058823529412, 16.47058823529412] 4 | firebrick: [69.80392156862746, 13.333333333333334, 13.333333333333334] 5 | crimson: [86.27450980392157, 7.843137254901961, 23.529411764705884] 6 | red: [100.0, 0.0, 0.0] 7 | tomato: [100.0, 38.82352941176471, 27.84313725490196] 8 | coral: [100.0, 49.80392156862745, 31.372549019607845] 9 | indian red: [80.3921568627451, 36.07843137254902, 36.07843137254902] 10 | light coral: [94.11764705882354, 50.196078431372555, 50.196078431372555] 11 | dark salmon: [91.37254901960785, 58.82352941176471, 47.84313725490196] 12 | salmon: [98.03921568627452, 50.196078431372555, 44.70588235294118] 13 | light salmon: [100.0, 62.74509803921569, 47.84313725490196] 14 | orange red: [100.0, 27.058823529411768, 0.0] 15 | dark orange: [100.0, 54.90196078431373, 0.0] 16 | orange: [100.0, 64.70588235294117, 0.0] 17 | gold: [100.0, 84.31372549019608, 0.0] 18 | dark golden rod: [72.15686274509804, 52.54901960784314, 4.313725490196079] 19 | golden rod: [85.49019607843138, 64.70588235294117, 12.549019607843139] 20 | pale golden rod: [93.33333333333334, 90.98039215686275, 66.66666666666667] 21 | dark khaki: [74.11764705882354, 71.76470588235294, 41.96078431372549] 22 | khaki: [94.11764705882354, 90.19607843137256, 54.90196078431373] 23 | olive: [50.196078431372555, 50.196078431372555, 0.0] 24 | yellow: [100.0, 100.0, 0.0] 25 | yellow green: [60.392156862745104, 80.3921568627451, 19.607843137254903] 26 | dark olive green: [33.333333333333336, 41.96078431372549, 18.43137254901961] 27 | olive drab: [41.96078431372549, 55.68627450980392, 13.725490196078432] 28 | lawn green: [48.62745098039216, 98.82352941176471, 0.0] 29 | chartreuse: [49.80392156862745, 100.0, 0.0] 30 | green yellow: [67.84313725490196, 100.0, 18.43137254901961] 31 | dark green: [0.0, 39.21568627450981, 0.0] 32 | green: [0.0, 50.196078431372555, 0.0] 33 | forest green: [13.333333333333334, 54.50980392156863, 13.333333333333334] 34 | lime: [0.0, 100.0, 0.0] 35 | lime green: [19.607843137254903, 80.3921568627451, 19.607843137254903] 36 | light green: [56.47058823529412, 93.33333333333334, 56.47058823529412] 37 | pale green: [59.6078431372549, 98.43137254901961, 59.6078431372549] 38 | dark sea green: [56.078431372549026, 73.72549019607844, 56.078431372549026] 39 | medium spring green: [0.0, 98.03921568627452, 60.392156862745104] 40 | spring green: [0.0, 100.0, 49.80392156862745] 41 | sea green: [18.03921568627451, 54.50980392156863, 34.11764705882353] 42 | medium aqua marine: [40.0, 80.3921568627451, 66.66666666666667] 43 | medium sea green: [23.529411764705884, 70.19607843137256, 44.313725490196084] 44 | light sea green: [12.549019607843139, 69.80392156862746, 66.66666666666667] 45 | dark slate gray: [18.43137254901961, 30.98039215686275, 30.98039215686275] 46 | teal: [0.0, 50.196078431372555, 50.196078431372555] 47 | dark cyan: [0.0, 54.50980392156863, 54.50980392156863] 48 | aqua: [0.0, 100.0, 100.0] 49 | cyan: [0.0, 100.0, 100.0] 50 | light cyan: [87.84313725490196, 100.0, 100.0] 51 | dark turquoise: [0.0, 80.78431372549021, 81.9607843137255] 52 | turquoise: [25.098039215686278, 87.84313725490196, 81.5686274509804] 53 | medium turquoise: [28.23529411764706, 81.9607843137255, 80.0] 54 | pale turquoise: [68.62745098039215, 93.33333333333334, 93.33333333333334] 55 | aqua marine: [49.80392156862745, 100.0, 83.13725490196079] 56 | powder blue: [69.01960784313727, 87.84313725490196, 90.19607843137256] 57 | cadet blue: [37.254901960784316, 61.9607843137255, 62.74509803921569] 58 | steel blue: [27.450980392156865, 50.98039215686275, 70.58823529411765] 59 | corn flower blue: [39.21568627450981, 58.43137254901961, 92.94117647058825] 60 | deep sky blue: [0.0, 74.90196078431373, 100.0] 61 | dodger blue: [11.764705882352942, 56.47058823529412, 100.0] 62 | light blue: [67.84313725490196, 84.70588235294119, 90.19607843137256] 63 | sky blue: [52.94117647058824, 80.78431372549021, 92.15686274509804] 64 | light sky blue: [52.94117647058824, 80.78431372549021, 98.03921568627452] 65 | midnight blue: [9.803921568627452, 9.803921568627452, 43.92156862745098] 66 | navy: [0.0, 0.0, 50.196078431372555] 67 | dark blue: [0.0, 0.0, 54.50980392156863] 68 | medium blue: [0.0, 0.0, 80.3921568627451] 69 | blue: [0.0, 0.0, 100.0] 70 | royal blue: [25.490196078431374, 41.1764705882353, 88.23529411764706] 71 | blue violet: [54.117647058823536, 16.862745098039216, 88.62745098039217] 72 | indigo: [29.411764705882355, 0.0, 50.98039215686275] 73 | dark slate blue: [28.23529411764706, 23.92156862745098, 54.50980392156863] 74 | slate blue: [41.568627450980394, 35.294117647058826, 80.3921568627451] 75 | medium slate blue: [48.235294117647065, 40.7843137254902, 93.33333333333334] 76 | medium purple: [57.64705882352941, 43.92156862745098, 85.88235294117648] 77 | dark magenta: [54.50980392156863, 0.0, 54.50980392156863] 78 | dark violet: [58.03921568627452, 0.0, 82.74509803921569] 79 | dark orchid: [60.00000000000001, 19.607843137254903, 80.0] 80 | medium orchid: [72.94117647058825, 33.333333333333336, 82.74509803921569] 81 | purple: [50.196078431372555, 0.0, 50.196078431372555] 82 | thistle: [84.70588235294119, 74.90196078431373, 84.70588235294119] 83 | plum: [86.66666666666667, 62.74509803921569, 86.66666666666667] 84 | violet: [93.33333333333334, 50.98039215686275, 93.33333333333334] 85 | magenta: [100.0, 0.0, 100.0] 86 | orchid: [85.49019607843138, 43.92156862745098, 83.92156862745098] 87 | medium violet red: [78.03921568627452, 8.23529411764706, 52.156862745098046] 88 | pale violet red: [85.88235294117648, 43.92156862745098, 57.64705882352941] 89 | deep pink: [100.0, 7.843137254901961, 57.64705882352941] 90 | hot pink: [100.0, 41.1764705882353, 70.58823529411765] 91 | light pink: [100.0, 71.37254901960785, 75.68627450980392] 92 | pink: [100.0, 75.29411764705883, 79.6078431372549] 93 | antique white: [98.03921568627452, 92.15686274509804, 84.31372549019608] 94 | beige: [96.07843137254902, 96.07843137254902, 86.27450980392157] 95 | bisque: [100.0, 89.41176470588236, 76.86274509803923] 96 | blanched almond: [100.0, 92.15686274509804, 80.3921568627451] 97 | wheat: [96.07843137254902, 87.05882352941177, 70.19607843137256] 98 | corn silk: [100.0, 97.25490196078432, 86.27450980392157] 99 | lemon chiffon: [100.0, 98.03921568627452, 80.3921568627451] 100 | light golden rod yellow: [98.03921568627452, 98.03921568627452, 82.3529411764706] 101 | light yellow: [100.0, 100.0, 87.84313725490196] 102 | saddle brown: [54.50980392156863, 27.058823529411768, 7.450980392156863] 103 | sienna: [62.74509803921569, 32.15686274509804, 17.647058823529413] 104 | chocolate: [82.3529411764706, 41.1764705882353, 11.764705882352942] 105 | peru: [80.3921568627451, 52.156862745098046, 24.705882352941178] 106 | sandy brown: [95.68627450980392, 64.31372549019608, 37.64705882352941] 107 | burly wood: [87.05882352941177, 72.15686274509804, 52.94117647058824] 108 | tan: [82.3529411764706, 70.58823529411765, 54.90196078431373] 109 | rosy brown: [73.72549019607844, 56.078431372549026, 56.078431372549026] 110 | moccasin: [100.0, 89.41176470588236, 70.98039215686275] 111 | navajo white: [100.0, 87.05882352941177, 67.84313725490196] 112 | peach puff: [100.0, 85.49019607843138, 72.54901960784314] 113 | misty rose: [100.0, 89.41176470588236, 88.23529411764706] 114 | lavender blush: [100.0, 94.11764705882354, 96.07843137254902] 115 | linen: [98.03921568627452, 94.11764705882354, 90.19607843137256] 116 | old lace: [99.2156862745098, 96.07843137254902, 90.19607843137256] 117 | papaya whip: [100.0, 93.72549019607844, 83.52941176470588] 118 | sea shell: [100.0, 96.07843137254902, 93.33333333333334] 119 | mint cream: [96.07843137254902, 100.0, 98.03921568627452] 120 | slate gray: [43.92156862745098, 50.196078431372555, 56.47058823529412] 121 | light slate gray: [46.66666666666667, 53.333333333333336, 60.00000000000001] 122 | light steel blue: [69.01960784313727, 76.86274509803923, 87.05882352941177] 123 | lavender: [90.19607843137256, 90.19607843137256, 98.03921568627452] 124 | floral white: [100.0, 98.03921568627452, 94.11764705882354] 125 | alice blue: [94.11764705882354, 97.25490196078432, 100.0] 126 | ghost white: [97.25490196078432, 97.25490196078432, 100.0] 127 | honeydew: [94.11764705882354, 100.0, 94.11764705882354] 128 | ivory: [100.0, 100.0, 94.11764705882354] 129 | azure: [94.11764705882354, 100.0, 100.0] 130 | snow: [100.0, 98.03921568627452, 98.03921568627452] 131 | black: [0.0, 0.0, 0.0] 132 | dim gray: [41.1764705882353, 41.1764705882353, 41.1764705882353] 133 | gray: [50.196078431372555, 50.196078431372555, 50.196078431372555] 134 | dark gray: [66.27450980392157, 66.27450980392157, 66.27450980392157] 135 | silver: [75.29411764705883, 75.29411764705883, 75.29411764705883] 136 | light gray: [82.74509803921569, 82.74509803921569, 82.74509803921569] 137 | gainsboro: [86.27450980392157, 86.27450980392157, 86.27450980392157] 138 | white smoke: [96.07843137254902, 96.07843137254902, 96.07843137254902] 139 | white: [100.0, 100.0, 100.0] -------------------------------------------------------------------------------- /Python/Notebook_1.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "5c3652dc-07e9-4249-a40e-63dbab046459", 6 | "metadata": {}, 7 | "source": [ 8 | "## `if __name__ == '__main__'`" 9 | ] 10 | }, 11 | { 12 | "cell_type": "markdown", 13 | "id": "cacbe8ae-4b9c-4a37-a9c0-ad1bbbb575a8", 14 | "metadata": {}, 15 | "source": [ 16 | "Python'da `if __name__ == '__main__'` yapısı, bir Python dosyasının modül olarak mı yoksa ana program olarak mı kullanıldığını kontrol etmek için kullanılır. \n", 17 | "\n", 18 | "**Direkt olarak çalışırdığımızda:**\n", 19 | "+ Eğer .py uzantılı dosyayı direkt olarak çalıştırılırsa `__name__`değeri default olarak `__main__` olduğundan dolayı `if __name__ == '__main__'` yapısının altında bulunan kodlar otomatik olarak çalışacaktır.\n", 20 | "\n", 21 | "**Modül olarak içeri aktardığımızda**\n", 22 | "+ Eğer .py uzantılı dosya import komutu ile içe aktarılırsa modüldeki tüm kodlar çalıştırılmaz, yalnızca tanımlanan sınıflar, fonksiyonlar, değişkenler vb. kullanılabilir hale gelir." 23 | ] 24 | }, 25 | { 26 | "cell_type": "markdown", 27 | "id": "5104155d-6d3d-4ae0-b4ab-51004be787ce", 28 | "metadata": {}, 29 | "source": [ 30 | "> **`if __name__ == '__main__'` Yapısı Olmadan**" 31 | ] 32 | }, 33 | { 34 | "cell_type": "markdown", 35 | "id": "6a43b7a6-0e47-4556-8e6a-a52faefd42f2", 36 | "metadata": {}, 37 | "source": [ 38 | "Bunu daha iyi görmek için aşağıdaki kod parçacığını ele alalım.\n", 39 | "\n", 40 | "Bu kodu direkt olarak çalıştırdığımızda program bize 6 adet unique değer verecektir. " 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 1, 46 | "id": "19e7899e-5b19-4f81-a058-cc73d653f56f", 47 | "metadata": {}, 48 | "outputs": [ 49 | { 50 | "name": "stdout", 51 | "output_type": "stream", 52 | "text": [ 53 | "Lotoyu kazanan sayilar: [3, 46, 4, 38, 49, 16]\n" 54 | ] 55 | } 56 | ], 57 | "source": [ 58 | "from random import sample\n", 59 | "# sample unique degerler uretir\n", 60 | "\n", 61 | "def loto_sayilarini_uret(min_sayi, max_sayi, adet):\n", 62 | " return sample(range(min_sayi, max_sayi + 1), adet)\n", 63 | "\n", 64 | "def main():\n", 65 | " min_sayi = 1\n", 66 | " max_sayi = 49\n", 67 | " adet = 6\n", 68 | " sayilar = loto_sayilarini_uret(min_sayi, max_sayi, adet)\n", 69 | " #sayilar.sort()\n", 70 | " print('Lotoyu kazanan sayilar:', sayilar)\n", 71 | " \n", 72 | "main()" 73 | ] 74 | }, 75 | { 76 | "cell_type": "markdown", 77 | "id": "0bca6e9f-96cf-445e-bf1a-adf344ac6c74", 78 | "metadata": {}, 79 | "source": [ 80 | "Şimdi bu kodu **[sayisal_loto.py](https://github.com/enesmanan/turkce-kitaplar/blob/main/Veri%20Bilimi%20%C4%B0%C3%A7in%20Python/sayisal_loto.py)** isimli bir python dosyasına kaydettiğimizi düşünelim.\n", 81 | "\n", 82 | "Şimdi de bu dosyayı içe aktaralım ve ne olduğuna bakalım." 83 | ] 84 | }, 85 | { 86 | "cell_type": "code", 87 | "execution_count": 2, 88 | "id": "195d1b83-1bb2-4be7-92bf-cedce9206a3b", 89 | "metadata": {}, 90 | "outputs": [ 91 | { 92 | "name": "stdout", 93 | "output_type": "stream", 94 | "text": [ 95 | "Lotoyu kazanan sayilar: [47, 1, 5, 42, 26, 16]\n" 96 | ] 97 | } 98 | ], 99 | "source": [ 100 | "import sayisal_loto" 101 | ] 102 | }, 103 | { 104 | "cell_type": "markdown", 105 | "id": "a3fe654d-266f-472f-b9a9-ab78a44edb96", 106 | "metadata": {}, 107 | "source": [ 108 | "Görüldüğü gibi program import ettiğimiz gibi baştan aşağı tüm kodları çalıştırdı ve ekrana 6 tane unique değer bastı." 109 | ] 110 | }, 111 | { 112 | "cell_type": "markdown", 113 | "id": "9aaa31ed-88ee-4455-80c3-62673e4a3a02", 114 | "metadata": {}, 115 | "source": [ 116 | "> **`if __name__ == '__main__'` Yapısı İle**" 117 | ] 118 | }, 119 | { 120 | "cell_type": "markdown", 121 | "id": "f1851626-189b-4eab-9786-b694931dfe95", 122 | "metadata": {}, 123 | "source": [ 124 | "Eğer programa `if __name__ == '__main__'` yapısını eklersek ne olduğuna bakalım." 125 | ] 126 | }, 127 | { 128 | "cell_type": "code", 129 | "execution_count": 3, 130 | "id": "4e16c8b7-04fa-48f3-892a-744d9f2aa8e2", 131 | "metadata": {}, 132 | "outputs": [ 133 | { 134 | "name": "stdout", 135 | "output_type": "stream", 136 | "text": [ 137 | "Lotoyu kazanan sayilar: [19, 38, 33, 26, 10, 17]\n" 138 | ] 139 | } 140 | ], 141 | "source": [ 142 | "from random import sample\n", 143 | "# sample unique degerler uretir\n", 144 | "\n", 145 | "def loto_sayilarini_uret(min_sayi, max_sayi, adet):\n", 146 | " return sample(range(min_sayi, max_sayi + 1), adet)\n", 147 | "\n", 148 | "def main():\n", 149 | " min_sayi = 1\n", 150 | " max_sayi = 49\n", 151 | " adet = 6\n", 152 | " sayilar = loto_sayilarini_uret(min_sayi, max_sayi, adet)\n", 153 | " #sayilar.sort()\n", 154 | " print('Lotoyu kazanan sayilar:', sayilar)\n", 155 | "\n", 156 | "if __name__ == '__main__':\n", 157 | " main()" 158 | ] 159 | }, 160 | { 161 | "cell_type": "markdown", 162 | "id": "bcf44fc1-3a54-4550-8705-cab89164c472", 163 | "metadata": {}, 164 | "source": [ 165 | "Bu kodu direkt olarak çalıştırdığımızda `__name__` değeri default olarak `__main__`'e eşit olduğundan dolayı program bize 6 adet unique değer verecektir. " 166 | ] 167 | }, 168 | { 169 | "cell_type": "markdown", 170 | "id": "95685092-652f-4f71-950d-9901b1e895c2", 171 | "metadata": {}, 172 | "source": [ 173 | "Peki bu kodu **sayisal_loto.py** isimli dosyadan import edersek ne olacak?" 174 | ] 175 | }, 176 | { 177 | "cell_type": "code", 178 | "execution_count": 4, 179 | "id": "632cd8d5-2128-4190-b170-25322882df41", 180 | "metadata": {}, 181 | "outputs": [], 182 | "source": [ 183 | "import sayisal_loto" 184 | ] 185 | }, 186 | { 187 | "cell_type": "markdown", 188 | "id": "4a6a78cd-e2d6-4be3-846b-74aaebddf421", 189 | "metadata": {}, 190 | "source": [ 191 | "Görüldüğü gibi bu sefer dosyayı import ettiğimizde programın `if __name__ == '__main__':` yapısı altında bulunan kodlar çalıştırılmadı. Bunun sebebi artık `__name__` yapısının değerinin `__main__`'e eşit olmamasıdır. `__name__` yapısının yeni değeri import ettiğimiz dosyanın adı olmuştur. Yani bu senaryoda **sayisal_loto** `__name__` değerine eşit olmuştur." 192 | ] 193 | }, 194 | { 195 | "cell_type": "markdown", 196 | "id": "e48818e5-dce1-4479-ba94-63e878aa7156", 197 | "metadata": {}, 198 | "source": [ 199 | "Şuan sadece dosyadaki fonksiyonlar kullanılabilir hale geldi. \n", 200 | "\n", 201 | "Eğer bunları kullanmak istersek çağırmamız gerekecek." 202 | ] 203 | }, 204 | { 205 | "cell_type": "code", 206 | "execution_count": 5, 207 | "id": "61ddad00-9f8e-4ae1-8706-7924784c5926", 208 | "metadata": {}, 209 | "outputs": [ 210 | { 211 | "name": "stdout", 212 | "output_type": "stream", 213 | "text": [ 214 | "Lotoyu kazanan sayilar: [14, 10, 20, 41, 45, 44]\n" 215 | ] 216 | } 217 | ], 218 | "source": [ 219 | "import sayisal_loto\n", 220 | "\n", 221 | "loto = sayisal_loto.main()\n", 222 | "\n", 223 | "loto" 224 | ] 225 | }, 226 | { 227 | "cell_type": "markdown", 228 | "id": "6e84beeb-4d5b-45be-b25f-80cbcf84ec1a", 229 | "metadata": {}, 230 | "source": [ 231 | "Bu yapıyı kullanarak, bir Python dosyasının hem modül olarak başka bir programda içe aktarıldığında kullanılabilmesini sağlayabilir hem de aynı dosyanın doğrudan çalıştırıldığında farklı bir işlevi yerine getirmesini sağlayabiliriz." 232 | ] 233 | }, 234 | { 235 | "cell_type": "markdown", 236 | "id": "547658ef-665d-4cd1-9c8e-ba47eacd0f94", 237 | "metadata": {}, 238 | "source": [ 239 | "### Avantajları\n", 240 | "+ Modül olarak kullanıldığında, dosyanın kodlarının yanlışlıkla çalıştırılması önlenir. Eğer bir dosya bir modül olarak başka bir dosyada kullanılıyorsa, `if __name__ == '__main__':` bloğu içindeki kodlar çalışmayacaktır. Böylece, modül olarak kullanılan dosyaların yanlışlıkla yan etki oluşturacak kodlar içermesi engellenir.\n", 241 | "+ Ana program olarak kullanıldığında, dosyanın test edilmesini sağlar. `if __name__ == '__main__':` bloğu içindeki kodlar, dosyanın doğrudan çalıştırıldığı zaman çalışacak ek işlemler veya test kodları olarak kullanılabilir. Böylece, dosyanın doğru şekilde çalıştığını test etmek için ayrı bir test dosyası yazmaya gerek kalmaz.\n", 242 | "\n", 243 | "### Dezavantajları\n", 244 | "+ Kodun karmaşıklığını artırabilir ve bazen gereksiz olabilir." 245 | ] 246 | } 247 | ], 248 | "metadata": { 249 | "kernelspec": { 250 | "display_name": "Python 3 (ipykernel)", 251 | "language": "python", 252 | "name": "python3" 253 | }, 254 | "language_info": { 255 | "codemirror_mode": { 256 | "name": "ipython", 257 | "version": 3 258 | }, 259 | "file_extension": ".py", 260 | "mimetype": "text/x-python", 261 | "name": "python", 262 | "nbconvert_exporter": "python", 263 | "pygments_lexer": "ipython3", 264 | "version": "3.9.16" 265 | } 266 | }, 267 | "nbformat": 4, 268 | "nbformat_minor": 5 269 | } 270 | -------------------------------------------------------------------------------- /Python ile Veri Bilimi/Extra/Wholesale customers data.csv: -------------------------------------------------------------------------------- 1 | Channel,Region,Fresh,Milk,Grocery,Frozen,Detergents_Paper,Delicassen 2 | 2,3,12669,9656,7561,214,2674,1338 3 | 2,3,7057,9810,9568,1762,3293,1776 4 | 2,3,6353,8808,7684,2405,3516,7844 5 | 1,3,13265,1196,4221,6404,507,1788 6 | 2,3,22615,5410,7198,3915,1777,5185 7 | 2,3,9413,8259,5126,666,1795,1451 8 | 2,3,12126,3199,6975,480,3140,545 9 | 2,3,7579,4956,9426,1669,3321,2566 10 | 1,3,5963,3648,6192,425,1716,750 11 | 2,3,6006,11093,18881,1159,7425,2098 12 | 2,3,3366,5403,12974,4400,5977,1744 13 | 2,3,13146,1124,4523,1420,549,497 14 | 2,3,31714,12319,11757,287,3881,2931 15 | 2,3,21217,6208,14982,3095,6707,602 16 | 2,3,24653,9465,12091,294,5058,2168 17 | 1,3,10253,1114,3821,397,964,412 18 | 2,3,1020,8816,12121,134,4508,1080 19 | 1,3,5876,6157,2933,839,370,4478 20 | 2,3,18601,6327,10099,2205,2767,3181 21 | 1,3,7780,2495,9464,669,2518,501 22 | 2,3,17546,4519,4602,1066,2259,2124 23 | 1,3,5567,871,2010,3383,375,569 24 | 1,3,31276,1917,4469,9408,2381,4334 25 | 2,3,26373,36423,22019,5154,4337,16523 26 | 2,3,22647,9776,13792,2915,4482,5778 27 | 2,3,16165,4230,7595,201,4003,57 28 | 1,3,9898,961,2861,3151,242,833 29 | 1,3,14276,803,3045,485,100,518 30 | 2,3,4113,20484,25957,1158,8604,5206 31 | 1,3,43088,2100,2609,1200,1107,823 32 | 1,3,18815,3610,11107,1148,2134,2963 33 | 1,3,2612,4339,3133,2088,820,985 34 | 1,3,21632,1318,2886,266,918,405 35 | 1,3,29729,4786,7326,6130,361,1083 36 | 1,3,1502,1979,2262,425,483,395 37 | 2,3,688,5491,11091,833,4239,436 38 | 1,3,29955,4362,5428,1729,862,4626 39 | 2,3,15168,10556,12477,1920,6506,714 40 | 2,3,4591,15729,16709,33,6956,433 41 | 1,3,56159,555,902,10002,212,2916 42 | 1,3,24025,4332,4757,9510,1145,5864 43 | 1,3,19176,3065,5956,2033,2575,2802 44 | 2,3,10850,7555,14961,188,6899,46 45 | 2,3,630,11095,23998,787,9529,72 46 | 2,3,9670,7027,10471,541,4618,65 47 | 2,3,5181,22044,21531,1740,7353,4985 48 | 2,3,3103,14069,21955,1668,6792,1452 49 | 2,3,44466,54259,55571,7782,24171,6465 50 | 2,3,11519,6152,10868,584,5121,1476 51 | 2,3,4967,21412,28921,1798,13583,1163 52 | 1,3,6269,1095,1980,3860,609,2162 53 | 1,3,3347,4051,6996,239,1538,301 54 | 2,3,40721,3916,5876,532,2587,1278 55 | 2,3,491,10473,11532,744,5611,224 56 | 1,3,27329,1449,1947,2436,204,1333 57 | 1,3,5264,3683,5005,1057,2024,1130 58 | 2,3,4098,29892,26866,2616,17740,1340 59 | 2,3,5417,9933,10487,38,7572,1282 60 | 1,3,13779,1970,1648,596,227,436 61 | 1,3,6137,5360,8040,129,3084,1603 62 | 2,3,8590,3045,7854,96,4095,225 63 | 2,3,35942,38369,59598,3254,26701,2017 64 | 2,3,7823,6245,6544,4154,4074,964 65 | 2,3,9396,11601,15775,2896,7677,1295 66 | 1,3,4760,1227,3250,3724,1247,1145 67 | 2,3,85,20959,45828,36,24231,1423 68 | 1,3,9,1534,7417,175,3468,27 69 | 2,3,19913,6759,13462,1256,5141,834 70 | 1,3,2446,7260,3993,5870,788,3095 71 | 1,3,8352,2820,1293,779,656,144 72 | 1,3,16705,2037,3202,10643,116,1365 73 | 1,3,18291,1266,21042,5373,4173,14472 74 | 1,3,4420,5139,2661,8872,1321,181 75 | 2,3,19899,5332,8713,8132,764,648 76 | 2,3,8190,6343,9794,1285,1901,1780 77 | 1,3,20398,1137,3,4407,3,975 78 | 1,3,717,3587,6532,7530,529,894 79 | 2,3,12205,12697,28540,869,12034,1009 80 | 1,3,10766,1175,2067,2096,301,167 81 | 1,3,1640,3259,3655,868,1202,1653 82 | 1,3,7005,829,3009,430,610,529 83 | 2,3,219,9540,14403,283,7818,156 84 | 2,3,10362,9232,11009,737,3537,2342 85 | 1,3,20874,1563,1783,2320,550,772 86 | 2,3,11867,3327,4814,1178,3837,120 87 | 2,3,16117,46197,92780,1026,40827,2944 88 | 2,3,22925,73498,32114,987,20070,903 89 | 1,3,43265,5025,8117,6312,1579,14351 90 | 1,3,7864,542,4042,9735,165,46 91 | 1,3,24904,3836,5330,3443,454,3178 92 | 1,3,11405,596,1638,3347,69,360 93 | 1,3,12754,2762,2530,8693,627,1117 94 | 2,3,9198,27472,32034,3232,18906,5130 95 | 1,3,11314,3090,2062,35009,71,2698 96 | 2,3,5626,12220,11323,206,5038,244 97 | 1,3,3,2920,6252,440,223,709 98 | 2,3,23,2616,8118,145,3874,217 99 | 1,3,403,254,610,774,54,63 100 | 1,3,503,112,778,895,56,132 101 | 1,3,9658,2182,1909,5639,215,323 102 | 2,3,11594,7779,12144,3252,8035,3029 103 | 2,3,1420,10810,16267,1593,6766,1838 104 | 2,3,2932,6459,7677,2561,4573,1386 105 | 1,3,56082,3504,8906,18028,1480,2498 106 | 1,3,14100,2132,3445,1336,1491,548 107 | 1,3,15587,1014,3970,910,139,1378 108 | 2,3,1454,6337,10704,133,6830,1831 109 | 2,3,8797,10646,14886,2471,8969,1438 110 | 2,3,1531,8397,6981,247,2505,1236 111 | 2,3,1406,16729,28986,673,836,3 112 | 1,3,11818,1648,1694,2276,169,1647 113 | 2,3,12579,11114,17569,805,6457,1519 114 | 1,3,19046,2770,2469,8853,483,2708 115 | 1,3,14438,2295,1733,3220,585,1561 116 | 1,3,18044,1080,2000,2555,118,1266 117 | 1,3,11134,793,2988,2715,276,610 118 | 1,3,11173,2521,3355,1517,310,222 119 | 1,3,6990,3880,5380,1647,319,1160 120 | 1,3,20049,1891,2362,5343,411,933 121 | 1,3,8258,2344,2147,3896,266,635 122 | 1,3,17160,1200,3412,2417,174,1136 123 | 1,3,4020,3234,1498,2395,264,255 124 | 1,3,12212,201,245,1991,25,860 125 | 2,3,11170,10769,8814,2194,1976,143 126 | 1,3,36050,1642,2961,4787,500,1621 127 | 1,3,76237,3473,7102,16538,778,918 128 | 1,3,19219,1840,1658,8195,349,483 129 | 2,3,21465,7243,10685,880,2386,2749 130 | 1,3,140,8847,3823,142,1062,3 131 | 1,3,42312,926,1510,1718,410,1819 132 | 1,3,7149,2428,699,6316,395,911 133 | 1,3,2101,589,314,346,70,310 134 | 1,3,14903,2032,2479,576,955,328 135 | 1,3,9434,1042,1235,436,256,396 136 | 1,3,7388,1882,2174,720,47,537 137 | 1,3,6300,1289,2591,1170,199,326 138 | 1,3,4625,8579,7030,4575,2447,1542 139 | 1,3,3087,8080,8282,661,721,36 140 | 1,3,13537,4257,5034,155,249,3271 141 | 1,3,5387,4979,3343,825,637,929 142 | 1,3,17623,4280,7305,2279,960,2616 143 | 1,3,30379,13252,5189,321,51,1450 144 | 1,3,37036,7152,8253,2995,20,3 145 | 1,3,10405,1596,1096,8425,399,318 146 | 1,3,18827,3677,1988,118,516,201 147 | 2,3,22039,8384,34792,42,12591,4430 148 | 1,3,7769,1936,2177,926,73,520 149 | 1,3,9203,3373,2707,1286,1082,526 150 | 1,3,5924,584,542,4052,283,434 151 | 1,3,31812,1433,1651,800,113,1440 152 | 1,3,16225,1825,1765,853,170,1067 153 | 1,3,1289,3328,2022,531,255,1774 154 | 1,3,18840,1371,3135,3001,352,184 155 | 1,3,3463,9250,2368,779,302,1627 156 | 1,3,622,55,137,75,7,8 157 | 2,3,1989,10690,19460,233,11577,2153 158 | 2,3,3830,5291,14855,317,6694,3182 159 | 1,3,17773,1366,2474,3378,811,418 160 | 2,3,2861,6570,9618,930,4004,1682 161 | 2,3,355,7704,14682,398,8077,303 162 | 2,3,1725,3651,12822,824,4424,2157 163 | 1,3,12434,540,283,1092,3,2233 164 | 1,3,15177,2024,3810,2665,232,610 165 | 2,3,5531,15726,26870,2367,13726,446 166 | 2,3,5224,7603,8584,2540,3674,238 167 | 2,3,15615,12653,19858,4425,7108,2379 168 | 2,3,4822,6721,9170,993,4973,3637 169 | 1,3,2926,3195,3268,405,1680,693 170 | 1,3,5809,735,803,1393,79,429 171 | 1,3,5414,717,2155,2399,69,750 172 | 2,3,260,8675,13430,1116,7015,323 173 | 2,3,200,25862,19816,651,8773,6250 174 | 1,3,955,5479,6536,333,2840,707 175 | 2,3,514,7677,19805,937,9836,716 176 | 1,3,286,1208,5241,2515,153,1442 177 | 2,3,2343,7845,11874,52,4196,1697 178 | 1,3,45640,6958,6536,7368,1532,230 179 | 1,3,12759,7330,4533,1752,20,2631 180 | 1,3,11002,7075,4945,1152,120,395 181 | 1,3,3157,4888,2500,4477,273,2165 182 | 1,3,12356,6036,8887,402,1382,2794 183 | 1,3,112151,29627,18148,16745,4948,8550 184 | 1,3,694,8533,10518,443,6907,156 185 | 1,3,36847,43950,20170,36534,239,47943 186 | 1,3,327,918,4710,74,334,11 187 | 1,3,8170,6448,1139,2181,58,247 188 | 1,3,3009,521,854,3470,949,727 189 | 1,3,2438,8002,9819,6269,3459,3 190 | 2,3,8040,7639,11687,2758,6839,404 191 | 2,3,834,11577,11522,275,4027,1856 192 | 1,3,16936,6250,1981,7332,118,64 193 | 1,3,13624,295,1381,890,43,84 194 | 1,3,5509,1461,2251,547,187,409 195 | 2,3,180,3485,20292,959,5618,666 196 | 1,3,7107,1012,2974,806,355,1142 197 | 1,3,17023,5139,5230,7888,330,1755 198 | 1,1,30624,7209,4897,18711,763,2876 199 | 2,1,2427,7097,10391,1127,4314,1468 200 | 1,1,11686,2154,6824,3527,592,697 201 | 1,1,9670,2280,2112,520,402,347 202 | 2,1,3067,13240,23127,3941,9959,731 203 | 2,1,4484,14399,24708,3549,14235,1681 204 | 1,1,25203,11487,9490,5065,284,6854 205 | 1,1,583,685,2216,469,954,18 206 | 1,1,1956,891,5226,1383,5,1328 207 | 2,1,1107,11711,23596,955,9265,710 208 | 1,1,6373,780,950,878,288,285 209 | 2,1,2541,4737,6089,2946,5316,120 210 | 1,1,1537,3748,5838,1859,3381,806 211 | 2,1,5550,12729,16767,864,12420,797 212 | 1,1,18567,1895,1393,1801,244,2100 213 | 2,1,12119,28326,39694,4736,19410,2870 214 | 1,1,7291,1012,2062,1291,240,1775 215 | 1,1,3317,6602,6861,1329,3961,1215 216 | 2,1,2362,6551,11364,913,5957,791 217 | 1,1,2806,10765,15538,1374,5828,2388 218 | 2,1,2532,16599,36486,179,13308,674 219 | 1,1,18044,1475,2046,2532,130,1158 220 | 2,1,18,7504,15205,1285,4797,6372 221 | 1,1,4155,367,1390,2306,86,130 222 | 1,1,14755,899,1382,1765,56,749 223 | 1,1,5396,7503,10646,91,4167,239 224 | 1,1,5041,1115,2856,7496,256,375 225 | 2,1,2790,2527,5265,5612,788,1360 226 | 1,1,7274,659,1499,784,70,659 227 | 1,1,12680,3243,4157,660,761,786 228 | 2,1,20782,5921,9212,1759,2568,1553 229 | 1,1,4042,2204,1563,2286,263,689 230 | 1,1,1869,577,572,950,4762,203 231 | 1,1,8656,2746,2501,6845,694,980 232 | 2,1,11072,5989,5615,8321,955,2137 233 | 1,1,2344,10678,3828,1439,1566,490 234 | 1,1,25962,1780,3838,638,284,834 235 | 1,1,964,4984,3316,937,409,7 236 | 1,1,15603,2703,3833,4260,325,2563 237 | 1,1,1838,6380,2824,1218,1216,295 238 | 1,1,8635,820,3047,2312,415,225 239 | 1,1,18692,3838,593,4634,28,1215 240 | 1,1,7363,475,585,1112,72,216 241 | 1,1,47493,2567,3779,5243,828,2253 242 | 1,1,22096,3575,7041,11422,343,2564 243 | 1,1,24929,1801,2475,2216,412,1047 244 | 1,1,18226,659,2914,3752,586,578 245 | 1,1,11210,3576,5119,561,1682,2398 246 | 1,1,6202,7775,10817,1183,3143,1970 247 | 2,1,3062,6154,13916,230,8933,2784 248 | 1,1,8885,2428,1777,1777,430,610 249 | 1,1,13569,346,489,2077,44,659 250 | 1,1,15671,5279,2406,559,562,572 251 | 1,1,8040,3795,2070,6340,918,291 252 | 1,1,3191,1993,1799,1730,234,710 253 | 2,1,6134,23133,33586,6746,18594,5121 254 | 1,1,6623,1860,4740,7683,205,1693 255 | 1,1,29526,7961,16966,432,363,1391 256 | 1,1,10379,17972,4748,4686,1547,3265 257 | 1,1,31614,489,1495,3242,111,615 258 | 1,1,11092,5008,5249,453,392,373 259 | 1,1,8475,1931,1883,5004,3593,987 260 | 1,1,56083,4563,2124,6422,730,3321 261 | 1,1,53205,4959,7336,3012,967,818 262 | 1,1,9193,4885,2157,327,780,548 263 | 1,1,7858,1110,1094,6818,49,287 264 | 1,1,23257,1372,1677,982,429,655 265 | 1,1,2153,1115,6684,4324,2894,411 266 | 2,1,1073,9679,15445,61,5980,1265 267 | 1,1,5909,23527,13699,10155,830,3636 268 | 2,1,572,9763,22182,2221,4882,2563 269 | 1,1,20893,1222,2576,3975,737,3628 270 | 2,1,11908,8053,19847,1069,6374,698 271 | 1,1,15218,258,1138,2516,333,204 272 | 1,1,4720,1032,975,5500,197,56 273 | 1,1,2083,5007,1563,1120,147,1550 274 | 1,1,514,8323,6869,529,93,1040 275 | 1,3,36817,3045,1493,4802,210,1824 276 | 1,3,894,1703,1841,744,759,1153 277 | 1,3,680,1610,223,862,96,379 278 | 1,3,27901,3749,6964,4479,603,2503 279 | 1,3,9061,829,683,16919,621,139 280 | 1,3,11693,2317,2543,5845,274,1409 281 | 2,3,17360,6200,9694,1293,3620,1721 282 | 1,3,3366,2884,2431,977,167,1104 283 | 2,3,12238,7108,6235,1093,2328,2079 284 | 1,3,49063,3965,4252,5970,1041,1404 285 | 1,3,25767,3613,2013,10303,314,1384 286 | 1,3,68951,4411,12609,8692,751,2406 287 | 1,3,40254,640,3600,1042,436,18 288 | 1,3,7149,2247,1242,1619,1226,128 289 | 1,3,15354,2102,2828,8366,386,1027 290 | 1,3,16260,594,1296,848,445,258 291 | 1,3,42786,286,471,1388,32,22 292 | 1,3,2708,2160,2642,502,965,1522 293 | 1,3,6022,3354,3261,2507,212,686 294 | 1,3,2838,3086,4329,3838,825,1060 295 | 2,2,3996,11103,12469,902,5952,741 296 | 1,2,21273,2013,6550,909,811,1854 297 | 2,2,7588,1897,5234,417,2208,254 298 | 1,2,19087,1304,3643,3045,710,898 299 | 2,2,8090,3199,6986,1455,3712,531 300 | 2,2,6758,4560,9965,934,4538,1037 301 | 1,2,444,879,2060,264,290,259 302 | 2,2,16448,6243,6360,824,2662,2005 303 | 2,2,5283,13316,20399,1809,8752,172 304 | 2,2,2886,5302,9785,364,6236,555 305 | 2,2,2599,3688,13829,492,10069,59 306 | 2,2,161,7460,24773,617,11783,2410 307 | 2,2,243,12939,8852,799,3909,211 308 | 2,2,6468,12867,21570,1840,7558,1543 309 | 1,2,17327,2374,2842,1149,351,925 310 | 1,2,6987,1020,3007,416,257,656 311 | 2,2,918,20655,13567,1465,6846,806 312 | 1,2,7034,1492,2405,12569,299,1117 313 | 1,2,29635,2335,8280,3046,371,117 314 | 2,2,2137,3737,19172,1274,17120,142 315 | 1,2,9784,925,2405,4447,183,297 316 | 1,2,10617,1795,7647,1483,857,1233 317 | 2,2,1479,14982,11924,662,3891,3508 318 | 1,2,7127,1375,2201,2679,83,1059 319 | 1,2,1182,3088,6114,978,821,1637 320 | 1,2,11800,2713,3558,2121,706,51 321 | 2,2,9759,25071,17645,1128,12408,1625 322 | 1,2,1774,3696,2280,514,275,834 323 | 1,2,9155,1897,5167,2714,228,1113 324 | 1,2,15881,713,3315,3703,1470,229 325 | 1,2,13360,944,11593,915,1679,573 326 | 1,2,25977,3587,2464,2369,140,1092 327 | 1,2,32717,16784,13626,60869,1272,5609 328 | 1,2,4414,1610,1431,3498,387,834 329 | 1,2,542,899,1664,414,88,522 330 | 1,2,16933,2209,3389,7849,210,1534 331 | 1,2,5113,1486,4583,5127,492,739 332 | 1,2,9790,1786,5109,3570,182,1043 333 | 2,2,11223,14881,26839,1234,9606,1102 334 | 1,2,22321,3216,1447,2208,178,2602 335 | 2,2,8565,4980,67298,131,38102,1215 336 | 2,2,16823,928,2743,11559,332,3486 337 | 2,2,27082,6817,10790,1365,4111,2139 338 | 1,2,13970,1511,1330,650,146,778 339 | 1,2,9351,1347,2611,8170,442,868 340 | 1,2,3,333,7021,15601,15,550 341 | 1,2,2617,1188,5332,9584,573,1942 342 | 2,3,381,4025,9670,388,7271,1371 343 | 2,3,2320,5763,11238,767,5162,2158 344 | 1,3,255,5758,5923,349,4595,1328 345 | 2,3,1689,6964,26316,1456,15469,37 346 | 1,3,3043,1172,1763,2234,217,379 347 | 1,3,1198,2602,8335,402,3843,303 348 | 2,3,2771,6939,15541,2693,6600,1115 349 | 2,3,27380,7184,12311,2809,4621,1022 350 | 1,3,3428,2380,2028,1341,1184,665 351 | 2,3,5981,14641,20521,2005,12218,445 352 | 1,3,3521,1099,1997,1796,173,995 353 | 2,3,1210,10044,22294,1741,12638,3137 354 | 1,3,608,1106,1533,830,90,195 355 | 2,3,117,6264,21203,228,8682,1111 356 | 1,3,14039,7393,2548,6386,1333,2341 357 | 1,3,190,727,2012,245,184,127 358 | 1,3,22686,134,218,3157,9,548 359 | 2,3,37,1275,22272,137,6747,110 360 | 1,3,759,18664,1660,6114,536,4100 361 | 1,3,796,5878,2109,340,232,776 362 | 1,3,19746,2872,2006,2601,468,503 363 | 1,3,4734,607,864,1206,159,405 364 | 1,3,2121,1601,2453,560,179,712 365 | 1,3,4627,997,4438,191,1335,314 366 | 1,3,2615,873,1524,1103,514,468 367 | 2,3,4692,6128,8025,1619,4515,3105 368 | 1,3,9561,2217,1664,1173,222,447 369 | 1,3,3477,894,534,1457,252,342 370 | 1,3,22335,1196,2406,2046,101,558 371 | 1,3,6211,337,683,1089,41,296 372 | 2,3,39679,3944,4955,1364,523,2235 373 | 1,3,20105,1887,1939,8164,716,790 374 | 1,3,3884,3801,1641,876,397,4829 375 | 2,3,15076,6257,7398,1504,1916,3113 376 | 1,3,6338,2256,1668,1492,311,686 377 | 1,3,5841,1450,1162,597,476,70 378 | 2,3,3136,8630,13586,5641,4666,1426 379 | 1,3,38793,3154,2648,1034,96,1242 380 | 1,3,3225,3294,1902,282,68,1114 381 | 2,3,4048,5164,10391,130,813,179 382 | 1,3,28257,944,2146,3881,600,270 383 | 1,3,17770,4591,1617,9927,246,532 384 | 1,3,34454,7435,8469,2540,1711,2893 385 | 1,3,1821,1364,3450,4006,397,361 386 | 1,3,10683,21858,15400,3635,282,5120 387 | 1,3,11635,922,1614,2583,192,1068 388 | 1,3,1206,3620,2857,1945,353,967 389 | 1,3,20918,1916,1573,1960,231,961 390 | 1,3,9785,848,1172,1677,200,406 391 | 1,3,9385,1530,1422,3019,227,684 392 | 1,3,3352,1181,1328,5502,311,1000 393 | 1,3,2647,2761,2313,907,95,1827 394 | 1,3,518,4180,3600,659,122,654 395 | 1,3,23632,6730,3842,8620,385,819 396 | 1,3,12377,865,3204,1398,149,452 397 | 1,3,9602,1316,1263,2921,841,290 398 | 2,3,4515,11991,9345,2644,3378,2213 399 | 1,3,11535,1666,1428,6838,64,743 400 | 1,3,11442,1032,582,5390,74,247 401 | 1,3,9612,577,935,1601,469,375 402 | 1,3,4446,906,1238,3576,153,1014 403 | 1,3,27167,2801,2128,13223,92,1902 404 | 1,3,26539,4753,5091,220,10,340 405 | 1,3,25606,11006,4604,127,632,288 406 | 1,3,18073,4613,3444,4324,914,715 407 | 1,3,6884,1046,1167,2069,593,378 408 | 1,3,25066,5010,5026,9806,1092,960 409 | 2,3,7362,12844,18683,2854,7883,553 410 | 2,3,8257,3880,6407,1646,2730,344 411 | 1,3,8708,3634,6100,2349,2123,5137 412 | 1,3,6633,2096,4563,1389,1860,1892 413 | 1,3,2126,3289,3281,1535,235,4365 414 | 1,3,97,3605,12400,98,2970,62 415 | 1,3,4983,4859,6633,17866,912,2435 416 | 1,3,5969,1990,3417,5679,1135,290 417 | 2,3,7842,6046,8552,1691,3540,1874 418 | 2,3,4389,10940,10908,848,6728,993 419 | 1,3,5065,5499,11055,364,3485,1063 420 | 2,3,660,8494,18622,133,6740,776 421 | 1,3,8861,3783,2223,633,1580,1521 422 | 1,3,4456,5266,13227,25,6818,1393 423 | 2,3,17063,4847,9053,1031,3415,1784 424 | 1,3,26400,1377,4172,830,948,1218 425 | 2,3,17565,3686,4657,1059,1803,668 426 | 2,3,16980,2884,12232,874,3213,249 427 | 1,3,11243,2408,2593,15348,108,1886 428 | 1,3,13134,9347,14316,3141,5079,1894 429 | 1,3,31012,16687,5429,15082,439,1163 430 | 1,3,3047,5970,4910,2198,850,317 431 | 1,3,8607,1750,3580,47,84,2501 432 | 1,3,3097,4230,16483,575,241,2080 433 | 1,3,8533,5506,5160,13486,1377,1498 434 | 1,3,21117,1162,4754,269,1328,395 435 | 1,3,1982,3218,1493,1541,356,1449 436 | 1,3,16731,3922,7994,688,2371,838 437 | 1,3,29703,12051,16027,13135,182,2204 438 | 1,3,39228,1431,764,4510,93,2346 439 | 2,3,14531,15488,30243,437,14841,1867 440 | 1,3,10290,1981,2232,1038,168,2125 441 | 1,3,2787,1698,2510,65,477,52 442 | -------------------------------------------------------------------------------- /Projelerle Yapay Zeka/Benzerlik_Algoritmaları/TF-IDF.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | " [Görsel kaynağı](https://towardsdatascience.com/tf-term-frequency-idf-inverse-document-frequency-from-scratch-in-python-6c2b61b78558)" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "## TF-IDF Nedir\n", 15 | "\n", 16 | "**Term Frequency – Inverse Document Frequency**\n", 17 | "\n", 18 | "TF-IDF, bir kelimenin doküman içerisindeki anlam yoğunluğunu istatistiksel yöntemlerle tespit ederek belirli bir ağırlık değeri bulmayı amaçlar. Ortaya çıkan bu TF-IDF değeri, terimin dokümanda ne kadar sık geçtiği ve doküman kümesinde ne kadar nadir olduğu ile orantılıdır. Böylece, dokümanların içeriğini yansıtan ve ayırt edici kelimeleri tespit etmek mümkün olur." 19 | ] 20 | }, 21 | { 22 | "cell_type": "markdown", 23 | "metadata": {}, 24 | "source": [ 25 | "### TF (Term Frequency)\n", 26 | "**TF = (Belirli bir kelimenin belgedeki tekrar sayısı) / (Dokümandaki toplam kelime sayısı)**\n", 27 | "\n", 28 | "Örnek olarak, bir dokümanda *filhakika* kelimesisnin 10 kere geçtiğini varsayalım ve dokümanın tamamı da 500 kelime olsun. Bu durumda, filhakika kelimesinin terim frekansı $10/500 = 0.02$ olarak bulunmuş olur.\n", 29 | "\n", 30 | "Bir terimin sık kullanılması, genellikle o terimin önemli bir bilgi içerdiğini gösterirken, tüm doküman kümesinde nadir bulunması, terimin diğerlerinden farklı ve özgün olduğu anlamına gelebilir. \n", 31 | "\n", 32 | "Ayrıca burada şöyle bir handikap vardır, **Stop Words**. Bunun ne ifade ettiğini anlamak için Türkçe dilindeki stop words sayılan kelimelere baktığımızda *ama, bu, şu, ve, gibi* vs. sözcükler görürüz. Bu sözcükler doküman içerisinde çokça geçebilir olmasına rağmen bun kelimelerin temsil ettiği büyük bir anlam yoktur ve sıklıklarından dolayı TF işleminde gereksiz bir ağırlık kazanabilirler. Dolayısıyla stop words olarak adlandırılan bu kelimlerin işlemin daha anlamlı olabilmesi için, kelime vektörleri oluşturulmadan önce dokumandan ayıklanmalıdırlar. (İngilizce Stop Words örnekleri: *is, on, the, in, of, it* etc.)" 33 | ] 34 | }, 35 | { 36 | "cell_type": "markdown", 37 | "metadata": {}, 38 | "source": [ 39 | "### IDF (Inverse Document Frequency)\n", 40 | "\n", 41 | "**IDF = log((Toplam doküman sayısı) / (Belirli kelime içeren doküman sayısı))**\n", 42 | "\n", 43 | "$IDF(t) = log(N / (1 + DF(t)))$\n", 44 | "\n", 45 | "$IDF = \\log\\left(\\frac{\\text{Toplam Dokuman Sayisi}}{\\text{Kelimenin Essiz Dokuman Sayisi}}\\right)$\n", 46 | "\n", 47 | "\n", 48 | "Burada:\n", 49 | " - N: Toplam doküman sayısı.\n", 50 | " - DF(t): Belirli bir kelimenin geçtiği doküman sayısı.\n", 51 | " \n", 52 | "IDF, bir kelimenin doküman kümesi içerisindeki nadirliğini gösterir. Bu sayede kelimenin doküman içerisindeki önemini belirlemeye yardımcı olur. IDF değeri, tüm dokümanlar üzerinden hesaplanır.\n", 53 | "\n", 54 | "IDF, logaritmik bir ölçeğe sahip olduğundan dolayı nadir kelimelerin büyük değerler almasını engeller ve daha dengeli bir ölçüm değeri sunar. Eğer bir kelime doküman kümesi içerisinde sıkça geçiyorsa, IDF değeri düşük olacaktır ve bu kelime, muhtemelen genel bilgi taşıyan ve metinler arasında ayrımcılık yapmayan yaygın bir kelimeye tekabul edecektir. Tüm dokümanlar içerisinde az geçen bir kelimenin IDF değeri ise büyük olacaktır." 55 | ] 56 | }, 57 | { 58 | "cell_type": "markdown", 59 | "metadata": {}, 60 | "source": [ 61 | "### TF-IDF\n", 62 | "TF-IDF, her terimin doküman içerisindeki sıklığını (TF) ve tüm doküman koleksiyonu içerisinde o terimin ne kadar yaygın olduğunu (IDF) birleştirerek (çarparak) hesaplanır. \n", 63 | "\n", 64 | "$TF-IDF(d, t) = TF(d, t) * IDF(t)$\n", 65 | "\n", 66 | "Burada:\n", 67 | "- $TF(d, t)$ : Belirli bir dokümandaki (d) terimin (t) geçme sıklığı. Yani, dokümandaki terimin tekrar sayısı.\n", 68 | "- $IDF(t$) : Tüm dokümanlardaki (corpus) terimin (t) geçme sıklığının tersi. \n", 69 | "\n", 70 | "Sonuç olarak en yüksek ağırlık değeri, bir kelimenin az sayıda dokümanda birçok kez geçtiği zaman ortaya çıkar." 71 | ] 72 | }, 73 | { 74 | "cell_type": "markdown", 75 | "metadata": {}, 76 | "source": [ 77 | "## Python ile Uygulama" 78 | ] 79 | }, 80 | { 81 | "cell_type": "markdown", 82 | "metadata": {}, 83 | "source": [ 84 | "### Stop Words" 85 | ] 86 | }, 87 | { 88 | "cell_type": "code", 89 | "execution_count": 1, 90 | "metadata": {}, 91 | "outputs": [], 92 | "source": [ 93 | "stop_words = ['acaba', 'ama', 'ancak', 'artık', 'asla', 'aslında', 'az', 'bana', 'bazen', 'bazı', 'belki',\n", 94 | " 'ben','beni', 'bu','benim', 'beri', 'bile', 'bir', 'biri', 'birkaç', 'birçok', 'şey', 'daha',\n", 95 | " 'az', 'gene','gibi', 'da', 'de', 'en', 'daha','diğer', 'diğeri' , 'diye', 'dolayı', 'fakat',\n", 96 | " 'falan', 'filan', 'gibi', 'hala', 'hatta', 'ise', 'kim', 'kime', 'niye', 'oysa', 'pek',\n", 97 | " 'rağmen', 'sanki', 'şayet', 'sen', 'siz', 'tabii', 've', 'veya', 'zira']" 98 | ] 99 | }, 100 | { 101 | "cell_type": "markdown", 102 | "metadata": {}, 103 | "source": [ 104 | "### TF işlemi" 105 | ] 106 | }, 107 | { 108 | "cell_type": "code", 109 | "execution_count": 2, 110 | "metadata": {}, 111 | "outputs": [ 112 | { 113 | "name": "stdout", 114 | "output_type": "stream", 115 | "text": [ 116 | "örnek: 0.2857142857142857\n", 117 | "dokümandır: 0.14285714285714285\n", 118 | "dokümanda: 0.14285714285714285\n", 119 | "tf: 0.14285714285714285\n", 120 | "işlemi: 0.14285714285714285\n", 121 | "yapacağız: 0.14285714285714285\n" 122 | ] 123 | } 124 | ], 125 | "source": [ 126 | "import re\n", 127 | "\n", 128 | "def kelime_listesi(dokuman):\n", 129 | " liste = []\n", 130 | " for kelime in dokuman: \n", 131 | " kelimeler = kelime.split(' ') \n", 132 | " for kelime in kelimeler: \n", 133 | " kelime = re.sub(r'[^\\w\\s]', '', kelime) \n", 134 | " if kelime.lower() not in stop_words:\n", 135 | " liste.append(kelime.lower())\n", 136 | " return liste\n", 137 | "\n", 138 | "def dokuman_boyutu(liste):\n", 139 | " return len(liste)\n", 140 | "\n", 141 | "def frekans(liste):\n", 142 | " frekans = {}\n", 143 | " for kelime in liste:\n", 144 | " if kelime in frekans:\n", 145 | " frekans[kelime] += 1\n", 146 | " else:\n", 147 | " frekans[kelime] = 1\n", 148 | " return frekans\n", 149 | "\n", 150 | "def tf_degeri(frekans, boyut):\n", 151 | " for anahtar, deger in frekans.items():\n", 152 | " tf = deger/boyut\n", 153 | " print(f'{anahtar}: {tf}')\n", 154 | " \n", 155 | "def main(dokuman):\n", 156 | " degerler = kelime_listesi(dokuman)\n", 157 | " boyut = dokuman_boyutu(degerler)\n", 158 | " frekans_degerleri = frekans(degerler)\n", 159 | " tf = tf_degeri(frekans_degerleri, boyut)\n", 160 | " \n", 161 | "if __name__ == '__main__':\n", 162 | " dokuman = ['Bu bir örnek dokümandır.', 'Bu örnek dokümanda TF işlemi yapacağız.']\n", 163 | " main(dokuman) " 164 | ] 165 | }, 166 | { 167 | "cell_type": "markdown", 168 | "metadata": {}, 169 | "source": [ 170 | "### TF-IDF işlemi" 171 | ] 172 | }, 173 | { 174 | "cell_type": "code", 175 | "execution_count": 3, 176 | "metadata": {}, 177 | "outputs": [ 178 | { 179 | "name": "stdout", 180 | "output_type": "stream", 181 | "text": [ 182 | "\n", 183 | " TF degerleri: \n", 184 | "\n", 185 | "platonun: 0.08695652173913043\n", 186 | "devletinde: 0.043478260869565216\n", 187 | "kişinin: 0.043478260869565216\n", 188 | "başkasına: 0.043478260869565216\n", 189 | "değil: 0.043478260869565216\n", 190 | "kendisine: 0.08695652173913043\n", 191 | "köle: 0.13043478260869565\n", 192 | "olma: 0.08695652173913043\n", 193 | "düşüncesi: 0.08695652173913043\n", 194 | "vardır: 0.08695652173913043\n", 195 | "devlet: 0.043478260869565216\n", 196 | "eserinde: 0.043478260869565216\n", 197 | "başka: 0.043478260869565216\n", 198 | "birisine: 0.043478260869565216\n", 199 | "olmaktansa: 0.043478260869565216\n", 200 | "insanın: 0.043478260869565216\n", 201 | "\n", 202 | "---------------------------\n", 203 | "\n", 204 | " IDF degerleri: \n", 205 | "\n", 206 | "platonun: 0.6931471805599453\n", 207 | "devletinde: 1.0986122886681098\n", 208 | "kişinin: 1.0986122886681098\n", 209 | "başkasına: 1.0986122886681098\n", 210 | "değil: 1.0986122886681098\n", 211 | "kendisine: 0.6931471805599453\n", 212 | "köle: 0.5108256237659906\n", 213 | "olma: 0.6931471805599453\n", 214 | "düşüncesi: 0.6931471805599453\n", 215 | "vardır: 0.6931471805599453\n", 216 | "devlet: 1.0986122886681098\n", 217 | "eserinde: 1.0986122886681098\n", 218 | "başka: 1.0986122886681098\n", 219 | "birisine: 1.0986122886681098\n", 220 | "olmaktansa: 1.0986122886681098\n", 221 | "insanın: 1.0986122886681098\n" 222 | ] 223 | } 224 | ], 225 | "source": [ 226 | "import re\n", 227 | "import math \n", 228 | "\n", 229 | "def kelime_listesi(dokuman):\n", 230 | " liste = []\n", 231 | " for kelime in dokuman: \n", 232 | " kelimeler = kelime.split(' ') \n", 233 | " for kelime in kelimeler: \n", 234 | " kelime = re.sub(r'[^\\w\\s]', '', kelime) \n", 235 | " if kelime.lower() not in stop_words:\n", 236 | " liste.append(kelime.lower())\n", 237 | " return liste\n", 238 | "\n", 239 | "def dokuman_boyutu(liste):\n", 240 | " return len(liste)\n", 241 | "\n", 242 | "def frekans(liste):\n", 243 | " frekans = {}\n", 244 | " for kelime in liste:\n", 245 | " if kelime in frekans:\n", 246 | " frekans[kelime] += 1\n", 247 | " else:\n", 248 | " frekans[kelime] = 1\n", 249 | " return frekans\n", 250 | "\n", 251 | "def tf_degeri(frekans, boyut):\n", 252 | " for anahtar, deger in frekans.items():\n", 253 | " tf = deger/boyut\n", 254 | " print(f'{anahtar}: {tf}')\n", 255 | "\n", 256 | "\n", 257 | "def idf_degeri(frekans_degerleri): \n", 258 | " idf_boyut = dokuman_boyutu(dokuman)\n", 259 | " for anahtar, deger in frekans_degerleri.items():\n", 260 | " idf = math.log(idf_boyut / deger)\n", 261 | " print(f'{anahtar}: {idf}')\n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | "def main(dokuman):\n", 266 | " \n", 267 | " degerler = kelime_listesi(dokuman)\n", 268 | " boyut = dokuman_boyutu(degerler)\n", 269 | " \n", 270 | " frekans_degerleri = frekans(degerler)\n", 271 | " \n", 272 | " print('\\n TF degerleri: \\n')\n", 273 | " tf = tf_degeri(frekans_degerleri, boyut)\n", 274 | " print('\\n---------------------------')\n", 275 | " print('\\n IDF degerleri: \\n')\n", 276 | " idf = idf_degeri(frekans_degerleri)\n", 277 | " \n", 278 | "if __name__ == '__main__':\n", 279 | " dokuman = ['Platon\\'un devletinde kişinin başkasına değil, kendisine köle olma düşüncesi vardır.',\n", 280 | " 'Platon\\'un devlet eserinde başka birisine köle olmaktansa insanın kendisine köle olma düşüncesi vardır.']\n", 281 | " main(dokuman) " 282 | ] 283 | }, 284 | { 285 | "cell_type": "markdown", 286 | "metadata": {}, 287 | "source": [ 288 | "### TF-IDF Değerleri" 289 | ] 290 | }, 291 | { 292 | "cell_type": "code", 293 | "execution_count": 4, 294 | "metadata": {}, 295 | "outputs": [ 296 | { 297 | "name": "stdout", 298 | "output_type": "stream", 299 | "text": [ 300 | "\n", 301 | "TF degerleri:\n", 302 | "\n", 303 | "platonun: 0.08695652173913043\n", 304 | "devletinde: 0.043478260869565216\n", 305 | "kişinin: 0.043478260869565216\n", 306 | "başkasına: 0.043478260869565216\n", 307 | "değil: 0.043478260869565216\n", 308 | "kendisine: 0.08695652173913043\n", 309 | "köle: 0.13043478260869565\n", 310 | "olma: 0.08695652173913043\n", 311 | "düşüncesi: 0.08695652173913043\n", 312 | "vardır: 0.08695652173913043\n", 313 | "devlet: 0.043478260869565216\n", 314 | "eserinde: 0.043478260869565216\n", 315 | "başka: 0.043478260869565216\n", 316 | "birisine: 0.043478260869565216\n", 317 | "olmaktansa: 0.043478260869565216\n", 318 | "insanın: 0.043478260869565216\n", 319 | "\n", 320 | "---------------------------\n", 321 | "\n", 322 | "IDF degerleri:\n", 323 | "\n", 324 | "platonun: 0.6931471805599453\n", 325 | "devletinde: 1.0986122886681098\n", 326 | "kişinin: 1.0986122886681098\n", 327 | "başkasına: 1.0986122886681098\n", 328 | "değil: 1.0986122886681098\n", 329 | "kendisine: 0.6931471805599453\n", 330 | "köle: 0.5108256237659906\n", 331 | "olma: 0.6931471805599453\n", 332 | "düşüncesi: 0.6931471805599453\n", 333 | "vardır: 0.6931471805599453\n", 334 | "devlet: 1.0986122886681098\n", 335 | "eserinde: 1.0986122886681098\n", 336 | "başka: 1.0986122886681098\n", 337 | "birisine: 1.0986122886681098\n", 338 | "olmaktansa: 1.0986122886681098\n", 339 | "insanın: 1.0986122886681098\n", 340 | "\n", 341 | "---------------------------\n", 342 | "\n", 343 | "TF-IDF degerleri:\n", 344 | "\n", 345 | "platonun: 0.06027366787477785\n", 346 | "devletinde: 0.047765751681222164\n", 347 | "kişinin: 0.047765751681222164\n", 348 | "başkasına: 0.047765751681222164\n", 349 | "değil: 0.047765751681222164\n", 350 | "kendisine: 0.06027366787477785\n", 351 | "köle: 0.06662942918686834\n", 352 | "olma: 0.06027366787477785\n", 353 | "düşüncesi: 0.06027366787477785\n", 354 | "vardır: 0.06027366787477785\n", 355 | "devlet: 0.047765751681222164\n", 356 | "eserinde: 0.047765751681222164\n", 357 | "başka: 0.047765751681222164\n", 358 | "birisine: 0.047765751681222164\n", 359 | "olmaktansa: 0.047765751681222164\n", 360 | "insanın: 0.047765751681222164\n" 361 | ] 362 | } 363 | ], 364 | "source": [ 365 | "import re\n", 366 | "import math \n", 367 | "\n", 368 | "stop_words = ['acaba', 'ama', 'ancak', 'artık', 'asla', 'aslında', 'az', 'bana', 'bazen', 'bazı', 'belki',\n", 369 | " 'ben','beni', 'bu','benim', 'beri', 'bile', 'bir', 'biri', 'birkaç', 'birçok', 'şey', 'daha',\n", 370 | " 'az', 'gene','gibi', 'da', 'de', 'en', 'daha','diğer', 'diğeri' , 'diye', 'dolayı', 'fakat',\n", 371 | " 'falan', 'filan', 'gibi', 'hala', 'hatta', 'ise', 'kim', 'kime', 'niye', 'oysa', 'pek',\n", 372 | " 'rağmen', 'sanki', 'şayet', 'sen', 'siz', 'tabii', 've', 'veya', 'zira']\n", 373 | "\n", 374 | "def kelime_listesi(dokuman):\n", 375 | " liste = []\n", 376 | " for kelime in dokuman: \n", 377 | " kelimeler = kelime.split(' ')\n", 378 | " for kelime in kelimeler:\n", 379 | " kelime = re.sub(r'[^\\w\\s]', '', kelime)\n", 380 | " if kelime.lower() not in stop_words:\n", 381 | " liste.append(kelime.lower())\n", 382 | " return liste\n", 383 | "\n", 384 | "def dokuman_boyutu(liste):\n", 385 | " return len(liste)\n", 386 | "\n", 387 | "def frekans(liste):\n", 388 | " frekans = {}\n", 389 | " for kelime in liste:\n", 390 | " if kelime in frekans:\n", 391 | " frekans[kelime] += 1\n", 392 | " else:\n", 393 | " frekans[kelime] = 1\n", 394 | " return frekans\n", 395 | "\n", 396 | "def tf_degeri(frekans, boyut):\n", 397 | " tf_values = {}\n", 398 | " for anahtar, deger in frekans.items():\n", 399 | " tf = deger / boyut\n", 400 | " tf_values[anahtar] = tf\n", 401 | " return tf_values\n", 402 | "\n", 403 | "def idf_degeri(frekans_degerleri, idf_boyut):\n", 404 | " idf_values = {}\n", 405 | " for anahtar, deger in frekans_degerleri.items():\n", 406 | " idf = math.log(idf_boyut / deger)\n", 407 | " idf_values[anahtar] = idf\n", 408 | " return idf_values\n", 409 | "\n", 410 | "def main(dokuman):\n", 411 | " degerler = kelime_listesi(dokuman)\n", 412 | " boyut = dokuman_boyutu(degerler)\n", 413 | " \n", 414 | " frekans_degerleri = frekans(degerler)\n", 415 | " \n", 416 | " print('\\nTF degerleri:\\n')\n", 417 | " tf_values = tf_degeri(frekans_degerleri, boyut)\n", 418 | " for kelime, tf in tf_values.items():\n", 419 | " print(f'{kelime}: {tf}')\n", 420 | " \n", 421 | " print('\\n---------------------------\\n')\n", 422 | " print('IDF degerleri:\\n')\n", 423 | " idf_boyut = len(dokuman)\n", 424 | " idf_values = idf_degeri(frekans_degerleri, idf_boyut)\n", 425 | " for kelime, idf in idf_values.items():\n", 426 | " print(f'{kelime}: {idf}')\n", 427 | "\n", 428 | " print('\\n---------------------------\\n')\n", 429 | " print('TF-IDF degerleri:\\n')\n", 430 | " for kelime in frekans_degerleri:\n", 431 | " tf_idf = tf_values[kelime] * idf_values[kelime]\n", 432 | " print(f'{kelime}: {tf_idf}')\n", 433 | "\n", 434 | "if __name__ == '__main__':\n", 435 | " dokuman = ['Platon\\'un devletinde kişinin başkasına değil, kendisine köle olma düşüncesi vardır.',\n", 436 | " 'Platon\\'un devlet eserinde başka birisine köle olmaktansa insanın kendisine köle olma düşüncesi vardır.']\n", 437 | " main(dokuman)" 438 | ] 439 | } 440 | ], 441 | "metadata": { 442 | "kernelspec": { 443 | "display_name": "Python 3 (ipykernel)", 444 | "language": "python", 445 | "name": "python3" 446 | }, 447 | "language_info": { 448 | "codemirror_mode": { 449 | "name": "ipython", 450 | "version": 3 451 | }, 452 | "file_extension": ".py", 453 | "mimetype": "text/x-python", 454 | "name": "python", 455 | "nbconvert_exporter": "python", 456 | "pygments_lexer": "ipython3", 457 | "version": "3.9.16" 458 | } 459 | }, 460 | "nbformat": 4, 461 | "nbformat_minor": 4 462 | } 463 | -------------------------------------------------------------------------------- /Veri Bilimi İçin Python/sozluk.txt: -------------------------------------------------------------------------------- 1 | a: bir 2 | ability: yetenek 3 | able: yapabilen 4 | about: hakkında 5 | above: yukarıda 6 | accept: kabul etmek 7 | according: göre 8 | account: hesap 9 | across: karşıdan karşıya 10 | act: hareket etmek 11 | action: hareket 12 | activity: aktivite 13 | actually: aslında 14 | add: eklemek 15 | address: adres 16 | administration: yönetim 17 | admit: kabul etmek 18 | adult: yetişkin 19 | affect: etkilemek 20 | after: sonra 21 | again: tekrar 22 | against: karşı 23 | age: yaş 24 | agency: ajans 25 | agent: ajan 26 | ago: önce 27 | agree: katılmak 28 | agreement: anlaşma 29 | ahead: önde 30 | air: hava 31 | all: tümü 32 | allow: izin vermek 33 | almost: neredeyse 34 | alone: yalnız 35 | along: boyunca 36 | already: zaten 37 | also: ayrıca 38 | although: rağmen 39 | always: her zaman 40 | American: Amerikan 41 | among: arasında 42 | amount: miktar 43 | analysis: analiz 44 | and: ve 45 | animal: hayvan 46 | another: başka 47 | answer: cevap 48 | any: herhangi bir 49 | anyone: herhangi birisi 50 | anything: herhangi bir şey 51 | appear: görünmek 52 | apply: uygulamak 53 | approach: yaklaşım 54 | area: bölge 55 | argue: tartışmak 56 | arm: kol 57 | around: etrafında 58 | arrive: varmak 59 | art: sanat 60 | article: makale 61 | artist: sanatçı 62 | as: olarak 63 | ask: sormak 64 | assume: varsaymak 65 | at: de 66 | attack: saldırı 67 | attention: dikkat 68 | attorney: avukat 69 | audience: seyirci 70 | author: yazar 71 | authority: otorite 72 | available: müsait 73 | avoid: kaçınmak 74 | away: uzakta 75 | baby: bebek 76 | back: geri 77 | bad: kötü 78 | bag: çanta 79 | ball: top 80 | bank: banka 81 | bar: bar 82 | base: temel 83 | be: ol 84 | beat: yenmek 85 | beautiful: güzel 86 | because: çünkü 87 | become: olmak 88 | bed: yatak 89 | before: önce 90 | begin: başlamak 91 | behavior: davranış 92 | behind: arkasında 93 | believe: inanmak 94 | benefit: fayda 95 | best: en iyi 96 | better: daha iyi 97 | between: arasında 98 | beyond: ötesinde 99 | big: büyük 100 | bill: fatura 101 | billion: milyar 102 | bit: parça 103 | black: siyah 104 | blood: kan 105 | blue: mavi 106 | board: tahta 107 | body: vücut 108 | book: kitap 109 | born: doğmak 110 | both: her ikisi 111 | box: kutu 112 | boy: erkek çocuk 113 | break: kırmak 114 | bring: getirmek 115 | brother: erkek kardeş 116 | budget: bütçe 117 | build: inşa etmek 118 | building: bina 119 | business: iş 120 | but: ama 121 | buy: satın almak 122 | by: tarafından 123 | call: aramak 124 | camera: kamera 125 | campaign: kampanya 126 | can: yapabilir 127 | cancer: kanser 128 | candidate: aday 129 | capital: sermaye 130 | car: araba 131 | card: kart 132 | care: ilgi 133 | career: kariyer 134 | carry: taşımak 135 | case: durum 136 | catch: yakalamak 137 | cause: neden olmak 138 | cell: hücre 139 | center: merkez 140 | central: merkezi 141 | century: yüzyıl 142 | certain: belli 143 | certainly: kesinlikle 144 | chair: sandalye 145 | challenge: meydan okuma 146 | chance: şans 147 | change: değişiklik 148 | character: karakter 149 | charge: ücretlendirme 150 | check: kontrol etmek 151 | child: çocuk 152 | choice: seçim 153 | choose: seçmek 154 | church: kilise 155 | citizen: vatandaş 156 | city: şehir 157 | civil: sivil 158 | claim: iddia etmek 159 | class: sınıf 160 | clear: açık 161 | clearly: açıkça 162 | close: kapatmak 163 | coach: antrenör 164 | cold: soğuk 165 | collection: koleksiyon 166 | college: üniversite 167 | color: renk 168 | come: gelmek 169 | commercial: ticari 170 | common: ortak 171 | community: topluluk 172 | company: şirket 173 | compare: karşılaştırmak 174 | computer: bilgisayar 175 | concern: endişe 176 | condition: durum 177 | conference: konferans 178 | Congress: Kongre 179 | consider: düşünmek 180 | consumer: tüketici 181 | contain: içermek 182 | continue: devam etmek 183 | control: kontrol 184 | cost: maliyet 185 | could: olabilirdi 186 | country: ülke 187 | couple: çift 188 | course: tabii ki 189 | court: mahkeme 190 | cover: kaplamak 191 | create: yaratmak 192 | crime: suç 193 | cultural: kültürel 194 | culture: kültür 195 | cup: fincan 196 | current: güncel 197 | customer: müşteri 198 | cut: kesmek 199 | dark: karanlık 200 | data: veri 201 | daughter: kız 202 | day: gün 203 | dead: ölü 204 | deal: anlaşma 205 | death: ölüm 206 | debate: tartışma 207 | decade: on yıl 208 | decide: karar vermek 209 | decision: karar 210 | deep: derin 211 | defense: savunma 212 | degree: derece 213 | Democrat: Demokrat 214 | democratic: demokratik 215 | describe: tanımlamak 216 | design: tasarlamak 217 | despite: rağmen 218 | detail: detay 219 | determine: belirlemek 220 | develop: geliştirmek 221 | development: gelişme 222 | die: ölmek 223 | difference: fark 224 | different: farklı 225 | difficult: zor 226 | dinner: akşam yemeği 227 | direction: yön 228 | director: yönetmen 229 | discover: keşfetmek 230 | discuss: tartışmak 231 | discussion: tartışma 232 | disease: hastalık 233 | do: yapmak 234 | doctor: doktor 235 | dog: köpek 236 | door: kapı 237 | down: aşağı 238 | draw: çizmek 239 | dream: rüya 240 | drive: sürmek 241 | drop: düşürmek 242 | drug: ilaç 243 | during: sırasında 244 | each: her biri 245 | early: erken 246 | east: doğu 247 | easy: kolay 248 | eat: yemek 249 | economic: ekonomik 250 | economy : ekonomi 251 | edge: kenar 252 | education: eğitim 253 | effect: etki 254 | effort: çaba 255 | eight: sekiz 256 | either: her ikisi de 257 | election: seçim 258 | else: başka 259 | employee: çalışan 260 | end: son 261 | energy: enerji 262 | enjoy: zevk almak 263 | enough: yeterli 264 | enter: girmek 265 | entire: tüm 266 | environment: çevre 267 | environmental: çevresel 268 | especially: özellikle 269 | establish: kurmak 270 | even: hatta 271 | evening: akşam 272 | event: olay 273 | ever: hiç 274 | every: her 275 | everybody: herkes 276 | everyone: herkes 277 | everything: her şey 278 | evidence: kanıt 279 | exactly: tam olarak 280 | example: örnek 281 | executive: yönetici 282 | exist: var olmak 283 | expect: beklemek 284 | experience: deneyim 285 | expert: uzman 286 | explain: açıklamak 287 | eye: göz 288 | face: yüzleşmek 289 | fact: gerçek 290 | factor: faktör 291 | fail: başarısız olmak 292 | fall: düşmek 293 | family: aile 294 | far: uzak 295 | fast: hızlı 296 | father: baba 297 | fear: korku 298 | federal: federal 299 | feel: hissetmek 300 | feeling: hiss 301 | few: birkaç 302 | field: alan 303 | fight: savaşmak 304 | figure: şekil 305 | fill: doldurmak 306 | film: film 307 | final: son 308 | finally: sonunda 309 | financial: finansal 310 | find: bulmak 311 | fine: iyi 312 | finger: parmak 313 | finish: bitirmek 314 | fire: yangın 315 | firm: firma 316 | first: ilk 317 | fish: balık 318 | five: beş 319 | floor: zemin 320 | fly: uçmak 321 | focus: odaklanmak 322 | follow: izlemek 323 | food: yiyecek 324 | foot: ayak 325 | for: için 326 | force: zorlamak 327 | foreign: yabancı 328 | forget: unutmak 329 | form: biçim 330 | former: eski 331 | forward: ileri 332 | four: dört 333 | free: ücretsiz 334 | friend: arkadaş 335 | from: dan 336 | front: ön 337 | full: tam 338 | fully: tamamen 339 | fun: eğlence 340 | function: fonksiyon 341 | fund: fon 342 | future: gelecek 343 | game: oyun 344 | garden: bahçe 345 | gas: gaz 346 | general: genel 347 | generation: nesil 348 | get: almak 349 | girl: kız 350 | give: vermek 351 | glass: cam 352 | go: gitmek 353 | goal: amaç 354 | good: iyi 355 | government: hükümet 356 | great: harika 357 | green: yeşil 358 | ground: yer 359 | group: grup 360 | grow: büyümek 361 | growth: büyüme 362 | guess: tahmin etmek 363 | gun: silah 364 | guy: adam 365 | hair: saç 366 | half: yarım 367 | hand: el 368 | hang: asmak 369 | happen: olmak 370 | happy: mutlu 371 | hard: zor 372 | have: sahip olmak 373 | he: o 374 | head: baş 375 | health: sağlık 376 | hear: duymak 377 | heart: kalp 378 | heat: ısı 379 | heavy: ağır 380 | help: yardım etmek 381 | her: onun 382 | here: burada 383 | herself: kendisi 384 | high: yüksek 385 | him: onu 386 | himself: kendisi 387 | his: onun 388 | history: tarih 389 | hit: vurmak 390 | hold: tutmak 391 | home: ev 392 | hope: umut 393 | hospital: hastane 394 | hot: sıcak 395 | hotel: otel 396 | hour: saat 397 | house: ev 398 | how: nasıl 399 | however: ancak 400 | huge: büyük 401 | human: insan 402 | hundred: yüz 403 | husband: eş 404 | I: ben 405 | idea: fikir 406 | identify: tanımlamak 407 | if: eğer 408 | image: görüntü 409 | imagine: hayal etmek 410 | impact: etki 411 | important: önemli 412 | improve: geliştirmek 413 | in: içinde 414 | include: dahil etmek 415 | including: dahil olmak üzere 416 | income: gelir 417 | increase: artış 418 | indeed: gerçekten 419 | indicate: belirtmek 420 | individual: bireysel 421 | industry: sanayi 422 | information: bilgi 423 | inside: içinde 424 | instead: yerine 425 | institution: kurum 426 | interest: ilgi 427 | interesting: ilginç 428 | international: uluslararası 429 | into: içine 430 | investment: yatırım 431 | involve: içermek 432 | issue: sorun 433 | it: o 434 | item: madde 435 | its: onun 436 | itself: kendisi 437 | job: iş 438 | join: katılmak 439 | just: sadece 440 | keep: saklamak 441 | key: anahtar 442 | kid: çocuk 443 | kill: öldürmek 444 | kind: çeşit 445 | kitchen: mutfak 446 | know: bilmek 447 | knowledge: bilgi 448 | land: arazi 449 | language: dil 450 | large: büyük 451 | last: son 452 | late: geç 453 | later: daha sonra 454 | laugh: gülmek 455 | law: kanun 456 | lay: yerleştirmek 457 | lead: yönetmek 458 | leader: lider 459 | learn: öğrenmek 460 | least: en az 461 | leave: ayrılmak 462 | left: sol 463 | leg: bacak 464 | legal: yasal 465 | less: daha az 466 | let: izin vermek 467 | letter: mektup 468 | level: seviye 469 | lie: yalan söylemek 470 | life: hayat 471 | light: ışık 472 | like: gibi 473 | likely: muhtemelen 474 | limit: sınır 475 | line: hat 476 | link: bağlantı 477 | list: liste 478 | listen: dinlemek 479 | little: az 480 | live: yaşamak 481 | local: yerel 482 | long: uzun 483 | look: bakmak 484 | lose: kaybetmek 485 | loss: kayıp 486 | lot: çok 487 | love: aşk 488 | low: düşük 489 | machine: makine 490 | magazine: dergi 491 | main: ana 492 | maintain: sürdürmek 493 | major: büyük 494 | majority: çoğunluk 495 | make: yapmak 496 | man: adam 497 | manage: yönetmek 498 | management: yönetim 499 | manager: yönetici 500 | many: birçok 501 | market: pazar 502 | marriage: evlilik 503 | material: malzeme 504 | matter: mesele 505 | may: olabilir 506 | maybe: belki 507 | me: beni 508 | mean: anlamına gelmek 509 | measure: ölçmek 510 | media: medya 511 | medical: tıbbi 512 | meet: tanışmak 513 | meeting: toplantı 514 | member: üye 515 | memory: bellek 516 | mention: bahsetmek 517 | message: mesaj 518 | method: yöntem 519 | middle: orta 520 | might: belki 521 | military: askeri 522 | million: milyon 523 | mind: akıl 524 | minute: dakika 525 | miss: kaçırmak 526 | mission: görev 527 | mistake: hata 528 | mix: karıştırmak 529 | model: model 530 | modern: modern 531 | moment: an 532 | money: para 533 | month: ay 534 | more: daha fazla 535 | morning: sabah 536 | most: en çok 537 | mother: anne 538 | mouth: ağız 539 | move: hareket etmek 540 | movement: hareket 541 | movie: film 542 | much: çok 543 | music: müzik 544 | must: meli 545 | my: benim 546 | myself: kendim 547 | name: isim 548 | nation: ulus 549 | national: ulusal 550 | natural: doğal 551 | nature: doğa 552 | near: yakın 553 | nearly: neredeyse 554 | necessary: gerekli 555 | need: ihtiyaç 556 | network: ağ 557 | never: asla 558 | new: yeni 559 | news: haber 560 | newspaper: gazete 561 | next: sonraki 562 | nice: güzel 563 | night: gece 564 | no: hayır 565 | none: hiçbiri 566 | nor: ne de 567 | north: kuzey 568 | not: değil 569 | note: not 570 | nothing: hiçbir şey 571 | notice: fark etmek 572 | now: şimdi 573 | nuclear: nükleer 574 | number: numara 575 | occur: meydana gelmek 576 | of: nin 577 | off: kapalı 578 | offer: teklif 579 | office: ofis 580 | officer: subay 581 | official: resmi 582 | often: sık sık 583 | oh: ah 584 | oil: yağ 585 | ok: tamam 586 | old: eski 587 | on: üzerinde 588 | once: bir kez 589 | one: bir 590 | only: sadece 591 | onto: üstüne 592 | open: açık 593 | operation: işlem 594 | opportunity: fırsat 595 | option: seçenek 596 | or: veya 597 | order: sipariş 598 | ordinary: sıradan 599 | origin: köken 600 | original: özgün 601 | other: diğer 602 | others: diğerleri 603 | otherwise: aksi takdirde 604 | ought: gerekli 605 | our: bizim 606 | ourselves: kendimizi 607 | out: dışarı 608 | over: üzerinde 609 | overall: genel 610 | own: kendi 611 | owner: sahip 612 | page: sayfa 613 | pain: acı 614 | paint: boya 615 | painting: resim 616 | paper: kağıt 617 | parent: ebeveyn 618 | part: parça 619 | participant: katılımcı 620 | particular: belirli 621 | particularly: özellikle 622 | partner: ortak 623 | party: parti 624 | pass: geçmek 625 | past: geçmiş 626 | path: yol 627 | patient: hasta 628 | pattern: desen 629 | pay: ödeme 630 | peace: barış 631 | people: insanlar 632 | per: her 633 | perform: yapmak 634 | performance: performans 635 | perhaps: belki 636 | period: dönem 637 | person: kişi 638 | personal: kişisel 639 | phone: telefon 640 | physical: fiziksel 641 | pick: toplamak 642 | picture: resim 643 | piece: parça 644 | place: yer 645 | plan: planlamak 646 | plant: bitki 647 | play: oynamak 648 | player: oyuncu 649 | PM: öğleden sonra 650 | point: nokta 651 | police: polis 652 | policy: politika 653 | political: siyasi 654 | politics: siyaset 655 | poor: fakir 656 | popular: popüler 657 | population: nüfus 658 | position: pozisyon 659 | positive: pozitif 660 | possible: mümkün 661 | post: gönderi 662 | potential: potansiyel 663 | power: güç 664 | practice: uygulama 665 | prefer: tercih etmek 666 | preparation: hazırlık 667 | prepare: hazırlamak 668 | present: şimdiki 669 | president: başkan 670 | press: basın 671 | pressure: baskı 672 | pretty: oldukça 673 | prevent: önlemek 674 | price: fiyat 675 | principle: ilke 676 | private: özel 677 | probably: muhtemelen 678 | problem: sorun 679 | process: süreç 680 | produce: üretmek 681 | product: ürün 682 | production: üretim 683 | professional: profesyonel 684 | professor: profesör 685 | program: program 686 | project: proje 687 | property: özellik 688 | protect: koruma 689 | prove: kanıtlamak 690 | provide: sağlamak 691 | public: halka açık 692 | pull: çekmek 693 | purpose: amaç 694 | push: itmek 695 | put: koymak 696 | quality: kalite 697 | question: soru 698 | quick: hızlı 699 | quickly: hızlıca 700 | quiet: sessiz 701 | quite: oldukça 702 | race: yarış 703 | radio: radyo 704 | raise: artırmak 705 | range: menzil 706 | rate: oran 707 | rather: oldukça 708 | reach: ulaşmak 709 | read: okumak 710 | ready: hazır 711 | real: gerçek 712 | reality: gerçeklik 713 | realize: farkına varmak 714 | really: gerçekten 715 | reason: neden 716 | receive: almak 717 | recent: son 718 | recently: son zamanlarda 719 | recognize: tanımak 720 | record: kayıt 721 | red: kırmızı 722 | reduce: azaltmak 723 | reflect: yansıtmak 724 | region: bölge 725 | relate: ilişkili 726 | relationship: ilişki 727 | religious: dini 728 | remain: kalmak 729 | remember: hatırlamak 730 | remove: kaldırmak 731 | report: rapor 732 | represent: temsil etmek 733 | Republican: Cumhuriyetçi 734 | require: gerektirmek 735 | research: araştırma 736 | resource: kaynak 737 | respond: yanıtlamak 738 | response: yanıt 739 | responsibility: sorumluluk 740 | rest: dinlenmek 741 | result: sonuç 742 | return: dönmek 743 | reveal: açığa çıkarmak 744 | rich: zengin 745 | right: doğru 746 | rise: yükselmek 747 | risk: risk 748 | road: yol 749 | rock: kaya 750 | role: rol 751 | room: oda 752 | rule: kural 753 | run: koşmak 754 | safe: güvenli 755 | same: aynı 756 | save: kurtarmak 757 | say: demek 758 | scene: sahne 759 | school: okul 760 | science: bilim 761 | scientist: bilim adamı 762 | score: puan 763 | sea: deniz 764 | season: mevsim 765 | seat: koltuk 766 | second: ikinci 767 | secretary: sekreter 768 | section: bölüm 769 | security: güvenlik 770 | see: görmek 771 | seek: aramak 772 | seem: gibi görünmek 773 | sell: satmak 774 | send: göndermek 775 | senior: kıdemli 776 | sense: anlam 777 | series: dizi 778 | serious: ciddi 779 | serve: hizmet etmek 780 | service: hizmet 781 | set: ayarlamak 782 | seven: yedi 783 | several: birkaç 784 | sex: cinsiyet 785 | sexual: cinsel 786 | shake: sarsılmak 787 | share: paylaşmak 788 | she: o (kadın) 789 | shoot: ateş etmek 790 | short: kısa 791 | should: malı 792 | shoulder: omuz 793 | show: göstermek 794 | side: yan 795 | sign: imzalamak 796 | significant: önemli 797 | similar: benzer 798 | simple: basit 799 | simply: basitçe 800 | since: beri 801 | sing: şarkı söylemek 802 | single: yalnız 803 | sister: kız kardeş 804 | sit: oturmak 805 | site: site 806 | situation: durum 807 | six: altı 808 | size: boyut 809 | skill: beceri 810 | skin: cilt 811 | small: küçük 812 | smile: gülümseme 813 | so: öyle 814 | social: sosyal 815 | society: toplum 816 | soldier: asker 817 | some: bazı 818 | somebody: birisi 819 | someone: birisi 820 | something: bir şey 821 | sometimes: bazen 822 | son: oğul 823 | song: şarkı 824 | soon: yakında 825 | sorry: üzgün 826 | sort: çeşit 827 | sound: ses 828 | source: kaynak 829 | south: güney 830 | southern: güneyli 831 | space: uzay 832 | speak: konuşmak 833 | special: özel 834 | specific: belirli 835 | speech: konuşma 836 | spend: harcamak 837 | sport: spor 838 | spring: bahar 839 | staff: personel 840 | stage: sahne 841 | stand: durmak 842 | standard: standart 843 | star: yıldız 844 | start: başlamak 845 | state: durum 846 | statement: ifade 847 | station: istasyon 848 | stay: kalmak 849 | step: adım 850 | still: hala 851 | stomach: mide 852 | stop: durmak 853 | store: mağaza 854 | story: hikaye 855 | strategy: strateji 856 | street: sokak 857 | strength: güç 858 | strong: güçlü 859 | structure: yapı 860 | student: öğrenci 861 | study: çalışmak 862 | stuff: şeyler 863 | style: tarz 864 | subject: konu 865 | substance: madde 866 | succeed: başarılı olmak 867 | success: başarı 868 | successful: başarılı 869 | such: böyle 870 | sudden: aniden 871 | suffer: acı çekmek 872 | suggest: önermek 873 | summer: yaz 874 | support: destek 875 | suppose: zannetmek 876 | sure: emin 877 | surface: yüzey 878 | system: sistem 879 | table: masa 880 | take: almak 881 | talk: konuşmak 882 | task: görev 883 | tax: vergi 884 | teach: öğretmek 885 | teacher: öğretmen 886 | team: takım 887 | technology: teknoloji 888 | telephone: telefon 889 | television: televizyon 890 | tell: söylemek 891 | ten: on 892 | tend: eğilimli olmak 893 | term: dönem 894 | test: test 895 | than: daha 896 | thank: teşekkür etmek 897 | that: o 898 | the: bu 899 | their: onların 900 | them: onları 901 | themselves: kendileri 902 | then: o zaman 903 | theory: teori 904 | there: orada 905 | these: bu 906 | they: onlar 907 | thing: şey 908 | think: düşünmek 909 | third: üçüncü 910 | this: bu 911 | those: şunlar 912 | though: rağmen 913 | thought: düşünce 914 | thousand: bin 915 | threat: tehdit 916 | three: üç 917 | through: vasıtasıyla 918 | throughout: boyunca 919 | throw: atmak 920 | thus: böylece 921 | time: zaman 922 | to: için 923 | today: bugün 924 | together: birlikte 925 | tonight: bu gece 926 | too: çok 927 | top: üst 928 | total: toplam 929 | tough: zorlu 930 | toward: e doğru 931 | town: kasaba 932 | trade: ticaret 933 | traditional: geleneksel 934 | traffic: trafik 935 | training: eğitim 936 | transfer: aktarmak 937 | travel: seyahat etmek 938 | treat: tedavi etmek 939 | treatment: tedavi 940 | tree: ağaç 941 | trial: deneme 942 | trip: seyahat 943 | trouble: sorun 944 | true: doğru 945 | truth: gerçek 946 | try: denemek 947 | turn: dönmek 948 | TV: TV 949 | two: iki 950 | type: tip 951 | under: altında 952 | understand: anlamak 953 | unit: birim 954 | until: kadar 955 | up: yukarı 956 | upon: üzerine 957 | us: biz 958 | use: kullanmak 959 | usually: genellikle 960 | value: değer 961 | various: çeşitli 962 | very: çok 963 | victim: kurban 964 | view: görünüm 965 | violence: şiddet 966 | visit: ziyaret etmek 967 | voice: ses 968 | vote: oy 969 | wait: beklemek 970 | walk: yürümek 971 | wall: duvar 972 | want: istemek 973 | war: savaş 974 | watch: izlemek 975 | water: su 976 | way: yol 977 | we: biz 978 | weak: zayıf 979 | weapon: silah 980 | wear: giymek 981 | week: hafta 982 | weight: ağırlık 983 | well: iyi 984 | west: batı 985 | western: batı 986 | what: ne 987 | whatever: her neyse 988 | when: ne zaman 989 | where: nerede 990 | whether: olup olmadığı 991 | which: hangisi 992 | while: iken 993 | white: beyaz 994 | who: kim 995 | whole: tüm 996 | whom: kimi 997 | whose: kimi 998 | why: neden 999 | wide: geniş 1000 | wife: eş 1001 | will: istemek 1002 | win: kazanmak 1003 | wind: rüzgar 1004 | window: pencere 1005 | wish: dilemek 1006 | with: ile 1007 | within: içinde 1008 | without: olmadan 1009 | woman: kadın 1010 | wonder: merak etmek 1011 | word: kelime 1012 | work: çalışmak 1013 | worker: işçi 1014 | world: dünya 1015 | worry: endişelenmek 1016 | would: olurdu 1017 | write: yazmak 1018 | writer: yazar 1019 | wrong: yanlış 1020 | yard: avlu 1021 | yeah: evet 1022 | year: yıl 1023 | yes: evet 1024 | yet: henüz 1025 | you: sen 1026 | young: genç 1027 | your: senin 1028 | yourself: kendin 1029 | youth: gençlik 1030 | zone: bölge --------------------------------------------------------------------------------