-
Notifications
You must be signed in to change notification settings - Fork 0
/
helper.py
223 lines (194 loc) · 13.3 KB
/
helper.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
# put all my changing info here
# gets imported into app.py
titles = {'portfolio': 'Data Science Portfolio',
'about': 'More About Me',
'index': "Hello, I'm Aaron Lee",
'arcade': "My Arcade",
'blog': 'My Blog',
'apps': 'Web Apps and Dashboards'
}
messages = {'portfolio': ['Featured below are some of my recent Data Science projects.',
'The skills for each project are noted in the descriptions'],
'about': ['I am a Data Scientist and Navy veteran who is passionate about STEM education and youth robotics mentorship.',
"See how I got here, and what skills I can bring to your business."],
'index': ["I am a creative and curious Data Scientist with expertise in data acquisition, data modeling, statistical analysis, machine learning, deep learning, and NLP."],
'arcade': ['I taught Python to high school students, and the vehicle I used was game making with the Pygame library.',
'Each semester, I made a gaming project right alongside my students.',
'Below, are a few examples of my games. Enjoy!'],
'blog': ['As a teacher, I enjoy reading and writing tutorial blogs.',
"I am a writer for the following publications on Medium: {}, {}, {}, {}, {}, {}, and {}".format('The Startup', 'Towards Data Science', 'Level Up Coding', 'Python in Plain English', 'CodeX', 'Data Driven Investor', 'Geek Culture')],
'apps': ['This website was made using Python and Flask.',
'I also chose to make companion webapps for selected data projects. '
'As a CS teacher, I taught Flask and simple webapp design.'
]
}
# latest projects
# each article [title, address, image]
blog_posts = [
['NLP Classification Using Keras RNN/LSTM',
'https://levelup.gitconnected.com/painless-classification-model-using-rnn-b90cb0982543',
'static/images/rnn_project.png', 'Level Up Coding'],
['Flask REST API',
'https://sciencelee.medium.com/13483c2556b?source=friends_link&sk=f689a8286361296030c1504c9eeedb04',
'static/images/api_blog.png', 'Level Up Coding'],
['Baseline Accuracy',
'https://towardsdatascience.com/calculating-a-baseline-accuracy-for-a-classification-model-a4b342ceb88f#30fd-8213094caad9',
'static/images/baseline_blog.png', 'Towards Data Science'],
['Do Traffic Cameras Make Intersections Safe?',
'https://towardsdatascience.com/chicago-red-light-cameras-and-traffic-safety-a6c5f08e5c4',
'static/images/rlc_blog.png', 'Towards Data Science'],
['Geocoding with Nomantim',
'https://levelup.gitconnected.com/simple-geocoding-in-python-fb28ee5272e0',
'static/images/geo_blog.png', 'Level Up Coding'],
['Plots With Pandas Groupby',
'https://python.plainenglish.io/making-plots-with-the-pandas-groupby-ac492941af28',
'static/images/groupby_blog.png', 'Python in Plain English'],
['Deploy Predictive Model with Flask',
'https://levelup.gitconnected.com/deploy-a-predictive-model-with-flask-33c1976293cc',
'static/images/deploy_flask.png', 'Level Up Coding'],
['PySpark in Google Colab',
'https://sciencelee.medium.com/using-pyspark-with-google-colab-8bca09c11f91',
'static/images/pyspark_blog.png', 'Medium'],
['Chain Store Election Modeling',
'https://towardsdatascience.com/are-you-a-trader-joes-democrat-or-a-walmart-republican-a7b156131435',
'static/images/election_blog.png', 'Towards Data Science'],
['Folium Maps (Housing)',
'https://levelup.gitconnected.com/visualizing-housing-data-with-folium-maps-4718ed3452c2',
'static/images/folium_blog.png', 'Level Up Coding'],
['Boruta Feature Selection',
'https://towardsdatascience.com/simple-example-using-boruta-feature-selection-in-python-8b96925d5d7a',
'static/images/boruta_blog.png', 'Towards Data Science'],
['Folium Maps (Earthquakes)',
'https://levelup.gitconnected.com/plotting-usgs-earthquake-data-with-folium-8f11ddc21950',
'static/images/earthquake_blog.png', 'Level Up Coding'],
['Multivariate Linear Regression',
'https://medium.com/swlh/multivariable-linear-regression-basics-62425ac4eafa',
'static/images/linreg_blog.png', 'The Startup'],
['Python List Comprehension Essentials',
'https://sciencelee.medium.com/list-comprehensions-for-beginners-fc4998991419?sk=c0359b92c9ead0f75f6fe8f7808af08e',
'static/images/comprehension_blog.png', 'Level Up Coding'],
['Python Sorting Essentials',
'https://levelup.gitconnected.com/sorting-in-python-using-keys-d2622edd7a92',
'static/images/sorting_blog.png', 'Level Up Coding'],
]
# each project [title, address, image, whet2lookfor]
projects = [['Chicago Red Light Camera Accident Study',
'https://github.com/sciencelee/chicago_rlc',
'static/images/rlc_project.png',
'''Significant data engineering project which combines data from more nine different sources and builds them into a single SQLite database. Features t-tests, Logistic Regression, Linear Regression, and Random Forest to build predictive and inferential models.'''],
['Pediatric X-ray classification',
'https://github.com/sciencelee/xray-pneumonia-ML',
'static/images/xray_project.png',
'''Convolutional Neural Network to predict presence of pneumonia at >98% accuracy. Model runs in google colab.'''],
['Chain Store Voting Habits',
'https://github.com/sciencelee/chainstore-election-model',
'static/images/vote_project.png',
'''Significant data engineering to combine 2018 congressional election results with state and county information,
combined with the presence of more than 20 store chains including: Starbucks, Target, Cracker Barrel, WalMart etc.
Web scraping with Beautiful Soup was used to get many store locations. GeoPandas used to place stores inside voting
districts. XGBoost and Random Forest models used to predict party voting habits by presence of stores at > 70% accuracy.
Use of Folium and Mapbox with Plotly.'''],
['King County Housing Model',
'https://github.com/sciencelee/seattle-housing-model',
'static/images/king_project.png',
'''Significant feature engineering including addition of school districts and other proximity features
to mapped locations. A linear Regression model created with only 5 features and an r2 score of 0.70'''],
['Twitter Sentiment Evaluator',
'https://github.com/sciencelee/twitter-sentiment-evaluator',
'static/images/twitter_project.png',
'''Features Natural Language Processing with nltk, GloVe vectors, and a data set of labeled twitter reviews on Apple and Google Products'''],
['College Recommendation System',
'https://github.com/sciencelee/college_api',
'static/images/college_project.png',
'''RESTful API and content based college recommendation system for college-bound students built in Flask.'''],
]
# each project [title, address, image, whet2lookfor]
apps = [
['Red Light Camera Web App (Plotly Dash)',
'https://rlc.sciencelee.com/',
'static/images/RLC_webapp.png',
'''Uses API queries to pull live data from multiple databases on Chicago Data Portal. Data visualizations in Plotly line/scatter/mapbox inside Dash application hosted on Heroku. Explore 150+ intersections and more than 8,000 red light crashes in an easy to use map.'''],
['FIRST Tech Challenge Team Maps Web App (Plotly Dash)',
'http://ftcapp.sciencelee.com//',
'static/images/ftc-app.png',
'''I have coached robotics teams hundreds of robotics students since 2008.
One of the competitions I have coached is FIRST Tech Challenge (FTC).
This dashboard web application uses API queries from The Orange Alliance (theorangealliance.com/api).
Maps are made in Plotly scatter_mapbox/geo_scatter/chorpletch within a Dash application hosted on Heroku.
Explore high score data for city, state, and country for over 3000 teams and 75k matches worldwide.'''],
['X-ray Classification Web App (Flask)',
'https://xray.sciencelee.com/',
'static/images/xray_webapp.png',
'''Flask web application that classifies user loaded image using an h5 stored CNN model hosted on Heroku.'''],
['This Portfolio Website! (Flask and Bootstrap CSS)',
'https://www.sciencelee.com/apps',
'static/images/website.png',
'''I have been teaching students to make small Flask web apps for three years,
so I decided to make my website portfolio using the same methods.
I used a template and Jinja notation to display info fed in from a static Python file.
Using Bootstrap and custom CSS, I wanted to give it a simple and consistent look that was easy to update.
'''
],
['College Recommendation API and web app',
'https://www.collegereco.com/',
'static/images/college_reco.png',
'''Collaboratively created a RESTful API to serve up results from a content based recommendation system allowing student users to
find similar colleges to those they have already identified as targets.
'''
]
]
# Arcade games
games = [['Blasteroids',
'https://sciencelee.trinket.io/sites/sciencelee-blasteroids',
'static/images/blasteroids.png',
'''Fun "Asteroids" style shooter with a few twists.
I'm proud of this one because it is made entirely with primitive shapes and trigonometry.
I aimed for fast processing and low resources on this game and was able to keep it at 60fps during gameplay.
The physics with the force shield make this a blast to play. I love this game. Takes about 10 seconds to load with hosting service.
'''],
['Word Jumble',
'https://sciencelee.trinket.io/sites/word-jumble',
'static/images/word_jumble.png',
'''"Boggle" style word game using the keyboard.
Spell as many words as you can in the time limit from the available letters.
Earn bonus points and time for big scrabble score words.
This project features a binary dictionary lookup, and a lot of debugging and tuning.
Warning: can be addictive! May take about 10 seconds to load with hosting service.
'''],
['Missile Defense',
'https://sciencelee.trinket.io/sites/mirv',
'static/images/mirv.png',
'''"Missile Command" style defense game using mouse or mobile.
I made this during first full year as a CS teacher, and set it up as a Raspberry Pi arcade game in my classroom.
This game gets wild pretty quickly.
'''],
['Tank Wars',
'https://sciencelee.trinket.io/sites/tank_wars',
'static/images/tanks.png',
'''"Two player tank battle using keyboard.
Head to head on the keyboard. First to 10 wins. Look out for lots of powerups!
'''],
]
about_title_text = "About title text"
skills = [["Programming Languages", [['Python', 5, '7+ years'], # language, level, years
['C++', 1, '7+ years'],
['JavaScript', 1, '2 years'],
['Java', 1, '2 years'],
] ],
["Data Analysis", [['Data Wrangling', 4, 'Pandas, NumPy, SQL'], # language, level, years
['Data Visualization', 4, 'Tableau, Matplotlib, Plotly, Seaborn, Folium'],
['Statistics', 4, 'Inferential and Descriptive'],
]
],
["Software Engineering", [['Front End', 3, 'HTML, CSS, JavaScript'], # language, level, years
['Frameworks', 3, 'Flask, Dash'],
['Database', 3, 'SQLite, MongoDB, PostgreSQL'],
['Deployment', 2, 'AWS', 'Heroku, Twilio'],
]
],
["Machine Learning", [['Supervised', 4, 'Classification, Regression, sklearn, statsmodel'], # language, level, years
['Unsupervised', 3, 'Clustering, PCA'],
['Deep Learning', 3, 'CNN, RNN, TensorFlow', 'PyTorch'],
]
],
]