Spaces:
Sleeping
Sleeping
yolo
Browse files- app/__pycache__/core.cpython-310.pyc +0 -0
- app/app.py +72 -2
- app/dashboard.ipynb +75 -5
- app/data/try.csv +102 -0
app/__pycache__/core.cpython-310.pyc
CHANGED
|
Binary files a/app/__pycache__/core.cpython-310.pyc and b/app/__pycache__/core.cpython-310.pyc differ
|
|
|
app/app.py
CHANGED
|
@@ -40,6 +40,7 @@ raw_ratings = pd.read_csv('data/raw_simulated_ratings.csv')
|
|
| 40 |
# crop to 5 rows and 7 columns
|
| 41 |
raw_ratings = raw_ratings.iloc[:5, :7]
|
| 42 |
|
|
|
|
| 43 |
|
| 44 |
|
| 45 |
|
|
@@ -73,7 +74,7 @@ dashboard_layout = html.Div([
|
|
| 73 |
], className='row'),
|
| 74 |
|
| 75 |
|
| 76 |
-
html.H1(children=
|
| 77 |
html.Div(
|
| 78 |
[
|
| 79 |
html.Div(
|
|
@@ -95,12 +96,81 @@ dashboard_layout = html.Div([
|
|
| 95 |
], className='row'),
|
| 96 |
|
| 97 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
|
| 99 |
|
| 100 |
|
| 101 |
|
| 102 |
|
| 103 |
-
])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 104 |
|
| 105 |
|
| 106 |
@app.callback(
|
|
|
|
| 40 |
# crop to 5 rows and 7 columns
|
| 41 |
raw_ratings = raw_ratings.iloc[:5, :7]
|
| 42 |
|
| 43 |
+
TEMPORARY_WINE_RECOMMENDATION_FORM_INFO = {}
|
| 44 |
|
| 45 |
|
| 46 |
|
|
|
|
| 74 |
], className='row'),
|
| 75 |
|
| 76 |
|
| 77 |
+
html.H1(children="Wine Recommender based on users' feedback", style={'textAlign':'center'}),
|
| 78 |
html.Div(
|
| 79 |
[
|
| 80 |
html.Div(
|
|
|
|
| 96 |
], className='row'),
|
| 97 |
|
| 98 |
|
| 99 |
+
html.H1(children="Wine Preferences Form", style={'textAlign':'center'}),
|
| 100 |
+
html.Div(
|
| 101 |
+
[
|
| 102 |
+
html.Div(
|
| 103 |
+
[
|
| 104 |
+
#Dropdown for wine name
|
| 105 |
+
dcc.Dropdown(wine_list, wine_list[0], id='dropdown-selection'),
|
| 106 |
+
dcc.Input(id='input-wine-rating', type='number', placeholder='Enter wine rating', min=1, max=5),
|
| 107 |
+
], className='six columns',
|
| 108 |
+
),
|
| 109 |
+
html.Div(
|
| 110 |
+
[
|
| 111 |
+
html.Button('Submit', id='submit-button', n_clicks=0),
|
| 112 |
+
], className='six columns',
|
| 113 |
+
),
|
| 114 |
+
], className='row'),
|
| 115 |
+
|
| 116 |
+
html.Div(id='recommended-wine-rating-info', style={'textAlign':'center'}),
|
| 117 |
+
html.Button('Reset', id='recommend-wine-from-form-reset', n_clicks=0),
|
| 118 |
+
# Button to submit the form
|
| 119 |
+
html.Button('Recommend Wine', id='recommend-wine-from-form', n_clicks=0),
|
| 120 |
+
html.Div(id='recommended-wine-form-output', style={'textAlign':'center'}),
|
| 121 |
+
|
| 122 |
+
|
| 123 |
|
| 124 |
|
| 125 |
|
| 126 |
|
| 127 |
|
| 128 |
+
], style={'background-color': '#333', 'font-family': 'Fantasy', 'color': '#999', 'padding': '10px'})
|
| 129 |
+
|
| 130 |
+
|
| 131 |
+
@app.callback(
|
| 132 |
+
Input('recommend-wine-from-form-reset', 'n_clicks'),
|
| 133 |
+
)
|
| 134 |
+
def reset_form(n_clicks):
|
| 135 |
+
if n_clicks > 0:
|
| 136 |
+
TEMPORARY_WINE_RECOMMENDATION_FORM_INFO.clear()
|
| 137 |
+
return
|
| 138 |
+
|
| 139 |
+
|
| 140 |
+
@app.callback(
|
| 141 |
+
Output('recommended-wine-rating-info', 'children'),
|
| 142 |
+
Input('submit-button', 'n_clicks'),
|
| 143 |
+
Input('dropdown-selection', 'value'),
|
| 144 |
+
Input('input-wine-rating', 'value'),
|
| 145 |
+
)
|
| 146 |
+
def update_output(n_clicks, wine_name, rating):
|
| 147 |
+
if n_clicks > 0:
|
| 148 |
+
TEMPORARY_WINE_RECOMMENDATION_FORM_INFO[wine_name] = rating
|
| 149 |
+
n_clicks = 0
|
| 150 |
+
return f'You rated {wine_name} with a score of {rating}'
|
| 151 |
+
return ''
|
| 152 |
+
|
| 153 |
+
@app.callback(
|
| 154 |
+
Output('recommended-wine-form-output', 'children'),
|
| 155 |
+
Input('recommend-wine-from-form', 'n_clicks'),
|
| 156 |
+
)
|
| 157 |
+
def recommend_wine_from_form(n_clicks):
|
| 158 |
+
if n_clicks > 0:
|
| 159 |
+
user = "temporary_user"
|
| 160 |
+
user_rating_df.loc[user] = TEMPORARY_WINE_RECOMMENDATION_FORM_INFO
|
| 161 |
+
user_rating_df.fillna(0, inplace=True)
|
| 162 |
+
user_rating_df['user'] = user_rating_df.index
|
| 163 |
+
|
| 164 |
+
|
| 165 |
+
wine_recommendation_from_user = core.recommend_wine_from_users(user_rating_df, user, 3)
|
| 166 |
+
wine_recommendation_from_user = f"Based on user form, we recommend: "+"; ".join(wine_recommendation_from_user)
|
| 167 |
+
return wine_recommendation_from_user
|
| 168 |
+
return ''
|
| 169 |
+
|
| 170 |
+
|
| 171 |
+
|
| 172 |
+
|
| 173 |
+
|
| 174 |
|
| 175 |
|
| 176 |
@app.callback(
|
app/dashboard.ipynb
CHANGED
|
@@ -2,14 +2,14 @@
|
|
| 2 |
"cells": [
|
| 3 |
{
|
| 4 |
"cell_type": "code",
|
| 5 |
-
"execution_count":
|
| 6 |
"metadata": {},
|
| 7 |
"outputs": [
|
| 8 |
{
|
| 9 |
"name": "stderr",
|
| 10 |
"output_type": "stream",
|
| 11 |
"text": [
|
| 12 |
-
"/var/folders/b4/lwfgccm95kqd2skcwvrt2fr00000gn/T/
|
| 13 |
"\n",
|
| 14 |
"Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
|
| 15 |
"\n"
|
|
@@ -30,7 +30,7 @@
|
|
| 30 |
" "
|
| 31 |
],
|
| 32 |
"text/plain": [
|
| 33 |
-
"<IPython.lib.display.IFrame at
|
| 34 |
]
|
| 35 |
},
|
| 36 |
"metadata": {},
|
|
@@ -93,6 +93,7 @@
|
|
| 93 |
"# crop to 5 rows and 7 columns\n",
|
| 94 |
"raw_ratings = raw_ratings.iloc[:5, :7]\n",
|
| 95 |
"\n",
|
|
|
|
| 96 |
"\n",
|
| 97 |
"\n",
|
| 98 |
"\n",
|
|
@@ -126,7 +127,7 @@
|
|
| 126 |
" ], className='row'),\n",
|
| 127 |
" \n",
|
| 128 |
" \n",
|
| 129 |
-
" html.H1(children=
|
| 130 |
" html.Div(\n",
|
| 131 |
" [\n",
|
| 132 |
" html.Div(\n",
|
|
@@ -148,12 +149,81 @@
|
|
| 148 |
" ], className='row'),\n",
|
| 149 |
" \n",
|
| 150 |
" \n",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 151 |
"\n",
|
| 152 |
" \n",
|
| 153 |
"\n",
|
| 154 |
" \n",
|
| 155 |
"\n",
|
| 156 |
-
"])\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 157 |
"\n",
|
| 158 |
"\n",
|
| 159 |
"@app.callback(\n",
|
|
|
|
| 2 |
"cells": [
|
| 3 |
{
|
| 4 |
"cell_type": "code",
|
| 5 |
+
"execution_count": 5,
|
| 6 |
"metadata": {},
|
| 7 |
"outputs": [
|
| 8 |
{
|
| 9 |
"name": "stderr",
|
| 10 |
"output_type": "stream",
|
| 11 |
"text": [
|
| 12 |
+
"/var/folders/b4/lwfgccm95kqd2skcwvrt2fr00000gn/T/ipykernel_4768/1094357399.py:82: FutureWarning:\n",
|
| 13 |
"\n",
|
| 14 |
"Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
|
| 15 |
"\n"
|
|
|
|
| 30 |
" "
|
| 31 |
],
|
| 32 |
"text/plain": [
|
| 33 |
+
"<IPython.lib.display.IFrame at 0x2b1675fc0>"
|
| 34 |
]
|
| 35 |
},
|
| 36 |
"metadata": {},
|
|
|
|
| 93 |
"# crop to 5 rows and 7 columns\n",
|
| 94 |
"raw_ratings = raw_ratings.iloc[:5, :7]\n",
|
| 95 |
"\n",
|
| 96 |
+
"TEMPORARY_WINE_RECOMMENDATION_FORM_INFO = {}\n",
|
| 97 |
"\n",
|
| 98 |
"\n",
|
| 99 |
"\n",
|
|
|
|
| 127 |
" ], className='row'),\n",
|
| 128 |
" \n",
|
| 129 |
" \n",
|
| 130 |
+
" html.H1(children=\"Wine Recommender based on users' feedback\", style={'textAlign':'center'}),\n",
|
| 131 |
" html.Div(\n",
|
| 132 |
" [\n",
|
| 133 |
" html.Div(\n",
|
|
|
|
| 149 |
" ], className='row'),\n",
|
| 150 |
" \n",
|
| 151 |
" \n",
|
| 152 |
+
" html.H1(children=\"Wine Preferences Form\", style={'textAlign':'center'}),\n",
|
| 153 |
+
" html.Div(\n",
|
| 154 |
+
" [\n",
|
| 155 |
+
" html.Div(\n",
|
| 156 |
+
" [\n",
|
| 157 |
+
" #Dropdown for wine name\n",
|
| 158 |
+
" dcc.Dropdown(wine_list, wine_list[0], id='dropdown-selection'),\n",
|
| 159 |
+
" dcc.Input(id='input-wine-rating', type='number', placeholder='Enter wine rating', min=1, max=5),\n",
|
| 160 |
+
" ], className='six columns',\n",
|
| 161 |
+
" ),\n",
|
| 162 |
+
" html.Div(\n",
|
| 163 |
+
" [\n",
|
| 164 |
+
" html.Button('Submit', id='submit-button', n_clicks=0), \n",
|
| 165 |
+
" ], className='six columns',\n",
|
| 166 |
+
" ),\n",
|
| 167 |
+
" ], className='row'),\n",
|
| 168 |
+
"\n",
|
| 169 |
+
" html.Div(id='recommended-wine-rating-info', style={'textAlign':'center'}),\n",
|
| 170 |
+
" html.Button('Reset', id='recommend-wine-from-form-reset', n_clicks=0),\n",
|
| 171 |
+
" # Button to submit the form\n",
|
| 172 |
+
" html.Button('Recommend Wine', id='recommend-wine-from-form', n_clicks=0),\n",
|
| 173 |
+
" html.Div(id='recommended-wine-form-output', style={'textAlign':'center'}),\n",
|
| 174 |
+
"\n",
|
| 175 |
+
"\n",
|
| 176 |
"\n",
|
| 177 |
" \n",
|
| 178 |
"\n",
|
| 179 |
" \n",
|
| 180 |
"\n",
|
| 181 |
+
"], style={'background-color': '#333', 'font-family': 'Fantasy', 'color': '#999', 'padding': '10px'})\n",
|
| 182 |
+
"\n",
|
| 183 |
+
"\n",
|
| 184 |
+
"@app.callback(\n",
|
| 185 |
+
" Input('recommend-wine-from-form-reset', 'n_clicks'),\n",
|
| 186 |
+
")\n",
|
| 187 |
+
"def reset_form(n_clicks):\n",
|
| 188 |
+
" if n_clicks > 0:\n",
|
| 189 |
+
" TEMPORARY_WINE_RECOMMENDATION_FORM_INFO.clear()\n",
|
| 190 |
+
" return\n",
|
| 191 |
+
" \n",
|
| 192 |
+
"\n",
|
| 193 |
+
"@app.callback(\n",
|
| 194 |
+
" Output('recommended-wine-rating-info', 'children'),\n",
|
| 195 |
+
" Input('submit-button', 'n_clicks'),\n",
|
| 196 |
+
" Input('dropdown-selection', 'value'),\n",
|
| 197 |
+
" Input('input-wine-rating', 'value'),\n",
|
| 198 |
+
")\n",
|
| 199 |
+
"def update_output(n_clicks, wine_name, rating):\n",
|
| 200 |
+
" if n_clicks > 0:\n",
|
| 201 |
+
" TEMPORARY_WINE_RECOMMENDATION_FORM_INFO[wine_name] = rating\n",
|
| 202 |
+
" n_clicks = 0\n",
|
| 203 |
+
" return f'You rated {wine_name} with a score of {rating}'\n",
|
| 204 |
+
" return ''\n",
|
| 205 |
+
"\n",
|
| 206 |
+
"@app.callback(\n",
|
| 207 |
+
" Output('recommended-wine-form-output', 'children'),\n",
|
| 208 |
+
" Input('recommend-wine-from-form', 'n_clicks'),\n",
|
| 209 |
+
")\n",
|
| 210 |
+
"def recommend_wine_from_form(n_clicks):\n",
|
| 211 |
+
" if n_clicks > 0:\n",
|
| 212 |
+
" user = \"temporary_user\"\n",
|
| 213 |
+
" user_rating_df.loc[user] = TEMPORARY_WINE_RECOMMENDATION_FORM_INFO\n",
|
| 214 |
+
" user_rating_df.fillna(0, inplace=True)\n",
|
| 215 |
+
" user_rating_df['user'] = user_rating_df.index\n",
|
| 216 |
+
"\n",
|
| 217 |
+
"\n",
|
| 218 |
+
" wine_recommendation_from_user = core.recommend_wine_from_users(user_rating_df, user, 3)\n",
|
| 219 |
+
" wine_recommendation_from_user = f\"Based on user form, we recommend: \"+\"; \".join(wine_recommendation_from_user)\n",
|
| 220 |
+
" return wine_recommendation_from_user\n",
|
| 221 |
+
" return ''\n",
|
| 222 |
+
"\n",
|
| 223 |
+
"\n",
|
| 224 |
+
"\n",
|
| 225 |
+
"\n",
|
| 226 |
+
"\n",
|
| 227 |
"\n",
|
| 228 |
"\n",
|
| 229 |
"@app.callback(\n",
|
app/data/try.csv
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
user,Azevedo,Gazela,Aura,Dedicado,Legado,Offley,Quinta dos Carvalhais,Série Ímpar,Antónia Adelaide Ferreira,Casa Ferreirinha,Finca Flichman,Herdade do peso,Marqués de Burgos,Porto Ferreira,Sandeman,Silk & Spice,Chateau Los Boldos,Framingham,LAN,Mateus,Quinta da Romeira,Santiago Ruiz,cluster,user
|
| 2 |
+
User1,0.0,2.0,0.0,4.0,0.0,0.0,3.0,4.0,2.0,0.0,5.0,3.0,0.0,0.0,0.0,4.0,2.0,0.0,0.0,3.0,5.0,0.0,0.0,User1
|
| 3 |
+
User2,0.0,5.0,1.0,0.0,0.0,5.0,0.0,4.0,0.0,0.0,0.0,0.0,0.0,4.0,0.0,0.0,0.0,3.0,0.0,3.0,0.0,3.0,1.0,User2
|
| 4 |
+
User3,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,4.0,4.0,2.0,4.0,0.0,0.0,4.0,1.0,0.0,0.0,0.0,0.0,3.0,1.0,3.0,User3
|
| 5 |
+
User4,4.0,0.0,0.0,0.0,0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,2.0,0.0,2.0,0.0,0.0,5.0,2.0,0.0,0.0,2.0,User4
|
| 6 |
+
User5,3.0,0.0,0.0,0.0,0.0,0.0,2.0,3.0,0.0,1.0,0.0,0.0,5.0,4.0,0.0,3.0,0.0,0.0,5.0,0.0,4.0,0.0,2.0,User5
|
| 7 |
+
User6,4.0,0.0,0.0,5.0,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.0,0.0,4.0,0.0,5.0,5.0,1.0,0.0,3.0,2.0,User6
|
| 8 |
+
User7,2.0,1.0,2.0,0.0,5.0,5.0,2.0,0.0,0.0,2.0,1.0,0.0,4.0,0.0,3.0,0.0,0.0,4.0,0.0,4.0,0.0,1.0,1.0,User7
|
| 9 |
+
User8,4.0,0.0,0.0,0.0,0.0,0.0,5.0,3.0,0.0,1.0,3.0,1.0,4.0,0.0,0.0,0.0,4.0,0.0,2.0,2.0,2.0,1.0,0.0,User8
|
| 10 |
+
User9,0.0,0.0,0.0,0.0,3.0,0.0,0.0,0.0,2.0,1.0,3.0,0.0,0.0,0.0,2.0,2.0,0.0,2.0,3.0,0.0,0.0,4.0,2.0,User9
|
| 11 |
+
User10,0.0,5.0,0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,2.0,0.0,0.0,4.0,1.0,0.0,0.0,0.0,2.0,1.0,0.0,2.0,2.0,User10
|
| 12 |
+
User11,0.0,0.0,0.0,0.0,4.0,5.0,3.0,0.0,2.0,0.0,5.0,0.0,0.0,0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,User11
|
| 13 |
+
User12,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,4.0,4.0,3.0,1.0,0.0,0.0,2.0,2.0,0.0,0.0,2.0,User12
|
| 14 |
+
User13,0.0,0.0,0.0,5.0,0.0,0.0,0.0,4.0,0.0,0.0,0.0,1.0,1.0,2.0,5.0,0.0,0.0,0.0,0.0,0.0,0.0,4.0,3.0,User13
|
| 15 |
+
User14,2.0,1.0,0.0,4.0,0.0,4.0,0.0,0.0,4.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,1.0,2.0,0.0,4.0,1.0,0.0,1.0,User14
|
| 16 |
+
User15,1.0,0.0,3.0,0.0,4.0,1.0,0.0,2.0,3.0,0.0,5.0,0.0,3.0,0.0,2.0,5.0,0.0,0.0,5.0,0.0,0.0,0.0,2.0,User15
|
| 17 |
+
User16,5.0,4.0,3.0,2.0,0.0,0.0,0.0,1.0,2.0,0.0,0.0,1.0,0.0,3.0,4.0,0.0,0.0,0.0,0.0,2.0,5.0,0.0,2.0,User16
|
| 18 |
+
User17,0.0,0.0,0.0,0.0,0.0,1.0,0.0,3.0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,5.0,0.0,5.0,0.0,0.0,1.0,User17
|
| 19 |
+
User18,3.0,0.0,1.0,0.0,5.0,5.0,0.0,0.0,1.0,3.0,0.0,0.0,0.0,0.0,2.0,0.0,0.0,0.0,0.0,5.0,0.0,0.0,1.0,User18
|
| 20 |
+
User19,1.0,3.0,4.0,1.0,0.0,4.0,0.0,3.0,3.0,0.0,1.0,3.0,0.0,0.0,0.0,0.0,5.0,5.0,1.0,0.0,3.0,0.0,3.0,User19
|
| 21 |
+
User20,1.0,0.0,0.0,5.0,0.0,3.0,1.0,0.0,2.0,0.0,1.0,0.0,0.0,0.0,1.0,0.0,2.0,3.0,0.0,5.0,2.0,1.0,1.0,User20
|
| 22 |
+
User21,3.0,1.0,3.0,0.0,4.0,1.0,0.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.0,0.0,User21
|
| 23 |
+
User22,0.0,5.0,0.0,0.0,1.0,5.0,5.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.0,0.0,0.0,4.0,1.0,2.0,2.0,0.0,1.0,User22
|
| 24 |
+
User23,0.0,0.0,0.0,0.0,0.0,4.0,0.0,5.0,0.0,4.0,0.0,2.0,0.0,0.0,0.0,0.0,0.0,5.0,0.0,0.0,0.0,0.0,3.0,User23
|
| 25 |
+
User24,0.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.0,5.0,4.0,5.0,3.0,0.0,3.0,0.0,2.0,0.0,0.0,0.0,4.0,2.0,User24
|
| 26 |
+
User25,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.0,1.0,3.0,1.0,3.0,0.0,0.0,0.0,4.0,1.0,5.0,5.0,0.0,0.0,0.0,3.0,User25
|
| 27 |
+
User26,3.0,1.0,4.0,0.0,0.0,5.0,1.0,2.0,0.0,2.0,2.0,0.0,0.0,5.0,0.0,2.0,5.0,0.0,2.0,5.0,0.0,4.0,2.0,User26
|
| 28 |
+
User27,4.0,0.0,5.0,0.0,0.0,0.0,0.0,3.0,1.0,3.0,0.0,0.0,1.0,0.0,0.0,1.0,4.0,0.0,3.0,0.0,5.0,0.0,0.0,User27
|
| 29 |
+
User28,1.0,0.0,4.0,0.0,3.0,4.0,0.0,0.0,0.0,0.0,2.0,0.0,5.0,0.0,0.0,0.0,1.0,0.0,5.0,2.0,1.0,0.0,2.0,User28
|
| 30 |
+
User29,0.0,1.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,3.0,0.0,1.0,0.0,2.0,0.0,0.0,0.0,0.0,0.0,4.0,3.0,0.0,2.0,User29
|
| 31 |
+
User30,0.0,0.0,0.0,0.0,0.0,3.0,0.0,0.0,0.0,0.0,1.0,0.0,4.0,0.0,0.0,0.0,0.0,4.0,2.0,0.0,3.0,0.0,2.0,User30
|
| 32 |
+
User31,3.0,5.0,2.0,0.0,0.0,5.0,0.0,0.0,0.0,0.0,5.0,0.0,2.0,0.0,0.0,3.0,0.0,0.0,0.0,4.0,4.0,1.0,2.0,User31
|
| 33 |
+
User32,0.0,0.0,0.0,0.0,4.0,1.0,0.0,4.0,1.0,0.0,0.0,0.0,0.0,0.0,2.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,3.0,User32
|
| 34 |
+
User33,0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,4.0,2.0,5.0,0.0,3.0,0.0,0.0,3.0,0.0,0.0,2.0,1.0,5.0,3.0,User33
|
| 35 |
+
User34,0.0,0.0,1.0,4.0,0.0,0.0,0.0,4.0,2.0,3.0,2.0,0.0,0.0,4.0,2.0,1.0,0.0,3.0,2.0,0.0,0.0,5.0,3.0,User34
|
| 36 |
+
User35,0.0,0.0,0.0,3.0,0.0,0.0,4.0,1.0,1.0,2.0,4.0,0.0,0.0,0.0,4.0,4.0,5.0,0.0,0.0,0.0,4.0,5.0,0.0,User35
|
| 37 |
+
User36,0.0,2.0,0.0,0.0,0.0,0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,User36
|
| 38 |
+
User37,0.0,0.0,0.0,0.0,4.0,3.0,0.0,2.0,0.0,1.0,0.0,5.0,0.0,1.0,0.0,2.0,5.0,0.0,0.0,0.0,1.0,1.0,3.0,User37
|
| 39 |
+
User38,4.0,3.0,5.0,1.0,2.0,0.0,0.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0,4.0,0.0,3.0,1.0,0.0,0.0,0.0,0.0,0.0,User38
|
| 40 |
+
User39,0.0,2.0,3.0,4.0,0.0,2.0,0.0,0.0,3.0,0.0,5.0,0.0,5.0,2.0,2.0,1.0,0.0,4.0,1.0,0.0,3.0,0.0,2.0,User39
|
| 41 |
+
User40,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.0,1.0,4.0,0.0,0.0,3.0,0.0,0.0,0.0,3.0,0.0,0.0,3.0,3.0,User40
|
| 42 |
+
User41,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.0,0.0,3.0,0.0,4.0,0.0,4.0,1.0,User41
|
| 43 |
+
User42,0.0,2.0,5.0,0.0,5.0,2.0,0.0,4.0,3.0,3.0,0.0,4.0,0.0,0.0,2.0,0.0,2.0,2.0,0.0,0.0,4.0,3.0,3.0,User42
|
| 44 |
+
User43,0.0,0.0,0.0,1.0,3.0,2.0,2.0,0.0,0.0,0.0,1.0,0.0,0.0,2.0,0.0,0.0,0.0,0.0,2.0,0.0,2.0,3.0,2.0,User43
|
| 45 |
+
User44,3.0,0.0,0.0,3.0,5.0,0.0,4.0,0.0,4.0,5.0,0.0,0.0,0.0,0.0,5.0,4.0,0.0,0.0,4.0,0.0,0.0,5.0,0.0,User44
|
| 46 |
+
User45,4.0,0.0,3.0,0.0,0.0,1.0,0.0,1.0,0.0,0.0,0.0,5.0,5.0,3.0,2.0,4.0,0.0,1.0,3.0,5.0,0.0,0.0,2.0,User45
|
| 47 |
+
User46,0.0,0.0,0.0,0.0,0.0,4.0,0.0,4.0,0.0,4.0,3.0,2.0,2.0,3.0,0.0,4.0,3.0,1.0,0.0,1.0,5.0,0.0,3.0,User46
|
| 48 |
+
User47,2.0,0.0,0.0,0.0,2.0,0.0,0.0,0.0,0.0,5.0,4.0,4.0,0.0,0.0,5.0,1.0,0.0,0.0,0.0,0.0,0.0,1.0,3.0,User47
|
| 49 |
+
User48,0.0,0.0,4.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,4.0,0.0,0.0,0.0,0.0,2.0,0.0,0.0,3.0,1.0,3.0,0.0,2.0,User48
|
| 50 |
+
User49,3.0,0.0,3.0,2.0,5.0,2.0,0.0,4.0,0.0,1.0,0.0,4.0,0.0,0.0,1.0,0.0,0.0,5.0,0.0,3.0,0.0,0.0,3.0,User49
|
| 51 |
+
User50,0.0,0.0,4.0,0.0,1.0,0.0,0.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.0,0.0,3.0,1.0,1.0,3.0,0.0,0.0,User50
|
| 52 |
+
User51,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,3.0,3.0,0.0,0.0,0.0,3.0,5.0,0.0,0.0,5.0,5.0,4.0,5.0,4.0,2.0,User51
|
| 53 |
+
User52,0.0,0.0,0.0,2.0,0.0,0.0,0.0,0.0,1.0,4.0,4.0,1.0,0.0,0.0,0.0,0.0,0.0,3.0,4.0,2.0,4.0,3.0,2.0,User52
|
| 54 |
+
User53,0.0,0.0,1.0,0.0,0.0,0.0,3.0,0.0,0.0,3.0,0.0,3.0,1.0,2.0,0.0,0.0,1.0,5.0,0.0,0.0,0.0,3.0,3.0,User53
|
| 55 |
+
User54,0.0,0.0,0.0,0.0,1.0,0.0,3.0,2.0,0.0,1.0,0.0,2.0,1.0,0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,4.0,0.0,User54
|
| 56 |
+
User55,0.0,0.0,0.0,0.0,1.0,5.0,0.0,0.0,0.0,0.0,0.0,5.0,0.0,0.0,0.0,2.0,0.0,1.0,0.0,4.0,0.0,1.0,1.0,User55
|
| 57 |
+
User56,0.0,0.0,5.0,3.0,3.0,0.0,0.0,0.0,3.0,0.0,0.0,4.0,0.0,5.0,0.0,2.0,0.0,0.0,5.0,3.0,0.0,0.0,2.0,User56
|
| 58 |
+
User57,3.0,0.0,0.0,0.0,0.0,4.0,0.0,1.0,0.0,4.0,5.0,0.0,0.0,5.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,2.0,User57
|
| 59 |
+
User58,0.0,0.0,0.0,4.0,4.0,0.0,0.0,0.0,0.0,1.0,0.0,5.0,0.0,0.0,0.0,0.0,4.0,0.0,0.0,5.0,1.0,4.0,1.0,User58
|
| 60 |
+
User59,0.0,0.0,1.0,0.0,3.0,1.0,0.0,0.0,0.0,4.0,3.0,0.0,3.0,2.0,0.0,0.0,3.0,0.0,5.0,5.0,3.0,0.0,2.0,User59
|
| 61 |
+
User60,5.0,0.0,5.0,5.0,3.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,2.0,3.0,0.0,0.0,0.0,0.0,4.0,0.0,0.0,User60
|
| 62 |
+
User61,0.0,0.0,5.0,0.0,4.0,0.0,0.0,2.0,2.0,0.0,0.0,2.0,0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.0,User61
|
| 63 |
+
User62,0.0,1.0,0.0,3.0,1.0,0.0,2.0,0.0,0.0,0.0,0.0,5.0,1.0,5.0,1.0,3.0,3.0,3.0,0.0,3.0,0.0,3.0,1.0,User62
|
| 64 |
+
User63,2.0,3.0,0.0,1.0,3.0,0.0,0.0,4.0,0.0,0.0,1.0,0.0,3.0,0.0,0.0,3.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,User63
|
| 65 |
+
User64,2.0,0.0,0.0,0.0,0.0,5.0,2.0,1.0,2.0,0.0,0.0,0.0,0.0,1.0,1.0,0.0,3.0,4.0,0.0,5.0,0.0,0.0,1.0,User64
|
| 66 |
+
User65,0.0,0.0,2.0,5.0,0.0,3.0,0.0,0.0,0.0,4.0,4.0,5.0,0.0,0.0,4.0,0.0,0.0,5.0,4.0,0.0,3.0,0.0,3.0,User65
|
| 67 |
+
User66,0.0,0.0,2.0,1.0,0.0,0.0,4.0,2.0,3.0,0.0,0.0,0.0,0.0,0.0,1.0,3.0,5.0,0.0,0.0,0.0,5.0,0.0,0.0,User66
|
| 68 |
+
User67,2.0,2.0,0.0,5.0,0.0,0.0,0.0,4.0,0.0,0.0,0.0,5.0,0.0,1.0,0.0,0.0,0.0,3.0,2.0,0.0,4.0,3.0,3.0,User67
|
| 69 |
+
User68,3.0,0.0,0.0,0.0,2.0,0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.0,3.0,4.0,0.0,0.0,0.0,0.0,0.0,User68
|
| 70 |
+
User69,0.0,4.0,0.0,1.0,0.0,1.0,0.0,4.0,0.0,0.0,0.0,0.0,0.0,4.0,4.0,4.0,3.0,0.0,5.0,0.0,5.0,0.0,0.0,User69
|
| 71 |
+
User70,0.0,0.0,4.0,0.0,5.0,0.0,4.0,0.0,0.0,3.0,0.0,0.0,5.0,2.0,2.0,3.0,3.0,5.0,1.0,4.0,4.0,1.0,0.0,User70
|
| 72 |
+
User71,4.0,5.0,0.0,1.0,2.0,3.0,1.0,4.0,0.0,0.0,2.0,1.0,2.0,0.0,1.0,0.0,0.0,1.0,5.0,0.0,1.0,0.0,2.0,User71
|
| 73 |
+
User72,0.0,0.0,3.0,1.0,3.0,0.0,2.0,3.0,0.0,3.0,0.0,3.0,4.0,1.0,5.0,0.0,1.0,3.0,0.0,0.0,1.0,0.0,3.0,User72
|
| 74 |
+
User73,5.0,3.0,2.0,0.0,3.0,0.0,3.0,1.0,3.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,0.0,3.0,1.0,2.0,0.0,1.0,0.0,User73
|
| 75 |
+
User74,4.0,5.0,0.0,2.0,0.0,0.0,1.0,5.0,0.0,0.0,0.0,0.0,0.0,0.0,5.0,2.0,0.0,5.0,0.0,2.0,2.0,5.0,0.0,User74
|
| 76 |
+
User75,2.0,1.0,0.0,3.0,0.0,0.0,5.0,0.0,3.0,0.0,4.0,3.0,0.0,0.0,0.0,3.0,2.0,2.0,0.0,1.0,0.0,5.0,0.0,User75
|
| 77 |
+
User76,0.0,4.0,0.0,0.0,1.0,0.0,3.0,2.0,0.0,0.0,3.0,0.0,0.0,4.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,User76
|
| 78 |
+
User77,3.0,0.0,0.0,0.0,2.0,5.0,1.0,0.0,0.0,0.0,2.0,4.0,0.0,3.0,5.0,0.0,0.0,4.0,0.0,0.0,0.0,0.0,1.0,User77
|
| 79 |
+
User78,0.0,2.0,0.0,2.0,1.0,0.0,0.0,0.0,5.0,3.0,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,5.0,0.0,0.0,0.0,2.0,User78
|
| 80 |
+
User79,0.0,0.0,5.0,0.0,0.0,0.0,4.0,1.0,5.0,0.0,2.0,0.0,0.0,0.0,1.0,0.0,0.0,2.0,0.0,0.0,3.0,3.0,0.0,User79
|
| 81 |
+
User80,0.0,2.0,0.0,2.0,0.0,0.0,5.0,0.0,1.0,4.0,0.0,0.0,0.0,5.0,3.0,0.0,0.0,0.0,4.0,1.0,0.0,0.0,2.0,User80
|
| 82 |
+
User81,5.0,0.0,5.0,0.0,0.0,5.0,5.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,5.0,4.0,3.0,0.0,0.0,0.0,0.0,0.0,User81
|
| 83 |
+
User82,0.0,0.0,0.0,0.0,5.0,0.0,1.0,0.0,0.0,4.0,5.0,2.0,0.0,0.0,0.0,0.0,4.0,3.0,0.0,0.0,0.0,0.0,3.0,User82
|
| 84 |
+
User83,0.0,0.0,1.0,3.0,0.0,5.0,0.0,0.0,4.0,5.0,0.0,0.0,0.0,5.0,2.0,0.0,3.0,0.0,0.0,1.0,4.0,0.0,3.0,User83
|
| 85 |
+
User84,1.0,0.0,3.0,0.0,0.0,1.0,2.0,0.0,1.0,1.0,4.0,2.0,4.0,3.0,0.0,0.0,0.0,0.0,0.0,4.0,1.0,3.0,2.0,User84
|
| 86 |
+
User85,0.0,4.0,4.0,0.0,5.0,0.0,0.0,0.0,0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0,0.0,3.0,User85
|
| 87 |
+
User86,0.0,0.0,0.0,2.0,5.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.0,1.0,4.0,5.0,2.0,3.0,0.0,0.0,0.0,2.0,0.0,User86
|
| 88 |
+
User87,0.0,0.0,0.0,0.0,3.0,2.0,2.0,2.0,0.0,0.0,2.0,0.0,3.0,0.0,3.0,0.0,0.0,0.0,1.0,1.0,0.0,3.0,2.0,User87
|
| 89 |
+
User88,2.0,0.0,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,1.0,4.0,3.0,0.0,4.0,4.0,0.0,4.0,2.0,User88
|
| 90 |
+
User89,0.0,0.0,4.0,5.0,1.0,2.0,0.0,0.0,2.0,0.0,0.0,3.0,0.0,5.0,5.0,0.0,0.0,0.0,5.0,0.0,0.0,3.0,2.0,User89
|
| 91 |
+
User90,3.0,2.0,0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,2.0,0.0,1.0,4.0,5.0,5.0,0.0,2.0,User90
|
| 92 |
+
User91,0.0,4.0,0.0,0.0,1.0,0.0,4.0,3.0,4.0,0.0,0.0,0.0,1.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,3.0,5.0,0.0,User91
|
| 93 |
+
User92,2.0,2.0,2.0,0.0,5.0,0.0,0.0,0.0,5.0,4.0,0.0,0.0,3.0,0.0,5.0,2.0,5.0,2.0,0.0,0.0,0.0,5.0,0.0,User92
|
| 94 |
+
User93,3.0,5.0,4.0,0.0,0.0,5.0,0.0,0.0,0.0,0.0,0.0,5.0,0.0,3.0,3.0,2.0,2.0,4.0,5.0,1.0,0.0,0.0,1.0,User93
|
| 95 |
+
User94,0.0,5.0,0.0,0.0,4.0,4.0,0.0,0.0,1.0,5.0,0.0,0.0,0.0,5.0,1.0,1.0,0.0,5.0,0.0,0.0,0.0,0.0,3.0,User94
|
| 96 |
+
User95,0.0,0.0,0.0,2.0,2.0,2.0,0.0,2.0,0.0,0.0,3.0,0.0,3.0,0.0,0.0,0.0,2.0,0.0,0.0,1.0,0.0,5.0,2.0,User95
|
| 97 |
+
User96,0.0,1.0,5.0,0.0,2.0,3.0,0.0,0.0,0.0,1.0,0.0,0.0,3.0,0.0,0.0,0.0,0.0,4.0,0.0,0.0,0.0,0.0,3.0,User96
|
| 98 |
+
User97,0.0,0.0,0.0,0.0,0.0,0.0,5.0,1.0,0.0,0.0,0.0,4.0,0.0,3.0,2.0,5.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,User97
|
| 99 |
+
User98,0.0,0.0,0.0,0.0,0.0,0.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,3.0,0.0,2.0,0.0,0.0,0.0,0.0,0.0,User98
|
| 100 |
+
User99,0.0,0.0,0.0,2.0,4.0,5.0,3.0,0.0,0.0,1.0,2.0,0.0,0.0,1.0,2.0,1.0,0.0,2.0,0.0,0.0,0.0,0.0,1.0,User99
|
| 101 |
+
User100,0.0,0.0,0.0,3.0,1.0,0.0,4.0,3.0,2.0,4.0,0.0,0.0,0.0,4.0,4.0,0.0,1.0,4.0,0.0,3.0,3.0,1.0,3.0,User100
|
| 102 |
+
temporary_user,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0
|