Created
January 10, 2022 17:51
-
-
Save ahmtcn123/210aa7201bedd8e2a4fda5bf3c529a3f to your computer and use it in GitHub Desktop.
20BIL
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from keras.models import Sequential | |
from keras.layers import Dense | |
import enum | |
import names | |
#? Renkler class'ı | |
class Renk(enum.Enum): | |
Kirmizi = 1 | |
Yesil = 2 | |
Mavi = 3 | |
#? Kişi class'ı burada kişinin ismini ve tercihlerini alıyoruz | |
class Person: | |
def __init__(self, name, diziSeviyor, motorSeviyor, basketSeviyor, sevidigiRenk): | |
self.name = name | |
self.diziSeviyor = 1 if diziSeviyor else 0 | |
self.motorSeviyor = 1 if motorSeviyor else 0 | |
self.basketSeviyor = 1 if basketSeviyor else 0 | |
#Tenary operatörü ile Renk enum'ının değerlerini alıyoruz. Sevdiği rengi 1 geri kalanları sıfır yapıyoruz | |
self.enSevdigiRenkKirmizi = 1 if sevidigiRenk is Renk.Kirmizi else 0 | |
self.enSevdigiRenkYesil = 1 if sevidigiRenk is Renk.Yesil else 0 | |
self.enSevdigiRenkMavi = 1 if sevidigiRenk is Renk.Mavi else 0 | |
#? Neural network için dizi çıkarır | |
#? [diziSeviyorİseBir, motorSeviyorİse1, basketSeviyorİse1, enSevdigiRenkKirmiziİse1, enSevdigiRenkYesilİse1, enSevdigiRenkMaviİse1] | |
#? Örnek veri; Kişi dizi seviyor, motorlardan hoşlanmıyor, basketbol'da sevmiyor ve en sevdiği renk yeşil [1, 0, 0, 0, 1, 0] | |
def veriVer(self): | |
return [self.diziSeviyor, self.motorSeviyor, self.basketSeviyor, self.enSevdigiRenkKirmizi, self.enSevdigiRenkYesil, self.enSevdigiRenkMavi] | |
#! Kişiler listesini oluşturuyoruz | |
kisiler = [] | |
#! Yüz defa çalışacak bir for döngüsü döndürüyoruz | |
for _ in range(0, 100): | |
#Random bir kişi ismi alıyoruz | |
isim = names.get_full_name() | |
#Random bir dizi seviyor mu değerini alıyoruz | |
diziSeviyor = bool(random.randint(0, 1)) | |
#Random bir motor seviyor mu değerini alıyoruz | |
motorSeviyor = bool(random.randint(0, 1)) | |
#Random bir basketbol seviyor mu değerini alıyoruz | |
basketSeviyor = bool(random.randint(0, 1)) | |
#Random bir renk seçiyor mu değerini alıyoruz | |
sevdigiRenk = random.choice(list(Renk)) | |
#Kişi class'ını oluşturuyoruz | |
kisi = Person(isim, diziSeviyor, motorSeviyor, basketSeviyor, sevdigiRenk) | |
#Kişi listesine ekliyoruz | |
kisiler.append(kisi) | |
x = [] #? Input değerlerini veriyoruz | |
y = [] #? Output değerlerini veriyoruz, bu şekilde kişileri belirleyebileceğiz | |
#? Kişiler kadar döngü döndürüyoruz, kişinin değerlerini x listesine, kişinin dizideki index'ini output'a veriyoruz | |
for i in range(0, len(kisiler)): | |
#Kişinin 'kisiler' dizisindeki index'ini alıyoruz | |
ind = i | |
#Kişinin network verilerisini 'Person' class'ındaki veriVer() metodu ile alıyoruz | |
personData = kisiler[i].veriVer() | |
#Kişinin network verilerini x listesine ekliyoruz | |
x.append(ind) | |
#Kişinin index'ini output'a ekliyoruz | |
y.append(personData) | |
#Model oluşturuyoruz | |
model = Sequential() | |
#? Aktivasyon verisini tanımlıyoruz ve input dizi uzunluğunu veriyoruz | |
model.add(Dense(12, input_dim=6, activation='relu')) | |
model.add(Dense(3, activation='relu')) | |
model.add(Dense(1, activation='sigmoid')) | |
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) | |
model.fit(x, y, epochs=150, batch_size=10) | |
#? Örnek veri; Kişi dizi seviyor, motorlardan hoşlanmıyor, basketbol'da sevmiyor ve en sevdiği renk yeşil [1, 0, 0, 0, 1, 0] | |
predictions = model.predict([1, 0, 0, 0, 1, 0]) | |
rounded = [round(x[0]) for x in predictions] | |
print(rounded) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment