# Sun'iy neyron tarmog'ini yaratish uchun TensorFlow kutubxonasidan foydalanamiz.
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
# 1. Ma'lumotlar tayyorlash
# "make_moons" funksiyasi sun'iy ma'lumotlar to'plamini yaratadi
X, y = make_moons(n_samples=1000, noise=0.2, random_state=42)
# Ma'lumotlarni trening va test to'plamlariga ajratish
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Ma'lumotlarni standartlashtirish
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 2. Model yaratish
model = Sequential([
Dense(16, activation='relu', input_shape=(2,)), # 1-qavat: 16 neyron, ReLU faollashtirish funksiyasi
Dense(16, activation='relu'), # 2-qavat: 16 neyron, ReLU
Dense(1, activation='sigmoid') # 3-qavat (chiqish qavati): 1 neyron, Sigmoid funksiyasi
])
# Modelni kompilyatsiya qilish
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
# 3. Modelni o'qitish
history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_split=0.2, verbose=1)
# 4. Modelni baholash
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print(f"Test to'plamidagi aniqlik: {test_accuracy:.2f}")
# 5. Natijalarni vizualizatsiya qilish
# O'qitish jarayonidagi yo'qotish va aniqlikni chizish
plt.figure(figsize=(12, 5))
# Yo'qotish grafigi
plt.subplot(1, 2, 1)
plt.plot(history.history['loss'], label='Trening yo\'qotish')
plt.plot(history.history['val_loss'], label='Validatsiya yo\'qotish')
plt.title('Yo\'qotish')
plt.xlabel('Epochs')
plt.ylabel('Yo\'qotish')
plt.legend()
# Aniqlik grafigi
plt.subplot(1, 2, 2)
plt.plot(history.history['accuracy'], label='Trening aniqlik')
plt.plot(history.history['val_accuracy'], label='Validatsiya aniqlik')
plt.title('Aniqlik')
plt.xlabel('Epochs')
plt.ylabel('Aniqlik')
plt.legend()
plt.show()