IUM_12
This commit is contained in:
parent
490b8cf773
commit
e4a90fd187
BIN
sacred/sacred_runs/2/beer_review_sentiment_model.keras
Normal file
BIN
sacred/sacred_runs/2/beer_review_sentiment_model.keras
Normal file
Binary file not shown.
5
sacred/sacred_runs/2/config.json
Normal file
5
sacred/sacred_runs/2/config.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"batch_size": 32,
|
||||||
|
"epochs": 10,
|
||||||
|
"seed": 541882551
|
||||||
|
}
|
26
sacred/sacred_runs/2/cout.txt
Normal file
26
sacred/sacred_runs/2/cout.txt
Normal file
File diff suppressed because one or more lines are too long
1
sacred/sacred_runs/2/metrics.json
Normal file
1
sacred/sacred_runs/2/metrics.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{}
|
100
sacred/sacred_runs/2/run.json
Normal file
100
sacred/sacred_runs/2/run.json
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
{
|
||||||
|
"artifacts": [
|
||||||
|
"beer_review_sentiment_model.keras"
|
||||||
|
],
|
||||||
|
"command": "run_experiment",
|
||||||
|
"experiment": {
|
||||||
|
"base_dir": "C:\\Users\\adamw\\REPOS\\ium_464979\\sacred",
|
||||||
|
"dependencies": [
|
||||||
|
"keras==2.12.0",
|
||||||
|
"numpy==1.23.5",
|
||||||
|
"sacred==0.8.5",
|
||||||
|
"scikit-learn==1.2.2"
|
||||||
|
],
|
||||||
|
"mainfile": "sacred_training_model.py",
|
||||||
|
"name": "464979",
|
||||||
|
"repositories": [
|
||||||
|
{
|
||||||
|
"commit": "490b8cf77306ea482543e03ba29e37b07f689ae1",
|
||||||
|
"dirty": true,
|
||||||
|
"url": "https://git.wmi.amu.edu.pl/s464979/ium_464979.git"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sources": [
|
||||||
|
[
|
||||||
|
"sacred_training_model.py",
|
||||||
|
"_sources\\sacred_training_model_ccb7ce6317e0e291ec9a10a9f4fffffe.py"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"heartbeat": "2024-06-11T21:08:46.548013",
|
||||||
|
"host": {
|
||||||
|
"ENV": {},
|
||||||
|
"cpu": "Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz",
|
||||||
|
"gpus": {
|
||||||
|
"driver_version": "555.85",
|
||||||
|
"gpus": [
|
||||||
|
{
|
||||||
|
"model": "NVIDIA GeForce GTX 1660 Ti",
|
||||||
|
"persistence_mode": false,
|
||||||
|
"total_memory": 6144
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"hostname": "DESKTOP-9SEHQM2",
|
||||||
|
"os": [
|
||||||
|
"Windows",
|
||||||
|
"Windows-10-10.0.19045-SP0"
|
||||||
|
],
|
||||||
|
"python_version": "3.11.7"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"command": "run_experiment",
|
||||||
|
"config_updates": {},
|
||||||
|
"named_configs": [],
|
||||||
|
"options": {
|
||||||
|
"--beat-interval": null,
|
||||||
|
"--capture": null,
|
||||||
|
"--comment": null,
|
||||||
|
"--debug": false,
|
||||||
|
"--enforce_clean": false,
|
||||||
|
"--file_storage": null,
|
||||||
|
"--force": false,
|
||||||
|
"--help": false,
|
||||||
|
"--id": null,
|
||||||
|
"--loglevel": null,
|
||||||
|
"--mongo_db": null,
|
||||||
|
"--name": null,
|
||||||
|
"--pdb": false,
|
||||||
|
"--print-config": false,
|
||||||
|
"--priority": null,
|
||||||
|
"--queue": false,
|
||||||
|
"--s3": null,
|
||||||
|
"--sql": null,
|
||||||
|
"--tiny_db": null,
|
||||||
|
"--unobserved": false,
|
||||||
|
"COMMAND": null,
|
||||||
|
"UPDATE": [],
|
||||||
|
"help": false,
|
||||||
|
"with": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": [
|
||||||
|
[
|
||||||
|
"C:\\Users\\adamw\\REPOS\\ium_464979\\sacred\\beer_reviews_train.csv",
|
||||||
|
"sacred_runs\\_resources\\beer_reviews_train_e8dab75a0ec202f56510a0e1f9926ad7.csv"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"C:\\Users\\adamw\\REPOS\\ium_464979\\sacred\\beer_reviews_test.csv",
|
||||||
|
"sacred_runs\\_resources\\beer_reviews_test_56070f83bef3ee1d17d1a632aa55b798.csv"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"dtype": "float64",
|
||||||
|
"py/object": "numpy.float64",
|
||||||
|
"value": 0.9237146778770103
|
||||||
|
},
|
||||||
|
"start_time": "2024-06-11T21:08:35.823687",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"stop_time": "2024-06-11T21:08:46.547012"
|
||||||
|
}
|
@ -0,0 +1,84 @@
|
|||||||
|
import pandas as pd
|
||||||
|
from tensorflow.keras.preprocessing.text import Tokenizer
|
||||||
|
from tensorflow.keras.preprocessing.sequence import pad_sequences
|
||||||
|
from tensorflow.keras.models import Sequential
|
||||||
|
from tensorflow.keras.layers import Embedding, GlobalAveragePooling1D, Dense
|
||||||
|
from sklearn.metrics import accuracy_score, precision_recall_fscore_support, mean_squared_error
|
||||||
|
from sacred import Experiment
|
||||||
|
from sacred.observers import MongoObserver, FileStorageObserver
|
||||||
|
from math import sqrt
|
||||||
|
|
||||||
|
ex = Experiment('464979')
|
||||||
|
# ex.observers.append(MongoObserver(url='mongodb://admin:IUM_2021@tzietkiewicz.vm.wmi.amu.edu.pl:27017'))
|
||||||
|
ex.observers.append(FileStorageObserver('sacred_runs'))
|
||||||
|
|
||||||
|
@ex.config
|
||||||
|
def my_config():
|
||||||
|
epochs = 10
|
||||||
|
batch_size = 32
|
||||||
|
|
||||||
|
@ex.automain
|
||||||
|
def run_experiment(epochs, batch_size, _run):
|
||||||
|
train_data = pd.read_csv('beer_reviews_train.csv')
|
||||||
|
X_train = train_data[['review_aroma', 'review_appearance', 'review_palate', 'review_taste']]
|
||||||
|
y_train = train_data['review_overall']
|
||||||
|
|
||||||
|
tokenizer = Tokenizer(num_words=10000)
|
||||||
|
tokenizer.fit_on_texts(X_train)
|
||||||
|
X_train_seq = tokenizer.texts_to_sequences(X_train)
|
||||||
|
|
||||||
|
X_train_pad = pad_sequences(X_train_seq, maxlen=100)
|
||||||
|
|
||||||
|
model = Sequential([
|
||||||
|
Embedding(input_dim=10000, output_dim=16, input_length=100),
|
||||||
|
GlobalAveragePooling1D(),
|
||||||
|
Dense(16, activation='relu'),
|
||||||
|
Dense(1, activation='sigmoid')
|
||||||
|
])
|
||||||
|
|
||||||
|
model.compile(optimizer='adam',
|
||||||
|
loss='binary_crossentropy',
|
||||||
|
metrics=['accuracy'])
|
||||||
|
|
||||||
|
model.fit(X_train_pad, y_train, epochs=epochs, batch_size=batch_size, validation_split=0.1)
|
||||||
|
|
||||||
|
model.save('beer_review_sentiment_model.keras')
|
||||||
|
_run.add_artifact('beer_review_sentiment_model.keras')
|
||||||
|
|
||||||
|
test_data = pd.read_csv('beer_reviews_test.csv')
|
||||||
|
X_test = test_data[['review_aroma', 'review_appearance', 'review_palate', 'review_taste']]
|
||||||
|
y_test = test_data['review_overall']
|
||||||
|
|
||||||
|
tokenizer = Tokenizer(num_words=10000)
|
||||||
|
tokenizer.fit_on_texts(X_test)
|
||||||
|
|
||||||
|
X_test_text = X_test.astype(str).agg(' '.join, axis=1)
|
||||||
|
X_test_seq = tokenizer.texts_to_sequences(X_test_text)
|
||||||
|
X_test_pad = pad_sequences(X_test_seq, maxlen=100)
|
||||||
|
|
||||||
|
predictions = model.predict(X_test_pad)
|
||||||
|
|
||||||
|
if len(predictions.shape) > 1:
|
||||||
|
predictions = predictions[:, 0]
|
||||||
|
|
||||||
|
results = pd.DataFrame({'Predictions': predictions, 'Actual': y_test})
|
||||||
|
results.to_csv('beer_review_sentiment_predictions.csv', index=False)
|
||||||
|
|
||||||
|
y_pred = results['Predictions']
|
||||||
|
y_test = results['Actual']
|
||||||
|
y_test_binary = (y_test >= 3).astype(int)
|
||||||
|
|
||||||
|
accuracy = accuracy_score(y_test_binary, y_pred.round())
|
||||||
|
precision, recall, f1, _ = precision_recall_fscore_support(y_test_binary, y_pred.round(), average='micro')
|
||||||
|
rmse = sqrt(mean_squared_error(y_test, y_pred))
|
||||||
|
|
||||||
|
print(f'Accuracy: {accuracy}')
|
||||||
|
print(f'Micro-avg Precision: {precision}')
|
||||||
|
print(f'Micro-avg Recall: {recall}')
|
||||||
|
print(f'F1 Score: {f1}')
|
||||||
|
print(f'RMSE: {rmse}')
|
||||||
|
|
||||||
|
_run.add_resource('./beer_reviews_train.csv')
|
||||||
|
_run.add_resource('./beer_reviews_test.csv')
|
||||||
|
|
||||||
|
return accuracy
|
Loading…
Reference in New Issue
Block a user