<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Garrett Williams on Medium]]></title>
        <description><![CDATA[Stories by Garrett Williams on Medium]]></description>
        <link>https://medium.com/@garrettwilliams90?source=rss-af1adb41a7df------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*p_kAdtFW9hqOWQe95Hc9Uw.jpeg</url>
            <title>Stories by Garrett Williams on Medium</title>
            <link>https://medium.com/@garrettwilliams90?source=rss-af1adb41a7df------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 24 May 2026 02:24:38 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@garrettwilliams90/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[A Summary of PageRank]]></title>
            <link>https://medium.com/@garrettwilliams90/a-summary-of-pagerank-95855eb7f46a?source=rss-af1adb41a7df------2</link>
            <guid isPermaLink="false">https://medium.com/p/95855eb7f46a</guid>
            <category><![CDATA[google]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[search-engine-optimizati]]></category>
            <category><![CDATA[pagerank]]></category>
            <category><![CDATA[big-data]]></category>
            <dc:creator><![CDATA[Garrett Williams]]></dc:creator>
            <pubDate>Mon, 08 Nov 2021 03:30:58 GMT</pubDate>
            <atom:updated>2022-03-04T00:07:18.233Z</atom:updated>
            <content:encoded><![CDATA[<h4>The Algorithm that Launched Google into a Tech Giant</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/550/1*N8gSuGGGgKCDLHWIqgqigg.png" /></figure><p>“Just Google It.” That phrase has become ingrained in our society. Whenever we need to search for something on the web, over 80% of people choose Google’s search engine to find what they are looking for. But why is Google’s search engine so popular? And how was it constructed? It all started with PageRank. Below, I will attempt to summarize PageRank and the findings from this <a href="http://ilpubs.stanford.edu:8090/422/1/1999-66.pdf">research paper</a>.</p><h4>Background</h4><p>In 1990, the very first search engine, Archie, was developed by a student at McGill University in Montreal, Canada. Over the next couple of years, more search engines were created including Infoseek (used by Netscape), Yahoo! Search, WebCrawler (bought by AOL), and AskJeeves. Though they were primitive, each search engine strived to become more optimized than the previous. In 1996, as students at Standford, Sergey Brin and Larry Page developed a new algorithm for optimizing web page searches, called PageRank.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/811/1*btTmjNcWdDqOcdrJP9TIwA.jpeg" /><figcaption>Sergey Brin and Larry Page developed PageRank while being students at Stanford</figcaption></figure><h4>What Is PageRank?</h4><p>Even in the 90s, there were hundreds of millions of web pages ranging from extremely diverse topics like “What is Joe having for lunch today?” to journals on information retrieval. Brin and Page wanted to create “a method for rating Web pages objectively and mechanically, effectively measuring the human interest and attention devoted to them.” And that’s what they did with PageRank. Essentially, <strong>PageRank is an algorithm to measure the relative importance of web pages by computing a ranking for every web page.</strong> It helps search engines and users quickly make sense of the vast environment that is the World Wide Web.</p><h4>How Does It Work?</h4><p>According to Google, “<strong>PageRank works by counting the number and quality of links to a page to determine a rough estimate of how important the website is. The underlying assumption is that more important websites are likely to receive more links from other websites.</strong>” This theory can be boiled down to a simple formula below (where Σ means adding together).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/554/1*Yhe3CAGavOU-onGoIAl5yg.jpeg" /></figure><p>Let’s look at a simple illustration to better understand how PageRank is calculated. Let’s imagine we only have 5 webpages, labeled <em>Page_0, Page_1, Page_2, Page_3,</em> and <em>Page_4</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/446/1*dDhgjyAY8wR_V9uGosZIgA.png" /><figcaption>Simple illustration of 5 web pages that are linked together</figcaption></figure><p>The PageRank for <em>Page_0</em> is:</p><blockquote>PR(Page_0) = PR(Page_4)/3</blockquote><p>This is because <em>Page_4</em> is the only page that links to <em>Page_0</em> but it also links to 2 other web pages (<em>Page_1</em> and <em>Page 2</em>). The PageRank for <em>Page_1,</em></p><blockquote>PR(Page_1) = PR(Page_2)/2 + PR(Page_3)/1 + PR(Page_4)/3</blockquote><h4>Damping Factor and Final Formula</h4><p>But what if there is a web page that doesn’t have any links toward it. Or what if the random surfer gets stuck in a loop between 2 or more web pages (i.e. Page_5 only links to Page_6 and Page_6 only links to Page_5). So they had to add a damping factor into the final formula. What this does is add a probability that some random surfer would stop following the links and go to a completely random web page. Therefore, every website has a chance to be clicked on, no matter where the random surfer starts. It is generally assumed that the damping factor is set to 0.85. So, the final formula is:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/355/1*sLXMrFkyyB08JT33kikxJw.jpeg" /><figcaption>Final Formula</figcaption></figure><p>where <em>u</em> is any web page, <em>v</em> is any webpage that links to <em>u</em>, <em>N(v)</em> is the number of links on web page <em>v, </em>and<em> d </em>is the damping factor. Notice how the random surfer will “jump” to a web page every so often.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/960/1*hW-LscVAxlcWR7w8PLUY1Q.gif" /><figcaption>It starts at web page d, following the links, but making a “jump” every so often</figcaption></figure><h4>Implementation</h4><p>Since we have our formula, the algorithm steps are as follows. In the beginning, set the PageRank of each web page equal to 1. For each iteration of the random surfer, update the PageRank of each web page. After enough iterations, the PageRank values for each page will converge. Below you can see an example of what the outcome would look it if there were only a handful of web pages. The values for this tiny network are expressed in percentages.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tI4U3Gs_SbJa2Cq1PCKcOA.png" /></figure><p>As you can see, web page B is a more important webpage, having more links pointing to it. And even though web page E has more links pointing to it than web page C, web page C has a higher score because web page B, the most important web page, it linking to it.</p><h4>Conclusion</h4><p>In the end, Sergey Brin and Larry Page took on the audacious task of condensing every page on the World Wide Web, regardless of their content, into a single number. Two years after making this discovery, in 1998, Google was founded. At the time, Google was just a search engine that would use PageRank to order search results so that more important web pages are given preference. I think it’s safe to say it worked out pretty well. That same year, they published their findings as a research paper titled <a href="http://ilpubs.stanford.edu:8090/422/1/1999-66.pdf">“The PageRank Citation Ranking: Bringing Order to the Web”</a>. Today, Google still uses PageRank along with 200 other more complex algorithms. That’s a testament to how revolutionary their findings were.</p><h4>References</h4><p><a href="http://ilpubs.stanford.edu:8090/422/1/1999-66.pdf">http://ilpubs.stanford.edu:8090/422/1/1999-66.pdf</a></p><p><a href="https://towardsdatascience.com/pagerank-algorithm-fully-explained-dc794184b4af">https://towardsdatascience.com/pagerank-algorithm-fully-explained-dc794184b4af</a></p><p><a href="https://en.wikipedia.org/wiki/PageRank">https://en.wikipedia.org/wiki/PageRank</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=95855eb7f46a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Stepwise Feature Selection for Statsmodels]]></title>
            <link>https://medium.com/@garrettwilliams90/stepwise-feature-selection-for-statsmodels-fda269442556?source=rss-af1adb41a7df------2</link>
            <guid isPermaLink="false">https://medium.com/p/fda269442556</guid>
            <category><![CDATA[tutorial]]></category>
            <category><![CDATA[statsmodels]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[feature-selection]]></category>
            <category><![CDATA[flatiron-school]]></category>
            <dc:creator><![CDATA[Garrett Williams]]></dc:creator>
            <pubDate>Mon, 18 Oct 2021 03:18:53 GMT</pubDate>
            <atom:updated>2021-10-18T03:32:30.793Z</atom:updated>
            <content:encoded><![CDATA[<h4>A Tutorial for Writing a Helper Function</h4><p>As Data Scientists, when we are modeling we need to ask “What are we modeling for, prediction or inference?” Are we trying to use the model to predict outcomes from new data? Or, are we trying to gain insight into how different features affect the target variable? If we are modeling for prediction, we typically use all available features because we are trying to accurately predict the outcome, no matter the cost. For inferential modeling (also known as statistical modeling), we want to interpret how certain features affect our target variable and what happens to our target when we change those features. This means we want to use statistics to determine which features have the greatest effect on our target.</p><h4>Statsmodels</h4><p>A great package in Python to use for inferential modeling is statsmodels. It allows us to explore data, make linear regression models, and perform statistical tests. You can find their website <a href="https://www.statsmodels.org/stable/index.html#">here</a> and their API documentation <a href="https://www.statsmodels.org/stable/api.html">here</a>. Despite all of the benefits of using statsmodels, one major flaw is that it doesn’t have a method to help you decide what are the best features to include in your model. And when we say ‘best’, that can have many different meanings. It could mean features that result in the highest R-squared value, the lowest RMSE, or just the easiest to interpret to a non-technical audience. Even though it doesn’t have a built-in method for selecting features, it won’t be hard for us to code one.</p><h4>Tutorial</h4><p>For this tutorial, we’ll first code a solution for how to select an optimal first feature. Then, we’ll modify this solution into a function that can be called each step of our modeling process. This will save us time so we don’t have to retype code. Let’s import our necessary packages and read our dataset so we know what we are working with.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/26a36ec3776578d7c241ce45e72763d2/href">https://medium.com/media/26a36ec3776578d7c241ce45e72763d2/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*nqGew7t2lK-AH2kREhX8zQ.png" /></figure><p>After preparing our data so that all our columns are numeric data types with no null values, we are left with these features.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0ypC8DBI_xxh8v0UUTG1EQ.png" /></figure><p>Based on our understanding of the data, let’s have our target variable be price, the price of the homes sold in King County, Washington from 2014 through 2015. Our independent variables will be the other 31 features. It would be hard to interrupt the price based on 31 different factors, so let’s just choose the top 3 features based on the r-squared value.</p><h4>First Iteration</h4><p>For our first linear regression model, we’ll start by figuring out which feature has the greatest correlation to the target. We want to iterate through every feature and calculate the r-squared value if that feature was used in our model to predict the sale price. So, we will use a for-loop to go through every column, use statsmodels to create a model for only that feature, and use numpy to calculate the r-squared value between the actual target and the predicted target. To visualize our results, we will put the information into a DataFrame and only display the best columns.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/59dd2d1110da29c9335dfd1f1daef374/href">https://medium.com/media/59dd2d1110da29c9335dfd1f1daef374/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/946/1*0yMVx16rpVGmWtk4pxeqzQ.png" /></figure><p>Great! Now we know that our first predictor should be sqft_living . Unfortunately, the r-squared value is relatively low. This isn’t surprising because there are a lot of different factors that impact the sale price of a house. Let’s see what the r-squared value of our model would be if we had 2 features. We already know we want to keep sqft_living . Then let’s iterate through all the columns that aren’t sqft_living and calculate the r-squared value, just like we did in the code above. This time though, instead of copy and pasting the code, let’s create a function using the code above as guidance so that we only need to type a line or two every time we want to add a new feature to our model. The only difference between our 1st model iteration and our 2nd model iteration is that we know we want to include sqft_living . We will need to pass in a list of current features. While we’re at it, let&#39;s also pass in a list of features that we want to ignore because of multicollinearity or interpretability.</p><h4>2nd Iteration using Helper Function</h4><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/8aace0850eda0653db0dec0332f4b9d3/href">https://medium.com/media/8aace0850eda0653db0dec0332f4b9d3/href</a></iframe><p>All we need to do now is create a list of our selected features, a list of any features we want to ignore, and then call our next_possible_feature() function.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/e8773337abdb575d3e6935c04fb41d4b/href">https://medium.com/media/e8773337abdb575d3e6935c04fb41d4b/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/972/1*q6fjfTspom16R1NHET2TXA.png" /></figure><p>Notice that our model’s r-squared value increased when we added a second feature. Before we can continue, whenever we are creating a Linear Regression model for inferential purposes, we have to check for multicollinearity. We will do this by computing the Variance Inflation Factor (also known as VIF scores). This checks to makes sure our predictors have a linear relationship between them. We didn’t have to do this for our first iteration because we only had 1 feature. A score of less than 5 is good.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/a6319cc8453fb92402dac3c68e117be6/href">https://medium.com/media/a6319cc8453fb92402dac3c68e117be6/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/701/1*CRISdZn_5-CJExJyVpiemw.png" /></figure><h4>3rd Iteration</h4><p>Since we created our helper function next_possible_feature() , all we have to do is call it to look at our best options for our 3rd feature. This time we will add lat and long to our features_to_ignore list since distance was calculated using those 2 features (i.e. they’re multicollinear). I did this calculation in the data preparation step and didn’t include the code on this blog because it’s not relevant. It’s only important to know how to ignore features if you want to.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/f476484ff50fbe22d5f0afb6b5938273/href">https://medium.com/media/f476484ff50fbe22d5f0afb6b5938273/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/878/1*Fs1Z4YycIpfCsjFgDTubVg.png" /></figure><p>Now if we check the VIF scores, sqft_living and sqft_living15 are multicollinear. This makes sense since the square footage of 1 house is dependent on the square footage of their 15 closest neighbors.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/8be2a27bb2871a95f9010d858e967204/href">https://medium.com/media/8be2a27bb2871a95f9010d858e967204/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/734/1*YL9pm82os6w0sIifKrVYCA.png" /></figure><p>If were were to continue for a 4th iteration, we would put sqft_living15 in the features_to_ignore list. We’ll move on and check the VIF scores if the next best feature, grade_above_average, was added to our model.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/b06bcab70353e904ee4b4de5f126d605/href">https://medium.com/media/b06bcab70353e904ee4b4de5f126d605/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/857/1*HieyDUTRPcV8cKz0bPE4Mg.png" /></figure><h4>Final Model</h4><p>Since we are only looking for the top 3 features, it’s time to display the statsmodels summary for our Linear Regression model.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/3ad3ac12e814f4634e2920b3bb8ea847/href">https://medium.com/media/3ad3ac12e814f4634e2920b3bb8ea847/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RITVeDF9LLZZDIhqESEffw.png" /></figure><h4>Other Tools</h4><p>The next_possible_feature() function is a great option for when you’re trying to select features statsmodel , but scikit-learn has a couple of methods that are already defined. Sklearn, as it’s also known, is great for machine learning when you are trying to create a model to predict as close to the actual target as possible. It has a <a href="https://scikit-learn.org/stable/modules/feature_selection.html">feature_selection</a> module that can be used to import different classes like <a href="https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectKBest.html#sklearn.feature_selection.SelectKBest">SelectKBest()</a> which selects the best ‘k’ number of features to include. It also has <a href="https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SequentialFeatureSelector.html#sklearn.feature_selection.SequentialFeatureSelector">SequentialFeatureSelector()</a> which is very similar to the function we wrote, selecting the best feature after each sequence.</p><p>You can use Sklearn for inferential modeling, but it’s harder to interpret the statistics. One downside to using Sklearn for feature selection is that these classes don’t check for multicollinearity. If you want to use them, you have to check multicollinearity on all possible features before you run a feature_selection class. If you have a lot of columns in your DataFrame, this can be inefficient or hard to interpret. If you do decide to remove any multicollinear features before your feature selection, you could end up removing the stronger multicollinear feature.</p><p>One great benefit to creating your own function is you can fine-tune the code to work specifically for your project. You can manipulate next_possible_feature() to work for a train/test split to better predict your model’s performance for unknown data. Or you could add a multicollinearity check inside the function. Making your own function can sometimes be quicker than searching google for a similar function.</p><h4>Conclusion</h4><p>To recap, we created next_possible_feature()that will iterate through all possible features in a dataset and display the r-squared value if that feature was added to our statsmodel . We had to create a helper function because statsmodel doesn’t have a built-in feature selection method. Our function can be called repeatedly, one step at a time, to help us introduce more features into our model. This can improve the accuracy of our model while maintaining interpretability.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fda269442556" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What is Tensorflow?]]></title>
            <link>https://medium.com/@garrettwilliams90/what-is-tensorflow-44c371e7f533?source=rss-af1adb41a7df------2</link>
            <guid isPermaLink="false">https://medium.com/p/44c371e7f533</guid>
            <category><![CDATA[tensorflow]]></category>
            <category><![CDATA[google]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[flatiron-school]]></category>
            <category><![CDATA[deep-learning]]></category>
            <dc:creator><![CDATA[Garrett Williams]]></dc:creator>
            <pubDate>Mon, 27 Sep 2021 03:28:42 GMT</pubDate>
            <atom:updated>2021-10-01T18:10:06.910Z</atom:updated>
            <content:encoded><![CDATA[<h4>Understanding the Basics behind Google’s Machine Learning Library</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/474/1*gtIQ0WaIt81JAigvwtFQtQ.png" /></figure><p>Before Covid-19, when international travel was popular, visiting a new country can be an exciting time. It’s not every day that you get to experience a new culture. I’ve had the privilege to visit Australia and I loved every minute of it. Luckily for me, I’m fluent in English and I didn’t have to learn a new language, but I can imagine how this can add some stress to a trip. Enter Google Translate. This application can be used to translate speech, text, or images in real-time, leaving you with less stress and more opportunities to enjoy your trip. This is done using TensorFlow. Before we go over TensorFlow and give an example, let’s start with the foundations of Machine Learning.</p><h4>Machine Learning</h4><p>Machine Learning is the process of computers finding patterns in large amounts of data to enable decision-making. This process is constantly repeating because of their ability to learn from their experience and improve themselves without any extra code. Computers can do this through statistical modeling. Essentially, the Machines receive the data and then use mathematical methods to approximate an outcome, all within seconds. This allows computer programs to learn from the past and make updated decisions. Let me give you a real-world example of machine learning to help illustrate its benefit to mankind.</p><h4>Machine Learning Example</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Uey-GhSaKmORi377IvOwPg.jpeg" /><figcaption>Doctors using IBM Watson Genomics to diagnose cancer patients</figcaption></figure><p>Many of us have had a loved one affected by cancer. With hundreds of thousands of new medical studies being published every year, doctors can’t stay on top of all the latest articles and trials. To add insult to injury, a majority of cancer care in the United States is done in community hospitals where they don’t have all the necessary resources. IBM developed a machine learning tool, Watson Genomics, to help Oncologists better serve patients. It can read millions of scientific articles and treatments to give the doctors a particular diagnosis for the patient in real-time. This results in many lives being saved because of the speed and precision of Machine Learning.</p><h4>TensorFlow</h4><p>Now that we have a general understanding of Machine Learning, let’s talk about TensorFlow. By definition, TensorFlow is an open-source software library used for machine learning. Written in 3 languages (Python, C++, and CUDA), it was first created in 2015 by Google’s AI team for internal Google use. Tensorflow is structured using tensors and nodes. The software inputs data as multi-dimensional arrays, also known as tensors. You can then construct a flow chart of mathematical operations, also known as nodes, that you want to perform on the inputted data, outputting one or more tensors. This flow of inputting and outputting tensors using nodes is where they came up with the name TensorFlow.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/437/1*7c-6l5EuxDji0hFCpyq32g.png" /><figcaption>Basic illustration showing the flow of tensors (i.e. multidimensional arrays) being operated on by nodes (i.e. operators). Hence the name TensorFlow!</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KvwNWwRuGUCXRNbUR0YhYg.png" /><figcaption>A more complex, real-world illustration that still uses the basic TensorFlow model to predict a type of Iris</figcaption></figure><h4>Reasons People Use TensorFlow</h4><p>One reason why TensorFlow is popular is that it’s extremely fast and precise. It’s also very versatile. It can be run on a desktop or mobile device, and it can run on a GPU or a CPU. Another reason people tend to use TensorFlow is because of Tensorboard, a tool that allows you to visualize your Machine Learning model. The final reason why TensorFlow is popular is that it’s an open-source library developed and maintained by Google, a trusted tech giant. That means anyone could use it for machine learning at no cost without worrying about resources or reliability.</p><h4>TensorFlow Example</h4><p>Many of the biggest companies in the world use TensorFlow to deliver a better product. For example, Airbnb uses TensorFlow to classify different images by room and present the most appealing ones at the top of the website (<a href="https://www.youtube.com/watch?v=tPb2u9kwh2w">TensorFlow Airbnb Youtube video</a>). This is done by first identifying the different objects in the picture. A porch or a bed or a refrigerator. Once it identifies the probability of correctly classifying each object in the picture, it will use prior knowledge to estimate the probability of correctly identifying the room given the object was right. This flow continues and allows Airbnb to put the best photos first. In the gif below, we can look at a simple example of this process. For each picture, it identifies different features (i.e. eyes, ears, mouth). Using prior knowledge, it can predict the picture is a cat or dog given the data it collected.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/461/1*KBmM66vuPjNSpXoZdPRg3g.gif" /></figure><h4>Alternatives to TensorFlow</h4><p>TensorFlow isn’t a monopoly in the software libraries used for machine learning. It has a couple of main alternatives, each with some pros and cons.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*nXg_X1vVtVJKHLWGnmJB2g.png" /></figure><p><strong>PyTorch</strong>: Developed by Facebook as an open-source machine learning library. The most important difference between them is that TensorFlow creates a static graph while PyTorch creates a dynamic graph. This means that in TensorFlow, you first need to define the entire graph of the model, then run it. While in PyTorch, you can define and manipulate your graph as you go. Another difference is that TensorFlow has a steeper learning curve, but it has a bigger community behind it. And TensorFlow has TensorBoard which enables you to visualize your Machine Learning model. PyTorch doesn’t have a tool like that.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*syZg9AlLpQUfsLfstmmSAw.png" /></figure><p><strong>Scikit-Learn</strong>: Also known as sklearn, it’s more of a general-purpose machine learning library while TensorFlow has positioned itself as a deep learning library. Deep Learning is a subset of machine learning that tells the computer to use multiple layers to process the data and fill in the gaps. Sklearn is best used for small to medium-sized projects that require the users to manually process the data and choose the appropriate algorithm. Since it was only written in Python, it doesn’t have the versatility of languages like TensorFlow.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*1s8FJYYkjbDOYIlHxx5-xw.png" /></figure><p><strong>Keras:</strong> More of wrapper library that needs to run on top of TensorFlow. It’s best for smaller datasets and more user-friendly, but not as powerful. It should be noted that this isn’t a straight comparison because Keras needs to be run on top of an open-sourced library like TensorFlow</p><h4>Tutorials</h4><p>If you would like to learn TensorFlow, below are some websites to check out:</p><p><a href="https://www.tensorflow.org/tutorials">https://www.tensorflow.org/tutorials</a></p><p><a href="https://www.udemy.com/course/complete-guide-to-tensorflow-for-deep-learning-with-python/">https://www.udemy.com/course/complete-guide-to-tensorflow-for-deep-learning-with-python/</a></p><p><a href="https://www.coursera.org/learn/introduction-tensorflow">https://www.coursera.org/learn/introduction-tensorflow</a></p><p><a href="https://www.udacity.com/course/intro-to-machine-learning-with-tensorflow-nanodegree--nd230">https://www.udacity.com/course/intro-to-machine-learning-with-tensorflow-nanodegree--nd230</a></p><h4>API Documentation</h4><p><a href="https://www.tensorflow.org/api_docs">https://www.tensorflow.org/api_docs</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=44c371e7f533" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[From Madden to Analytics]]></title>
            <link>https://medium.com/@garrettwilliams90/from-madden-to-analytics-b03f6436e4ef?source=rss-af1adb41a7df------2</link>
            <guid isPermaLink="false">https://medium.com/p/b03f6436e4ef</guid>
            <category><![CDATA[football]]></category>
            <category><![CDATA[mathematics]]></category>
            <category><![CDATA[virginia-tech]]></category>
            <category><![CDATA[analytics]]></category>
            <category><![CDATA[data-science]]></category>
            <dc:creator><![CDATA[Garrett Williams]]></dc:creator>
            <pubDate>Mon, 06 Sep 2021 21:36:02 GMT</pubDate>
            <atom:updated>2022-03-01T16:33:11.926Z</atom:updated>
            <content:encoded><![CDATA[<h4>My Journey to Learning Data Science</h4><p>Ask a kid what they want to do when they grow up, and you’ll get answers ranging from firefighter to astronaut to scientist. For me, I wanted to be a professional football player. Despite playing football from 3rd to 12th grade, I was never good enough nor have the physical attributes to make it in college, let alone the NFL. Like me, many of those kids end up doing something else for a career once they grow up. But looking back at my youth, little did I know that my passion for football would directly correlate to my wanting to learn Data Science.</p><p>Growing up in Northern Virginia, outside of Washington, D.C. as the middle of 6 kids, I was always the quiet one. For example, when my 3 brothers would fight over the video game controller, I was fine to just sit in the background and watch. When I did get to play, my favorite game was Madden, but I didn’t play them as most kids do. Instead of playing for hours as my hometown Washington Football Team, or trying to carve up defenses like Tom Brady, I spent the majority of my time analyzing. In Madden, every NFL player is given a rating for every aspect of the game. Speed, strength, agility, throwing accuracy, tackling, kicking accuracy, health, and awareness were some attributes just to name a few. If you were a fast player, your speed would be close to 100, and vice versa. All of those different attributes would contribute to your overall rating.</p><p>Along with every player having a rating, you were also able to remove every player from their current team and enter them into a league-wide fantasy draft. So ideally, I could have Washington draft Tom Brady with the 1st pick overall, and then in the second round, I could draft who I thought was the 33rd best player. But you had to be careful because the player you wanted to draft in the next round might not be available. Knowing this, I wanted to get the most value for every pick. I’d write down in a spiral notebook what the most ideal round was to draft each position and of those positions who had the best value. For example, if I knew the guards wouldn’t be drafted until the 13th round, I’d make sure I draft the best one in the 12th round. Or if multiple players had similar ratings, I would draft the younger player because the only reason their overall rating was low was because of the lack of experience. Some kids would call this boring, but for me, I enjoyed it. Don’t get me wrong, I would end up playing the games with the team I drafted. However, I would spend much more time and be happier when I was analyzing the players.</p><h4>Adulthood</h4><p>As the years went by, my priorities changed. I stopped playing video games, but analyzing data and numbers still stayed with me. After finishing high school with the second-highest math SAT score in my class, I ended up going on and graduating from Virginia Tech with a Bachelor’s in Mathematics and a minor in Computer Science. Some students know the career they want, and then get the degree that will help them reach it. That wasn’t the case for me. I got a math degree because I was good at it, not because of a job I could land with it.</p><p>I really struggled when it came time to find a job. With no sense of purpose, I’d go to indeed.com, search for “math degree”, and see what came up near Washington. I’d apply to anything I thought I might qualify for, like throwing a handful of darts at a board, nothing stuck. Whether it was because I didn’t have government clearance, I didn’t know the required programming language, or I didn’t have enough experience, I got rejected a lot. One blessing that did come out of the job search was noticing Data Analyst and Data Scientist came up a lot. But not being in a healthy state mentally or financially, I didn’t want to take the required classes that could teach me the skills to get my foot in the door. I needed to get a job quickly. I had student loans I needed to start paying off.</p><p>Eventually, I was hired by Sam’s club as an associate. Spending too much time being unemployed and being thousands in debt from student loans, I was able to get some sort of income. Even though it was not the job a college graduate would want, I was thankful because it was something. Yet, life at Sam’s wasn’t easy. Long, stressful hours for not a lot of income, plus knowing this is not what I want to do for the rest of my life. But I didn’t know how to move in the right direction. I would later be promoted to a department manager for a couple of years and make enough money to pay off my student loans. I’d still apply to jobs every once in a while to hopefully get my foot in the door to a math-oriented job, but I was always pessimistic.</p><h4>Moving Forward</h4><p>Gratefully, my family always loved me despite my situation and wanted the best for me. My mom would ask her friends if they would take a look at my resume. My older brother paid for some counseling sessions to help with my mental state of mind. It was my younger brother that recommended to me to do a coding bootcamp for data science at Flatiron School. “Why the data science program?” I asked my brother. “Because it can use your math and computer science background, and it’s a job in hot demand.”</p><p>There’s that career again; keeps popping up. Data science. I doubt he knew that the majority of jobs I previously saw on indeed.com were data analysts and data scientists. Maybe this is the career path for me. Sure, it’s a lot of money for a school I never heard of, but how can I expect to land a job if I don’t change my resume. Or as the great Albert Einstein said “Insanity is doing the same thing over and over and expecting different results.” And with that, I quit my job at Sam’s club, took a leap of faith, invested in myself, and applied to Flatiron School’s 15-week Data Science program.</p><p>I just finished my first week in the program and I can’t help but think about how my journey to learning Data Science didn’t start a week ago, or a few months ago when I got accepted into Flatiron School. The spark began when I was just a football-loving kid spending hours playing Madden. Collecting data by writing down the player’s ratings in my spiral notebook. Seeing trends by knowing what rounds to draft each position. Analyzing the data by seeing which available young players would bring the most value. All to benefit the team by making it easier to win football games. Now I know these next couple of months will be long and hard, but I didn’t decide to learn Data Science because I thought it would be easy. I didn’t even decide to learn Data Science because it’s high-paying or in hot demand, though it helps. For me, I decided to learn Data Science so that I can get a job within the field that I’ve always had a passion for. You could say that’s like winning the Superbowl for me.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b03f6436e4ef" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>