2.4.1 .Mạng truyền thẳng nhiều lớp
3. Phạm vi ứng dụng
- Mô hình có thể áp dụng cho các trường Trung cấp, Cao đẳng, Đại học. Tuy nhiên cần điều chỉnh lại cho phù hợp với chiến lược tuyển sinh của từng trường.
- Cấu trúc mô hình chỉ phù hợp cho nhà trường, nếu đơn vị khác phải điều chỉnh lại mạng nơ ron cho phù hợp.
4. Hướng phát triển của đề tài trong năm tiếp theo
Việc sử dụng Mạng Nơron nhân tạo trong việc phân tích dữ liệu và đưa ra dự báo khả năng nhập học là một phương pháp hiệu quả, khách quan và khoa học nhằm nhằm hỗ trợ công tác tư vấn tuyển sinh ngày càng tốt hơn.
Những kết quả thực nghiệm khả quan dựa trên nghiên cứu về ứng dụng mạng nơron nhân tạo với thuật toán học là lan truyền ngược sai số trong bài toán bài toán xây dựng mô hình dự đoán khả năng nhập học của học sinh sinh viên vào Trường Cao đẳng Kỹ thuật Công nghệ Bà Rịa - Vũng Tàu trong năm tới cho thấy đây là một mô hình hiệu quả.
Do vậy, luận văn sẽ tiếp tục phát triển theo hướng cải thiện phương pháp dự báo để có kết quả chính xác nhất.
TÀI LIỆU THAM KHẢO
Tài liệu tiếng Việt:
[1] Bộ Lao động Thương binh & Xã hội. Thông tư 07/2019/TT-BLĐTBXH: Sửa đổi, bổ sung một số điều của thông tư số 05/2017/TT-BLĐTBXH ngày 02 tháng 3 năm 2017 của Bộ trưởng bộ Lao động Thương binh & Xã hội quy định quy chế tuyển sinh và xác định chỉ tiêu tuyển sinh trình độ Trung cấp, cao đẳng 2019.
[2] Vũ Hữu Tiệp, (2018). Machine Learning cơ bản, Nhà xuất bản Khoa học và Kỹ thuật.
[3] Nguyễn Xuân Khánh. Machine Learning book for Vietnamese, University of Maryland.
[4]Nordic Coder, (2019). Phân nhóm thuật toán Machine Learning những điều bạn cần phải biết.
[5] Nguyễn Quang Hoan (2005), Giáo trình mạng nơron nhân tạo, Học viện công nghệ bưu chính viễn thông.
[6] Trần Đức Minh (2002), Ứng dụng mạng nơron truyền thẳng trong dự báo dữ liệu, Luận văn thạc sỹ, Viện Công nghệ Thông tin.
[7] Dương Thu Trang (2017), Ứng dụng mạng nơron nhân tạo dự báo số học sinh tuyển vào Trung tâm GDNN-GDTX quận Đống Đa, Luận văn thạc sỹ, trường Đại học Công nghệ – Đại học Quốc gia Hà Nội.
[8] Đinh Văn Nhượng, (2013). Một số ứng dụng mạng nơron xây dựng mô hình nhận dạng và dự báo, Nhà xuất bản Khoa học và Kỹ thuật.
[9]. Đinh Mạnh Tường(2002), Trí tuệ nhân tạo, Nhà xuất bản Khoa học và Kỹ thuật
[10]. Nguyễn Đình Thúc (2000), Mạng nơron nhân tạo – phương pháp và ứng dụng, Nhà xuất bản Giáo dục.
[11]. Nguyễn Thanh Tuấn (2019), Deep learning cơ bản, Nhà xuất bản Khoa học và Kỹ thuật.
[12]. Phạm Thọ Hoàn, Phạm Thị Anh Lê (2011), Giáo trình Trí tuệ nhân tạo, Đại học Sư phạm Hà Nội.
[13]. Lê Mỹ Hà, Giáo trình mạng nơ ron học sâu và ứng dụng, Nhà xuất bản Đại học Quốc gia thành phố Hồ Chí Minh.
[14]. Dương Minh Trí (2003), Giáo trình Trí tuệ nhân tạo, Đại học Sư phạm Kỹ thuật thành phố Hồ Chí Minh.
Tài liệu tiếng Anh:
[15].Dipti Srinivasan, A.C. Liew, Jonh S., P. Chen (1991), “Short Term Forecasting Using Neural Networks Approach”, IEEE 91TH0374-9/91/0000-0012, pp 12- 16, 1991.
[16].Morioka Y., Sakurai K., Yokoyama A. Sekine Y. (1993), “Next Day Peak Load Forecasting Using a Multilayer Neural Network with an Additional Learning”, IEEE, 0-7803-1217-1/93, 1993.
[17]. Fico Corporation (2009), Understanding Predictive Analytics.
[18].Dean Abbott (2014), Applied Predictive Analytics: Principles and Techniques for the Professional Data Analyst, Wiley.
[19]. Robert J. Schallkoff (1997), Artificial Neural Networks, The McGraw – Hill Companies, Inc 1997.
[20] John C. Chambers, Satinder K. Mullick and Donald D. Smith (1971), How to Choose the Right Forecasting Technique, https://hbr.org/1971/07/how-tochoose- the-right-forecasting-technique.
[21].Petar Halachev (2012), “Prediction of e-Learning Efficiency by Neural Networks”, Cybernetics And Information Technologies – volume 12 – Nơron 12, Bulgarian Academy of Sciences.
[22].Hopfield, J.J (1982), “Neural Networks and Physical Systems with Emergent Collective Computational Abilities”, Proceeding of Natural Academic Sciences, USA, vol. 79, pp. 2.554 – 2.558.
[23].David Silverman, Jonh A. Dracup (2000), “Artificial Neural Networks and Long-Range Precipitation Prediction in California”, Journal of Applied Meteorology, vol 39 (Jan 2000), pp. 57-66. 51
PHỤ LỤC: CODE THUẬT TOÁN Entrée [1]: import os import numpy as np import pandas as pd import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.layers import Dense from tensorflow.keras.models import Sequential from tensorflow.keras import metrics
from sklearn.metrics import accuracy_score from sklearn.metrics import precision_score from sklearn.metrics import recall_score from sklearn.metrics import f1_score
from sklearn.metrics import classification_report
Entrée [2]:
import io
train_data = pd.read_csv('du-lieu_2015-2017.csv') print('train_data has shape:', train_data.shape) train_data.head() Entrée [3]: x_train = train_data.iloc[:, 9: 25] print(x_train.shape) x_train.head() Entrée [4]: x_train = x_train.values print(x_train) Entrée [5]:
print(y_train.shape) print(y_train) Entrée [6]: y_train = keras.utils.to_categorical(y_train, 2) print(y_train.shape) print(y_train) Entrée [7]: model = Sequential()
model.add(Dense(24, input_dim=16, activation='relu')) model.add(Dense(16, activation='relu')) model.add(Dense(2, activation='softmax')) model.summary() Entrée [8]: model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=500, batch_size=10)
Entrée [9]:
model.save('MLP-Student-In-Model.h5')
Entrée [10]:
oss, accuracy = model.evaluate(x_train, y_train)
print('Accuracy on training data: %.2f' % (accuracy * 100))
Load Model Entrée [11]:
loaded_model = keras.models.load_model("MLP-Student-In-Model.h5")
Kiểm tra trên tập test 2019 Entrée [12]:
test_data_2019 = pd.read_csv('du-lieu_2019.csv')
print('test_data_1_out has shape:', test_data_2019.shape) test_data_2019.head()
Entrée [13]:
x_test_2019 = test_data_2019.iloc[:, 9: 25].values print(x_test_2019.shape)
print(x_test_2019)
Entrée [14]:
y_test_2019 = test_data_2019.iloc[:, 0].values print(y_test_2019.shape)
print(y_test_2019)
Entrée [15]:
test_predictions_2019 = loaded_model.predict(x_test_2019) print("Prediction labels: ", test_predictions_2019)
Entrée [16]:
for i in np.arange(test_predictions_2019.shape[0]):
prediction_label = np.argmax(test_predictions_2019[i]) if prediction_label == 1:
print("x: {} | y: {} | prediction: {} | pre_label: {}".format(x_test_2019[i], y_test_2019[i], test_predictions_2019[i], prediction_label))
Entrée [17]:
for i in np.arange(test_predictions_2019.shape[0]):
prediction_label = np.argmax(test_predictions_2019[i]) if prediction_label == 0:
print("x: {} | y: {} | prediction: {} | pre_label: {}".format(x_test_2019[i], y_test_2019[i], test_predictions_2019[i], prediction_label))
Entrée [18]:
y_test_2019_bin = keras.utils.to_categorical(y_test_2019, 2) print(y_test_2019_bin.shape)
print(y_test_2019_bin)
Entrée [19]:
print('Accuracy on testing data (1) out: %.2f' % (accuracy * 100))
Entrée [20]:
test_prediction_labels_2019 = loaded_model.predict_classes(x_test_2019) print("Prediction labels: ", test_prediction_labels_2019)
Entrée [21]:
accuracy = accuracy_score(y_test_2019, test_prediction_labels_2019) print('Accuracy: %f' % accuracy)
Entrée [22]:
precision = precision_score(y_test_2019, test_prediction_labels_2019) print('Precision: %f' % precision)
Entrée [23]:
recall = recall_score(y_test_2019, test_prediction_labels_2019) print('Recall: %f' % recall)
Entrée [24]:
f1 = f1_score(y_test_2019, test_prediction_labels_2019) print('F1 score: %f' % f1)
Entrée [25]:
target_names_2019 = ['Ko nhap hoc', 'Nhap hoc']
print(classification_report(y_test_2019,test_prediction_labels_2019, target_names=target_names_2019))
Kiểm tra trên tập test 2018 Entrée [26]:
test_data_2018 = pd.read_csv('du-lieu_2018.csv')
print('test_data_1_out has shape:', test_data_2018.shape) test_data_2018.head()
Entrée [27]:
x_test_2018 = test_data_2018.iloc[:, 9: 25].values print(x_test_2018.shape)
Entrée [28]:
y_test_2018 = test_data_2018.iloc[:, 0].values print(y_test_2018.shape)
print(y_test_2018)
Entrée [29]:
test_predictions_2018 = loaded_model.predict(x_test_2018) print("Prediction labels: ", test_predictions_2018)
Entrée [30]:
for i in np.arange(test_predictions_2018.shape[0]):
prediction_label = np.argmax(test_predictions_2018[i]) if prediction_label == 1:
print("x: {} | y: {} | prediction: {} | pre_label: {}".format(x_test_2018[i], y_test_2018[i], test_predictions_2018[i], prediction_label))
Entrée [31]:
for i in np.arange(test_predictions_2018.shape[0]):
prediction_label = np.argmax(test_predictions_2018[i]) if prediction_label == 0:
print("x: {} | y: {} | prediction: {} | pre_label: {}".format(x_test_2018[i], y_test_2018[i], test_predictions_2018[i], prediction_label))
Entrée [32]:
y_test_2018_bin = keras.utils.to_categorical(y_test_2018, 2) print(y_test_2018_bin.shape)
print(y_test_2018_bin)
Entrée [33]:
loss, accuracy = loaded_model.evaluate(x_test_2018, y_test_2018_bin) print('Accuracy on testing data (1) out: %.2f' % (accuracy * 100))
Entrée [34]:
print("Prediction labels: ", test_prediction_labels_2018)
Entrée [35]:
accuracy = accuracy_score(y_test_2018, test_prediction_labels_2018) print('Accuracy: %f' % accuracy)
Entrée [36]:
precision = precision_score(y_test_2018, test_prediction_labels_2018) print('Precision: %f' % precision)
Entrée [37]:
recall = recall_score(y_test_2018, test_prediction_labels_2018) print('Recall: %f' % recall)
Entrée [38]:
f1 = f1_score(y_test_2018, test_prediction_labels_2018) print('F1 score: %f' % f1)
Entrée [39]:
target_names_2018 = ['Ko nhap hoc', 'Nhap hoc']
print(classification_report(y_test_2018,test_prediction_labels_2018, target_names=target_names_2018))