practical-recommender-systems / moviegeek

A django website used in the book Practical Recommender Systems to illustrate how recommender algorithms can be implemented.
MIT License
901 stars 360 forks source link

Project dependencies may have API risk issues #66

Open PyDeps opened 1 year ago

PyDeps commented 1 year ago

Hi, In moviegeek, inappropriate dependency versioning constraints can cause risks.

Below are the dependencies and version constraints that the project is using

appdirs==1.4.3
boto==2.49.0
boto3==1.9.45
botocore==1.12.45
bz2file==0.98
certifi==2018.10.15
chardet==3.0.4
cycler==0.10.0
Django==2.2.27
django-extensions==2.1.3
docutils==0.14
gensim==3.6.0
idna==2.7
jmespath==0.9.3
kiwisolver==1.0.1
matplotlib==3.0.2
numpy==1.22.2
pandas==1.4.1
packaging==16.8
pyparsing==2.3.0
python-dateutil==2.8.2
pytz==2021.3
requests==2.20.1
s3transfer==0.1.13
scipy==1.8.0
seaborn==0.8.1
six==1.11.0
sklearn==0.0
smart-open==1.7.1
stop-words==2015.2.23.1
tqdm==4.28.1
urllib3==1.26.5
pyLDAvis==2.1.1

The version constraint == will introduce the risk of dependency conflicts because the scope of dependencies is too strict. The version constraint No Upper Bound and * will introduce the risk of the missing API Error because the latest version of the dependencies may remove some APIs.

After further analysis, in this project, The version constraint of dependency botocore can be changed to >=0.23.0,<=1.12.253. The version constraint of dependency Django can be changed to >=1.7,<=1.11.29. The version constraint of dependency django-extensions can be changed to >=0.7,<=3.1.5. The version constraint of dependency gensim can be changed to >=0.9.0,<=0.13.2. The version constraint of dependency matplotlib can be changed to >=1.3.0,<=3.0.3. The version constraint of dependency pandas can be changed to >=0.20.0,<=0.24.2. The version constraint of dependency requests can be changed to >=0.2.1,<=0.2.3. The version constraint of dependency requests can be changed to >=0.7.0,<=2.24.0. The version constraint of dependency requests can be changed to ==2.26.0. The version constraint of dependency scipy can be changed to >=0.12.0,<=0.17.1. The version constraint of dependency pyLDAvis can be changed to >=1.0.0,<=1.3.2. The version constraint of dependency pyLDAvis can be changed to >=1.3.4,<=3.2.2.

The above modification suggestions can reduce the dependency conflicts as much as possible, and introduce the latest version as much as possible without calling Error in the projects.

The invocation of the current project includes all the following methods.

The calling methods from the botocore
requests.get
The calling methods from the Django
django.http.JsonResponse
django.http.HttpResponse
django.conf.urls.include
django.core.wsgi.get_wsgi_application
django.shortcuts.render
django.setup
django.conf.urls.url
django.core.management.execute_from_command_line
The calling methods from the django-extensions
json.loads
The calling methods from the gensim
gensim.models.ldamodel.LdaModel.print_topics
gensim.models.ldamodel.LdaModel.save
gensim.corpora.Dictionary.doc2bow
gensim.models.ldamodel.LdaModel.load
gensim.similarities.MatrixSimilarity
gensim.corpora.Dictionary
gensim.models.ldamodel.LdaModel
The calling methods from the matplotlib
matplotlib.use
The calling methods from the pandas
pandas.unique
json.loads
pandas.DataFrame.from_records
The calling methods from the requests
requests.get
The calling methods from the scipy
scipy.sparse.coo_matrix
scipy.sparse.dok_matrix
scipy.sparse.dok_matrix.tocsr
scipy.sparse.coo_matrix.tocsr
scipy.sparse.coo_matrix.transpose
The calling methods from the pyLDAvis
pyLDAvis.gensim.prepare
The calling methods from the all methods
analytics.models.Rating.save
self.finished
load_data
analytics.models.Rating.objects.filter.delete
ratings.cat.codes.copy
self.builder.build
ratings.isin.groupby
selected.movies.all.order_by
self.min_sim.Q.item_id.Q.movie_ids.keys.Q.LdaSimilarity.objects.filter.order_by.order_by
pyLDAvis.gensim.prepare
numpy.random.shuffle
url.format
evaluator.evaluation_runner.EvaluationRunner.calculate
content_id.Log.objects.filter.order_by
cursor.fetchall
logging.getLogger
candidate_items.distinct.order_by.order_by
self.calculate_feature_functions_for_training_data
content_id.SeededRecs.objects.filter.order_by
set
gensim.corpora.Dictionary
ratings.user_id.unique
self.cf.predict_score
recommender.models.Similarity.objects.all
sample
self._get_conn
django.db.models.Count.Rating.objects.values.annotate.filter
download_movies.split
sorted
gensim.corpora.MmCorpus.serialize
moviegeeks.models.Genre.objects.all
self.l.info
moviegeeks.models.Genre.objects.get_or_create
content_id.Log.objects.filter.order_by.values
moviegeeks.models.Movie.objects.all.delete
end_date.start_date.Log.objects.filter.values
logging.getLogger.info
self.item_sum.reset_index
movie.genres.all
log_file.write
retrieve_buy_events
self.item_counts.reset_index
frozenset
select_action
x.tolist.train_data.groupby.apply.to_dict
dict
requests.get
self.rec.predict_score_by_ratings
collections.OrderedDict
self.min_overlap.overlap_matrix.count_nonzero
rated_movies.len.num.sorted_scores.astype
x.astype.std
get_genres
coo.transpose.astype
logfile.flush
main
self.split_users
FWLSCalculator.train
i_fac.dot
analytics.models.Rating.objects.values
user_id.Rating.objects.filter.order_by.values
django.db.models.Avg.item_id.Rating.objects.filter.values.annotate.first
LdaModel
self.item_factors.T.dot
this_test_ratings.unique
ItemSimilarityMatrixBuilder
int
user_id.Q.Rating.objects.filter.values
django.db.models.Count.ratings.values.Rating.objects.filter.values.annotate.filter.values
matplotlib.pyplot.figure
uuid.uuid1
bool.x.astype.sum
django.db.models.Count.Rating.objects.values.annotate.order_by
get_api_key
json.dump
train_data.groupby.apply
genres.items.items
django.db.models.DateTimeField
download_ratings.split
django.db.models.DateField
user_count.groupby.count
analytics.models.Rating.objects.all.values
ItemSimilarityMatrixBuilder.build
items.filter.annotate
seeds.seeds.SeededRecs.objects.filter.exclude.values.annotate
self.item_factors.T.dot.sort_values
self.rec.recommend_items_by_ratings
math.sqrt
calculate_implicit_ratings_w_timedecay
dictionary.items
ratings_df.as_matrix
FWLSCalculator.get_real_training_data
analytics.models.Cluster.objects.all
analytics.models.Rating.objects.all
moviegeeks.models.Movie.objects.all
load_all_ratings.groupby
django.shortcuts.render
sklearn.cluster.KMeans.fit
numpy.apply_along_axis
django.db.migrations.CreateModel
selected.movies.all
Z.reshape.reshape
nltk.tokenize.RegexpTokenizer
ratings.groupby.count
int.bool.coo.astype.astype.dot.count_nonzero
django.db.models.Avg.Rating.objects.all.aggregate.values
calculate_implicit_ratings_for_user
self.draw
analytics.models.Rating.objects.values.annotate
user_count.reset_index.reset_index
zip.items
collector.models.Log.save
builder.item_similarity_calculator.ItemSimilarityMatrixBuilder
analytics.models.Cluster.objects.all.delete
rule.rule.rule.str.rule.str.rule.SeededRecs.save
candidate_items.distinct.order_by
scipy.sparse.coo_matrix.count_nonzero
self.predict.tolist
moviegeeks.models.Movie.objects.get_or_create.split
moviegeeks.models.Movie.objects.get_or_create
calculate_association_rules
handle_pagination
item_id.user_id.Rating.objects.filter.exclude.order_by
RecommenderCoverage.calculate_coverage
evaluate_pop_recommender
collections.defaultdict.items
moviegeeks.models.Genre.objects.all.values.distinct.values
django.core.paginator.Paginator.page
sklearn.decomposition.PCA.fit_transform.min
gensim.similarities.MatrixSimilarity
random.sample
user_id.Rating.objects.filter.order_by
user_id.Rating.objects.filter.exclude
collector.models.Log.objects.filter.values
recommender.models.MovieDescriptions.objects.all
str
self.get_real_training_data
self.step
populate
content_id.Movie.objects.filter.first
dictfetchall
user_id.Log.objects.filter.order_by.values
len
ratings.append
d.lower
training_data_for_user.to_dict
self.log
user_id.Log.objects.filter.order_by
time.sleep
dot_product
self.recommend_items_by_ratings
moviegeeks.models.Movie.objects.filter.values
logging.basicConfig
dict.keys
next
self.prediction
argparse.ArgumentParser.add_argument
random.randint
time.time
exit
builder.fwls_calculator.FWLSCalculator
genres.items.append
matplotlib.pyplot.scatter
sklearn.decomposition.PCA
os.path.dirname
self.recommender.self.K.PrecisionAtK.calculate_mean_average_precision
pandas.DataFrame
builder.item_similarity_calculator.ItemSimilarityMatrixBuilder.build
builder.bpr_calculator.BayesianPersonalizationRanking
django.setup
user.select_genre
recommender.models.SeededRecs
builder.lda_model_calculator.LdaModel.build
analytics.models.Rating.objects.values.distinct
recs.fwls_recommender.FeatureWeightedLinearStacking.recommend_items
os.environ.setdefault
ratings.difference.np.apply_along_axis.sum
MatrixFactorization.train
gensim.models.ldamodel.LdaModel
logging.getLogger.debug
scipy.sparse.coo_matrix.nonzero
self._save_with_django
load_all_ratings
movie.genres.all.values
genres.items.keys
scipy.sparse.dok_matrix.tocsr
datetime.timedelta
self.save_lda_model
userid.Log.objects.filter.values.annotate
django.db.connection.cursor.execute
cor.multiply.multiply
RecommenderCoverage
math.exp
sqlite3.connect
scipy.sparse.coo_matrix.tocsr
yy.min
x.astype.min
x.astype.astype
seeds.SeededRecs.objects.filter.exclude
dict.items
collector.models.Log.objects.all
numpy.random.seed
sklearn.linear_model.LinearRegression.fit
self.train_data.sample
recommender.models.MovieDescriptions.objects.get_or_create.save
print
self.min_sim.Q.item_id.Q.movie_ids.keys.Q.LdaSimilarity.objects.filter.order_by
item_id.Q.user_id.Q.Rating.objects.filter.values.aggregate
session_id
transaction_id.transactions.append
get_descriptions
django.db.models.FloatField
calculate_implicit_ratings_for_user.items
recs.bpr_recommender.BPRRecs
matplotlib.pyplot.xlim
delete_db
min_number_of_ratings.Count.Rating.objects.values.annotate.filter.order_by.values_list
self.assertEqual
list.append
django.db.migrations.AlterField
moviegeeks.models.Movie.objects.all.count
ratings.isin.sum
save_rules
recs.popularity_recommender.PopularityBasedRecs.recommend_items_from_log
columns.train_data.as_matrix
calculate_support_confidence
scipy.sparse.dok_matrix
has_support
nltk.tokenize.RegexpTokenizer.tokenize
matplotlib.pyplot.plot
self.user_recs.append
ratings.groupby.transform
open
django.shortcuts.redirect
django.core.management.execute_from_command_line
django.db.models.Avg.seeds.seeds.SeededRecs.objects.filter.exclude.values.annotate.order_by
ratings.values.Rating.objects.filter.values.annotate
self.predict
r.json.loads
self.fun2
self.logger.info
list
recommender.models.Similarity.objects.filter
analytics.models.Rating.objects.filter.values
content_ids.LdaSimilarity.objects.filter.order_by.values
self.user_bias.keys
load_all_ratings.as_matrix
django.db.models.Avg
self.load_all_ratings
datetime.datetime.fromtimestamp
r.json.dump
self.item_bias.items.sorted.collections.OrderedDict.values
super
ratings.values.Rating.objects.filter.values
sklearn.metrics.pairwise.cosine_similarity
self.train
self.build_lda_model
recs.items
self.i_inx.keys
moviegeeks.models.Genre.objects.all.values.distinct
LdaModel.train
self.add_user_recs
recommender.models.Similarity.objects.bulk_create
recommender.models.MovieDescriptions.objects.get_or_create
self.calculate_using_ratings
this_user.users.keys
item_ids.Q.Rating.objects.filter.values.annotate
numpy.random.random_sample
recommender.models.Recs.objects.filter
django.core.paginator.Paginator
date.replace
min_sim.NeighborhoodBasedRecs.recommend_items
matplotlib.use
item_count.reset_index.reset_index
items.filter.annotate.filter
argparse.ArgumentParser.parse_args
select_film
django.db.models.Count.Cluster.objects.values.annotate.order_by
item_id.user_id.Recs.objects.filter.first
yy.max
source.issubset
gensim.similarities.MatrixSimilarity.save
sklearn.model_selection.train_test_split
calculate_itemsets_two
self.loss
max
round
self.load_data
movie_ids.values
self.cb.predict_score
genres.items.values
django.conf.urls.include
random.seed
self.get_conn
user.sessionId.user.events.append
title.split
pandas.DataFrame.from_records
range
output_str.format
evaluate_bpr_recommender
pickle.load
matplotlib.pyplot.clf
self.cf.recommend_items
os.path.exists
xx.min
psycopg2.connect
movie.genres.add
userid.Log.objects.filter.values
user_id.Log.objects.filter.order_by.values_list.distinct
django.core.wsgi.get_wsgi_application
analytics.models.Cluster.objects.values.annotate
decimal.Decimal
abs
sklearn.model_selection.KFold.split
sqlite3.connect.cursor
moviegeeks.models.Genre.objects.all.delete
self.calculate_rmse
seeds.seeds.SeededRecs.objects.filter.exclude.values
os.path.split
this_user.users.values
vector_cos
item_id.user_items.exclude.order_by.exclude
logfile.write
datetime.date.today
sims.append
ids.Similarity.objects.filter.exclude
ids.Movie.objects.filter.values
sklearn.model_selection.KFold
zip
recs.content_based_recommender.ContentBasedRecs.seeded_rec
scipy.sparse.coo_matrix.transpose
iter
self.create_loss_samples
self.save_similarities
evaluate_cb_recommender
self.compare_recs
self.predict_score_by_ratings
films.append
self.recommender.MeanAverageError.calculate
self.calculate_predictions_for_training_data
pyLDAvis.save_json
moviegeeks.models.Genre.objects.all.values.distinct.items
analytics.models.Cluster.objects.filter
matplotlib.pyplot.yticks
analytics.models.Rating.objects.all.values.distinct
argparse.ArgumentParser
end_date.start_date.Log.objects.filter.values.distinct
EvaluationRunner.calculate
u.events.items
user.get_session_id
users.keys
self.cb.recommend_items
test_ratings.groupby
UserClusterCalculator.calculate
time.mktime
that_user.users.keys
json.load
evaluate_fwls_recommender
pow
django.conf.urls.url
ensure_dir
calculate_all_movies_mean
format
datetime.datetime.now
collections.defaultdict
content_id.SeededRecs.objects.filter.order_by.values
os.makedirs
get_imdb_id
enumerate
recs.popularity_recommender.PopularityBasedRecs
urllib.request.urlopen.read
self.calculate_using_ratings_no_crossvalidation
that_user.users.values
itertools.combinations
yy.ravel
gensim.corpora.Dictionary.doc2bow
matplotlib.pyplot.savefig
recs.content_based_recommender.ContentBasedRecs.recommend_items
self._save_similarities
recs.keys
analytics.models.Rating.objects.all.delete
item_ids.Q.Rating.objects.filter.values
recs.bpr_recommender.BPRRecs.recommend_items
FWLSCalculator.calculate_feature_functions_for_training_data
genres.split
gensim.corpora.Dictionary.save
django.http.JsonResponse
float
key.difference
self.item_bias.items
download_movies
recommender.models.SeededRecs.objects.filter
self.save_similarities_with_django
self.stocastic_gradient_descent
test_ratings.unique
test_temp.groupby.head
self.save_clusters
self.clean_data
time.strftime
ratings.isin.isin
BayesianPersonalizationRanking.train
item_id.Rating.objects.filter.values
django.db.connection.cursor
numpy.zeros
sqlite3.connect.commit
recommender.models.LdaSimilarity
evaluator.algorithm_evaluator.MeanAverageError
BayesianPersonalizationRanking
psycopg2.extras.execute_values
analytics.models.Rating.split
bool.coo.transpose.astype.astype
django.db.models.Count
analytics.models.Rating.objects.count
scipy.sparse.coo_matrix.astype
django.db.models.IntegerField
isinstance
ratings.isin.astype
gensim.models.ldamodel.LdaModel.print_topics
request.GET.get
moviegeeks.models.Genre.objects.all.values
FWLSCalculator
os.path.join
list.values
django.db.models.AutoField
tqdm
response.read.decode
pickle.dump
self.fwls.fun2
query_aggregated_log_data_for_user
recommender.models.LdaSimilarity.objects.filter
texts.append
FWLSCalculator.calculate_predictions_for_training_data
arks.append
create_rating
recs.funksvd_recommender.FunkSVDRecs
self.cf.recommend_items_by_ratings
self.fun1
sklearn.cluster.KMeans.predict
MovieDto
analytics.models.Rating.objects.all.aggregate
save_ratings
moviegeeks.models.Genre.objects.filter
numpy.meshgrid
random.choice
analytics.models.Cluster.objects.values
datetime.datetime.now.strftime
json.loads
self.recall_at_k
django.db.models.CharField
calculate_implicit_ratings_for_user.keys
gensim.models.ldamodel.LdaModel.save
matplotlib.pyplot.imshow
scipy.sparse.coo_matrix
user_id.Rating.objects.filter.count
calculate_association_rules.append
User
tqdm.tqdm
map
numpy.dot
evaluate_cf_recommender
moviegeeks.models.Movie.objects.get_or_create.save
int.bool.coo.astype.astype.dot
moviegeeks.models.Movie.objects.filter
build_association_rules
recommender.models.MovieDescriptions.objects.filter
collector.models.Log.objects.all.delete
test_user_ids.Rating.objects.filter.values
analytics.models.Cluster
requests.get.json
apks.append
builder.matrix_factorization_calculator.MatrixFactorization
self.split_data
sklearn.decomposition.PCA.fit_transform
pandas.unique
test_users.ratings.isin.ratings.sort_values.groupby
self.average_precision_k
recs.popularity_recommender.PopularityBasedRecs.recommend_items
django.db.connection.cursor.fetchall
monthdelta
self.remove_stopwords
user_id.Log.objects.filter.order_by.values_list
outfile.write
self.train_data.apply
EvaluationRunner
open.read
moviegeeks.models.Movie.objects.order_by
bool.coo.astype.astype
test_temp.index.isin
switcher.get
self.load_model
create_movie
sklearn.linear_model.LinearRegression
content_id.SeededRecs.objects.filter.values
content_ids.LdaSimilarity.objects.filter.order_by
conn.cursor.execute
generate_transactions
movie_id.Movie.objects.filter.first
pandas.DataFrame.to_json
recs.content_based_recommender.ContentBasedRecs
stop_words.get_stop_words
user_id
collector.models.Log
gensim.models.ldamodel.LdaModel.load
test_users.ratings.isin.ratings.sort_values
min_number_of_ratings.Count.Rating.objects.values.annotate.filter.order_by
collector.models.Log.objects.values
ratings.groupby.sum
os.path.abspath
django.db.migrations.RemoveField
analytics.models.Cluster.objects.filter.values
i.user_ids.cluster_label.Cluster.save
item_id.user_items.exclude.order_by
min
django.db.models.ManyToManyField
analytics.models.Rating.objects.bulk_create
normalize
open.close
selected.movies.order_by
xx.max
django.db.models.Count.ratings.values.Rating.objects.filter.values.annotate.filter
self.clean_data.isin
analytics.models.Rating.objects.filter
matplotlib.pyplot.xticks
sum
collector.models.Log.objects.values.distinct
download_ratings
django.http.HttpResponse
time.strptime
self.cb.recommend_items_by_ratings
query_log_for_users
analytics.models.Rating
self.save_similarities_with_postgre
user_id.Cluster.objects.filter.first
recs.fwls_recommender.FeatureWeightedLinearStacking
numpy.arange
recs.neighborhood_based_recommender.NeighborhoodBasedRecs
recommender.models.Similarity
moviegeeks.models.Genre.objects.all.values.distinct.keys
collector.models.Log.objects.filter
self.u_inx.keys
self.recommender.recommend_items
item_id.Q.user_id.Q.Rating.objects.filter.values
sim.y_id.x_id.created.LdaSimilarity.save
self.merge_predictions
urllib.request.urlopen
evaluator.evaluation_runner.EvaluationRunner
recommender.models.Similarity.objects.all.delete
MatrixFactorization
train.append.append
sklearn.cluster.KMeans
moviegeeks.models.Movie.objects.all.order_by
sklearn.decomposition.PCA.fit_transform.max
self.save
query_log_data_for_user
numpy.full
candidate_items.distinct.order_by.distinct
UserClusterCalculator
recs.funksvd_recommender.FunkSVDRecs.recommend_items
func
analytics.models.Rating.objects.all.count
x.astype.sum
ratings_for_rec.to_dict
self.fwls.fun1
self.initialize_factors
evaluate_funksvd_recommender
user_count.reset_index.groupby
xx.ravel
logging.getLogger.error
movie_ids.keys
item_id.user_id.Rating.objects.filter.exclude.order_by.values
evaluator.algorithm_evaluator.PrecisionAtK
moviegeeks.models.Genre.objects.get_or_create.save
calculate_ratings
calculate_decay
type.datetime.datetime.now.rating.content_id.str.user_id.Rating.save
self.logger.debug
django.db.models.Q
item_id.Rating.objects.filter.values.annotate
csv.DictReader
calculate_itemsets_one
self.save_user_recs
columns.test_data.as_matrix
operator.itemgetter
gensim.models.ldamodel.LdaModel.load.print_topics
self.DecimalEncoder.super._iterencode
self.recommender.set_save_path
django.db.models.DecimalField
matplotlib.pyplot.ylim
x.astype.max
item_id.ids.Similarity.objects.filter.exclude.filter
matplotlib.pyplot.title
user_id.Q.Rating.objects.filter.values.annotate

@developer Could please help me check this issue? May I pull a request to fix it? Thank you very much.