АШИГТ МАЛТМАЛЫН БАЯЖУУЛАЛТЫН ТЕХНИК, ТЕХНОЛОГИ

Ашигт малтмалын баяжуулалтын чиглэлээр сурч буй оюутан сурагчид, залуу инженерүүдэд зориулав.

Monday, November 10, 2025

МАШИН СУРГАЛТЫН (ХИЙМЭЛ ОЮУНЫ) ЭНГИЙН PYTHON ПРОГРАММ


===========================================================================================================================
Энэхүү программ нь Python-ы Tensorflow , Keras зэрэг сангуудыг ашиглан машин сургалтын аргаар (хиймэл оюун) ажилд орохыг
хүссэн өргөдлүүдийг хиймэл оюуны тусламжтайгаар шийдвэр гаргах юм. 

Өргөдлийн өгөгдлүүд:
- Ажлын туршлага , жилээр
- Ажлын туршлагын оноо (0-100)
- Ярианы чадвар 
- Боловсролын түвшин

Шийдвэр:
0 - ажилд авахгүй
1- ажилд авна

==========================================================================================================================
import numpy a
import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt

# 1. ӨГӨГДӨЛ БЭЛДЭХ
# Оролтын өгөгдөл: [туршлага(жил), оноо(100-аас), ярианы чадвар(0-1), боловсролын түвшин(0-2)]
# Гаралт: 0 - ажилд авахгүй, 1 - ажилд авна

# Сургалтын өгөгдөл

X_train = np.array([
    [2, 65, 0.3, 1],   # анхны өргөдөл
    [5, 80, 0.7, 2],   # хоёр дахь өргөдөл
    [1, 45, 0.2, 0],   # гэх мэт...
    [8, 90, 0.9, 2],
    [3, 70, 0.5, 1],
    [0, 35, 0.1, 0],
    [10, 95, 0.95, 2],
    [4, 75, 0.6, 1]
])

# Харгалзах хариу (мэргэжилтний шийдвэр)
y_train = np.array([0, 1, 0, 1, 1, 0, 1, 1])

# 2. НЕЙРОН СҮЛЖЭЭГ БҮТЭЭХ
model = keras.Sequential([
    keras.layers.Dense(8, activation='relu', input_shape=(4,)),  # Далд давхарга
    keras.layers.Dense(4, activation='relu'),                   # Давхарга нэмэх
    keras.layers.Dense(1, activation='sigmoid')                 # Гаралтын давхарга
])

# 3. СҮЛЖЭЭГ ТОХИРУУЛАХ
model.compile(
    optimizer='adam',
    loss='binary_crossentropy',
    metrics=['accuracy']
)

# 4. СУРГАЛТ ХИЙХ
print("Сургалт эхлэж байна...")
history = model.fit(
    X_train, 
    y_train,
    epochs=100,
    batch_size=2,
    verbose=0  # Дэлгэцэд хэт олон мэдээлэл харуулахгүй
)

# 5. ШИНЭ ӨГӨГДӨЛ ДЭЭР ТААМАГЛАЛ ХИЙХ
# Шинэ өргөдөл: [туршлага, оноо, ярианы чадвар, боловсрол]
new_applicants = np.array([
    [3, 72, 0.6, 1],   # 1-р өргөдөл
    [6, 85, 0.8, 2],   # 2-р өргөдөл  
    [1, 40, 0.1, 0]    # 3-р өргөдөл
])

predictions = model.predict(new_applicants)

# 6. ҮР ДҮНГ ХАРУУЛАХ
print("\n" + "="*50)
print("ШИНЭ ӨРГӨДӨЛҮҮДИЙН ШИЙДВЭР:")
print("="*50)

for i, (applicant, pred) in enumerate(zip(new_applicants, predictions)):
    probability = pred[0]
    decision = "АЖИЛД АВАХ" if probability > 0.5 else "АЖИЛД АВАХГҮЙ"
    
    print(f"\n{i+1}-р өргөдөл:")
    print(f"  Туршлага: {applicant[0]} жил")
    print(f"  Оноо: {applicant[1]}/100")
    print(f"  Ярианы чадвар: {applicant[2]:.1%}")
    print(f"  Боловсрол: {['Бага', 'Дунд', 'Дээд'][int(applicant[3])]}")
    print(f"  Магадлал: {probability:.2%}")
    print(f"  ШИЙДВЭР: {decision}")

# 7. СУРГАЛТЫН ТҮҮХИЙГ ХАРУУЛАХ
plt.figure(figsize=(12, 4))

plt.subplot(1, 2, 1)
plt.plot(history.history['loss'])
plt.title('Сургалтын алдаа')
plt.xlabel('Эпох')
plt.ylabel('Алдаа')

plt.subplot(1, 2, 2)
plt.plot(history.history['accuracy'])
plt.title('Сургалтын нарийвчлал')
plt.xlabel('Эпох')
plt.ylabel('Нарийвчлал')

plt.tight_layout()
plt.show()

# 8. ЗАГВАРЫН ДЭЛГЭРЭНГҮЙ МЭДЭЭЛЭЛ
print("\n" + "="*50)
print("ЗАГВАРЫН ДЭЛГЭРЭНГҮЙ МЭДЭЭЛЭЛ:")
print("="*50)
model.summary()


No comments:

Post a Comment