/Neural_Network_Charity_Analysis

Utilizing machine learning and neural networks to predict whether applicants will be successful if funded by a philanthropic foundation

Primary LanguageJupyter Notebook

Neural_Network_Charity_Analysis

Overview

Purpose

A philanthropic foundation, Alphabet Soup, wants to know that their donations are being used efectively. Therefore, the goal of this project is to utilize machine learning and neural networks to create a binary classifier that is capable of predicting whether applicants will be successful or not if funded by the philanthropic group. Numerous features (x variables) are utilized to make this distinction between effective and ineffective organizations. The results of this project will help provide guidance to Alphabet Soup in making future donations. The data contains information from over 34,000 organizations that have received funding over the years and the result of how effectively the money was used.

Results

Data Preprocessing

During the preprocessing process, columns like id numbers and names are removed as they are not useful for the model. For categorical variables, "rare" occurences are grouped together in a "Other" column. Additionally, this categorical data needs to be encoded in order to compile, train and evaluate the model. This process creates a new column for each unique categorical variable.

Target Variable (Varaible we are trying to predict):
- IS_SUCCESSFUL: Was the money used effectively

Features of Model (Input data):
- APPLICATION_TYPE: Application type
- AFFILIATION: Affiliated sector of industry
- CLASSIFICATION: Classification
- USE_CASE: Use case
- ORGANIZATION: Organization type
- STATUS: Active status
- INCOME_AMT: Income classification
- SPECIAL_CONSIDERATIONS: Special Considerations for application
- ASK_AMT: Funding Amount requested

Removed columns:
- Identification columns
- EIN
- Name

Compiling, Training, Evaluating the Model

The Model

In the model, there are two hidden layers with 80 and 30 neurons, respectively. Both hidden layers use the ReLU activaton function to identify non-linear patterns in the data. In the ouput layer, I used the sigmoid function to report a binary classification because I wanted to separate the data into two clusters.

Model Performance

My model did not reach the 75% accuracy threshold I set out to achieve as it only achieved 72.5%. Therefore, I must make modifications to the model to reach this threshold.

Optimizing the Model

In order to achieve a target predictive accuracy higher than 75%, I tried a few different modifications before I achieved the target accuracy. FIrst, I tried to increase the number of neurons to the model, but still fell short of the 75% accuracy threshold. I determine that increasing the amount of training sessions (epochs) could be a viable option. After increasing the epochs number to 150, I determined this was not the fix. Lastly, I tried ...

Summary

Summarize the overall results of the deep learning model. Include a recommendation for how a different model could solve this classification problem, and explain your recommendation.