Skip to content

Instantly share code, notes, and snippets.

View dradecic's full-sized avatar

Dario Radečić dradecic

View GitHub Profile
@dradecic
dradecic / recommender1_5_rating_by_genre.py
Created September 29, 2019 10:27
recommender1_5_rating_by_genre
values = defaultdict(list)
for ind, row in data.iterrows():
for genre in row['genres'].split('|'):
values[genre].append(row['rating'])
genre_lst, rating_lst = [], []
for key, item in values.items():
if key not in [0, 1]:
genre_lst.append(key)
@dradecic
dradecic / recommender1_bar_chart.py
Created September 29, 2019 10:26
recommender1_bar_chart
def make_bar_chart(dataset, attribute, bar_color='#3498db', edge_color='#2980b9', title='Title', xlab='X', ylab='Y', sort_index=False):
if sort_index == False:
xs = dataset[attribute].value_counts().index
ys = dataset[attribute].value_counts().values
else:
xs = dataset[attribute].value_counts().sort_index().index
ys = dataset[attribute].value_counts().sort_index().values
fig, ax = plt.subplots(figsize=(14, 7))
@dradecic
dradecic / recommender1_4_genres.py
Created September 29, 2019 10:25
recommender1_4_genres
genre_df = pd.DataFrame(data['genres'].str.split('|').tolist(), index=data['movieId']).stack()
genre_df = genre_df.reset_index([0, 'movieId'])
genre_df.columns = ['movieId', 'Genre']
@dradecic
dradecic / recommender1_3_histogram.py
Created September 29, 2019 10:22
recommender1_3_histogram
def make_histogram(dataset, attribute, bins=25, bar_color='#3498db', edge_color='#2980b9', title='Title', xlab='X', ylab='Y', sort_index=False):
if attribute == 'moviePubYear':
dataset = dataset[dataset['moviePubYear'] != 9999]
fig, ax = plt.subplots(figsize=(14, 7))
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.set_title(title, fontsize=24, pad=20)
ax.set_xlabel(xlab, fontsize=16, labelpad=20)
ax.set_ylabel(ylab, fontsize=16, labelpad=20)
@dradecic
dradecic / recommender_1_obtaining_years.py
Created September 29, 2019 10:21
recommender_1_obtaining_years
years = []
for title in data['title']:
year_subset = title[-5:-1]
try: years.append(int(year_subset))
except: years.append(9999)
data['moviePubYear'] = years
print(len(data[data['moviePubYear'] == 9999]))
@dradecic
dradecic / recommender_1_imports.py
Created September 29, 2019 10:20
recommender_1_imports
%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from collections import defaultdict
# read CSVs
movies = pd.read_csv('data/movies.csv')
ratings = pd.read_csv('data/ratings.csv')
@dradecic
dradecic / recommender2_2_function.py
Created September 29, 2019 09:39
recommender2_2_function
def get_similar_movies(movie_title, n_ratings_filter=100, n_recommendations=5):
similar = matrix.corrwith(matrix[movie_title])
corr_similar = pd.DataFrame(similar, columns=['correlation'])
corr_similar.dropna(inplace=True)
orig = data.copy()
corr_with_movie = pd.merge(
left=corr_similar,
right=orig,
@dradecic
dradecic / recommender2_1_matrix
Created September 29, 2019 09:39
recommender2_1_matrix
matrix = data.pivot_table(
index='userId',
columns='title',
values='rating'
)
@dradecic
dradecic / kickstarter_pledged_per_title.py
Created September 23, 2019 23:05
kickstarter_pledged_per_title
data['name_length'] = data['name'].apply(lambda x: len(str(x)))
data['name_length_group'] = pd.qcut(data['name_length'], 10)
pledged_per_length_agg = data[['pledged', 'name_length_group']].groupby('name_length_group').median()
indexes = []
for val in pledged_per_length_agg.index.tolist():
indexes.append(str(val))
xs = indexes
ys = np.ravel(pledged_per_length_agg.values)
@dradecic
dradecic / kickstarter_money_goal_pledged.py
Created September 23, 2019 22:59
kickstarter_money_goal_pledged
goal_df = data[['goal', 'pledged', 'main_category']]
goal_df_grouped = goal_df.groupby(by='main_category').median()
xs = np.array(goal_df_grouped.index)
ys_1 = goal_df_grouped['goal'].values
ys_2 = goal_df_grouped['pledged'].values
fig, ax = plt.subplots(figsize=(14, 7))
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)