содержимое motors.py:
import pandas as pd
import time
import redis
from flask import current_app
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import linear_kernel
def info(msg):
current_app.logger.info(msg)
class ContentEngine(object):
SIMKEY = 'p:smlr:%s'
def __init__(self):
self._r = redis.StrictRedis.from_url(current_app.config['REDIS_URL'])
def train(self, data_source):
start = time.time()
ds = pd.read_csv(data_source)
info("Training data ingested in %s seconds." % (time.time() - start))
# Flush the stale training data from redis
self._r.flushdb()
start = time.time()
self._train(ds)
info("Engine trained in %s seconds." % (time.time() - start))
def _train(self, ds):
tf = TfidfVectorizer(analyzer='word', ngram_range=(1, 3), min_df=0, stop_words='english')
tfidf_matrix = tf.fit_transform(ds['description'])
cosine_similarities = linear_kernel(tfidf_matrix, tfidf_matrix)
for idx, row in ds.iterrows():
similar_indices = cosine_similarities[idx].argsort()[:-100:-1]
similar_items = [(cosine_similarities[idx][i], ds['id'][i]) for i in similar_indices]
# First item is the item itself, so remove it.
# This 'sum' is turns a list of tuples into a single tuple: [(1,2), (3,4)] -> (1,2,3,4)
flattened = sum(similar_items[1:], ())
self._r.zadd(self.SIMKEY % row['id'], *flattened)
def predict(self, item_id, num):
return self._r.zrange(self.SIMKEY % item_id, 0, num-1, withscores=True, desc=True)
content_engine = ContentEngine()
ошибка msg при попытке обучить модель:
[2020-01-17 06:38:49,303] INFO in engines: Training data ingested in 0.009774923324584961 seconds.
127.0.0.1 - - [17/Jan/2020 06:38:49] "GET /train HTTP/1.1" 500 -
Traceback (most recent call last):
File "/home/jayesh/Desktop/content-engine/env/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/home/jayesh/Desktop/content-engine/env/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/jayesh/Desktop/content-engine/web.py", line 14, in decorated_function
return f(*args, **kwargs)
File "/home/jayesh/Desktop/content-engine/web.py", line 34, in train
content_engine.train(data_url)
File "/home/jayesh/Desktop/content-engine/engines.py", line 29, in train
self._train(ds)
File "/home/jayesh/Desktop/content-engine/engines.py", line 62, in _train
self._r.zadd(self.SIMKEY % row['id'], *flattened)
TypeError: zadd() takes from 3 to 7 positional arguments but 198 were given
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/jayesh/Desktop/content-engine/env/lib/python3.7/site-packages/flask/app.py", line 2463, in __call__
return self.wsgi_app(environ, start_response)
File "/home/jayesh/Desktop/content-engine/env/lib/python3.7/site-packages/flask/app.py", line 2449, in wsgi_app
response = self.handle_exception(e)
File "/home/jayesh/Desktop/content-engine/env/lib/python3.7/site-packages/flask/app.py", line 1866, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/jayesh/Desktop/content-engine/env/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/home/jayesh/Desktop/content-engine/env/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/home/jayesh/Desktop/content-engine/env/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/jayesh/Desktop/content-engine/env/lib/python3.7/site-packages/flask_api/app.py", line 96, in handle_user_exception
app_handlers = self.error_handler_spec[None].get(None, ())
KeyError: None
ошибка выскакивает каждый раз ..... я попытался установить conda, но он все еще не работал при первом подходе, я создал виртуальную среду как для python, так и для conda, но после активации они не могут найти модули. Поэтому я перенес все зависимости в pip и после запуска показывает, что zadd () вызывает ошибку функции