engine update
This commit is contained in:
parent
62e91b264e
commit
08ee963d86
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
__pycache__
|
32
engine.py
32
engine.py
@ -1,5 +1,7 @@
|
|||||||
from simpful import *
|
from simpful import *
|
||||||
|
|
||||||
|
def fuzzy_system(release_year_param, runtime_param, seasons_param, genres_param, emotions_param):
|
||||||
|
|
||||||
FS = FuzzySystem(show_banner=False)
|
FS = FuzzySystem(show_banner=False)
|
||||||
|
|
||||||
# Define fuzzy sets for the variable
|
# Define fuzzy sets for the variable
|
||||||
@ -52,22 +54,20 @@ FS.add_linguistic_variable("RECOMMENDATION",
|
|||||||
LinguisticVariable([low_recommendation, medium_recommendation, high_recommendation],
|
LinguisticVariable([low_recommendation, medium_recommendation, high_recommendation],
|
||||||
universe_of_discourse=[0, 200]))
|
universe_of_discourse=[0, 200]))
|
||||||
|
|
||||||
# RULES
|
# # RULES
|
||||||
RULE1 = "IF (RELEASE_YEAR IS older) AND (RUNTIME IS longer) AND (SEASONS IS more) THEN (RECOMMENDATION IS low_recommendation)"
|
# RULE1 = "IF (RELEASE_YEAR IS older) AND (RUNTIME IS longer) AND (SEASONS IS more) THEN (RECOMMENDATION IS low_recommendation)"
|
||||||
RULE2 = "IF (EMOTIONS IS different) AND (GENRES IS different) THEN (RECOMMENDATION IS low_recommendation)"
|
# RULE2 = "IF (EMOTIONS IS different) AND (GENRES IS different) THEN (RECOMMENDATION IS low_recommendation)"
|
||||||
RULE3 = "IF (RELEASE_YEAR IS newer) AND (RUNTIME IS similar) AND (SEASONS IS less) THEN (RECOMMENDATION IS medium_recommendation)"
|
# RULE3 = "IF (RELEASE_YEAR IS newer) AND (RUNTIME IS similar) AND (SEASONS IS less) THEN (RECOMMENDATION IS medium_recommendation)"
|
||||||
RULE4 = "IF (EMOTIONS IS similar) AND (GENRES IS similar) THEN (RECOMMENDATION IS medium_recommendation)"
|
# RULE4 = "IF (EMOTIONS IS similar) AND (GENRES IS similar) THEN (RECOMMENDATION IS medium_recommendation)"
|
||||||
RULE5 = "IF (RELEASE_YEAR IS similar) AND (RUNTIME IS similar) AND (SEASONS IS similar) AND (EMOTIONS IS same) AND (GENRES IS same) THEN (RECOMMENDATION IS high_recommendation)"
|
# RULE5 = "IF (RELEASE_YEAR IS similar) AND (RUNTIME IS similar) AND (SEASONS IS similar) AND (EMOTIONS IS same) AND (GENRES IS same) THEN (RECOMMENDATION IS high_recommendation)"
|
||||||
# Z regułami trzeba eksperymentować, można porównywać ze scorem dla sprawdzania skuteczności
|
# # Z regułami trzeba eksperymentować, można porównywać ze scorem dla sprawdzania skuteczności
|
||||||
|
|
||||||
|
# RULES
|
||||||
|
RULE1 = f"IF (NOT (RELEASE_YEAR IS {release_year_param})) AND (NOT (RUNTIME IS {runtime_param})) AND (NOT (SEASONS IS {seasons_param})) THEN (RECOMMENDATION IS low_recommendation)"
|
||||||
|
RULE2 = f"IF (NOT (EMOTIONS IS {emotions_param})) AND (NOT (GENRES IS {genres_param})) THEN (RECOMMENDATION IS low_recommendation)"
|
||||||
|
RULE3 = f"IF (NOT (RELEASE_YEAR IS {release_year_param})) AND (RUNTIME IS {runtime_param}) AND (NOT (SEASONS IS {seasons_param})) THEN (RECOMMENDATION IS medium_recommendation)"
|
||||||
|
RULE4 = f"IF (EMOTIONS IS {emotions_param}) AND (GENRES IS {genres_param}) THEN (RECOMMENDATION IS medium_recommendation)"
|
||||||
|
RULE5 = f"IF (RELEASE_YEAR IS {release_year_param}) AND (RUNTIME IS {runtime_param}) AND (SEASONS IS {seasons_param}) AND (EMOTIONS IS {emotions_param}) AND (GENRES IS {genres_param}) THEN (RECOMMENDATION IS high_recommendation)"
|
||||||
FS.add_rules([RULE1, RULE2, RULE3, RULE4, RULE5])
|
FS.add_rules([RULE1, RULE2, RULE3, RULE4, RULE5])
|
||||||
|
|
||||||
# FS.set_variable("RELEASE_YEAR", -12.0)
|
return FS
|
||||||
# FS.set_variable("RUNTIME", -10.0)
|
|
||||||
# FS.set_variable("SEASONS", -2.0)
|
|
||||||
# FS.set_variable("GENRES", 50.0)
|
|
||||||
# FS.set_variable("EMOTIONS", 1.0)
|
|
||||||
#
|
|
||||||
# print(FS.inference(["RECOMMENDATION"]))
|
|
||||||
|
|
||||||
# FS.produce_figure(outputfile='visualize_terms.pdf')
|
|
||||||
|
4
main.py
4
main.py
@ -16,7 +16,7 @@ from fastapi import FastAPI
|
|||||||
from scipy.spatial.distance import cosine
|
from scipy.spatial.distance import cosine
|
||||||
from sklearn.preprocessing import MultiLabelBinarizer
|
from sklearn.preprocessing import MultiLabelBinarizer
|
||||||
|
|
||||||
from engine import FS
|
from engine import fuzzy_system
|
||||||
|
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
data = pd.DataFrame()
|
data = pd.DataFrame()
|
||||||
@ -28,6 +28,8 @@ def inference(first: pandas.core.series.Series, second_id: str, df=None):
|
|||||||
else:
|
else:
|
||||||
second = data.loc[second_id]
|
second = data.loc[second_id]
|
||||||
|
|
||||||
|
FS = fuzzy_system(release_year_param='similar', runtime_param='similar', seasons_param='similar', genres_param='same', emotions_param='same')
|
||||||
|
|
||||||
year_diff = int(first['release_year'] - second['release_year'])
|
year_diff = int(first['release_year'] - second['release_year'])
|
||||||
FS.set_variable('RELEASE_YEAR', year_diff)
|
FS.set_variable('RELEASE_YEAR', year_diff)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user