Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Random forest for exoplanets

Project description

BEM : beyond the exoplanet mass-radius relation with random forest

Predicting the radius of exoplanets based on its planetary and stellar parameters

Build Status license: MIT PyPI version arXiv

Branca Edmée Marques

A portuguese scientist who worked on nuclear physics in France with Marie Curie

To install bem

pip install bem

or

git clone https://github.com/soleneulmer/bem.git
cd bem
python setup.py install

A simple decision tree

to predict exoplanet radius

How to run bem:

1. Load dataset and model

# Load exoplanet and solar system planets dataset
dataset = bem.load_dataset()
# Plot the dataset radius as a function of mass and equilibrium temperature
bem.plot_dataset(dataset)
# Build the random forest model and predict radius of the dataset
regr, y_test_predict, _, train_test_sets = bem.random_forest_regression(dataset)

2. Predict the radius of your planet

my_planet = [planetary_mass, semi major axis, eccentricity, stellar radius, stellar effective temperature, stellar mass]

or with error bars

my_planet = [planetary_mass, error, semi major axis, error eccentricity, error, stellar radius, error, stellar effective temperature, error, stellar mass, error]

# Predict a new radius
radius, my_pred_planet = bem.predict_radius(my_planet=np.array([[1.63,
								 0.034,
                                                 		 0.02,
                                                 		 0.337,
                                                 		 3505.0,
                                                 		 0.342]]),
                        		    my_name=np.array(['GJ 357 b']),
                            		    regr=regr,
                            		    jupiter_mass=False,
					    error_bar=False)
# If error_bar is True
# print('Radius: ', radius[0][0], '+-', radius[1])

3. Compute error bars for the radius predictions

# Load exoplanet and solar system planets dataset with uncertainties
dataset_errors = bem.load_dataset_errors()
# Compute the error bars for the test set planets
radii_test_output_error, _ = bem.computing_errorbars(regr,
                                                     dataset_errors,
                                                     train_test_sets)
# Plot the test set, true radius versus RF predicted radius
bem.plot_true_predicted(train_test_sets,
                        y_test_predict,
                        radii_test_output_error)

4. Radial velocity dataset

# Load the radial velocity dataset
dataset_rv = bem.load_dataset_RV()
# Predict the radius of the RV dataset
radii_RV_RF = regr.predict(dataset_rv)
# Plot the predictions of the RV dataset
bem.plot_dataset(dataset_rv, predicted_radii=radii_RV_RF, rv=True)

5. Diagnostic plots

# Plot the learning curve
bem.plot_learning_curve(regr, dataset)
# Plot the validation curves
bem.plot_validation_curves(regr, dataset, name='features')
bem.plot_validation_curves(regr, dataset, name='tree')
bem.plot_validation_curves(regr, dataset, name='depth')

6. LIME explanations

see their github

# Explain the RF predictions
# of the exoplanets from the test set
bem.plot_LIME_predictions(regr, dataset, train_test_sets)
# LIME explanation for your planet
# in this case GJ 357 b
bem.plot_LIME_predictions(regr, dataset, train_test_sets,
                          my_pred_planet=my_pred_planet,
                          my_true_radius=1.166)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for bem, version 1.0.0
Filename, size File type Python version Upload date Hashes
Filename, size bem-1.0.0.tar.gz (743.9 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page