Skip to content

Instantly share code, notes, and snippets.

@ahmtcn123
Created January 10, 2022 17:51
Show Gist options
  • Save ahmtcn123/210aa7201bedd8e2a4fda5bf3c529a3f to your computer and use it in GitHub Desktop.
Save ahmtcn123/210aa7201bedd8e2a4fda5bf3c529a3f to your computer and use it in GitHub Desktop.
20BIL
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