Skip to content

markovml/pyethnicity

 
 

Repository files navigation

pyethnicity:

PyPI version PyPI - Downloads License: MIT Tests pre-commit Checked with mypy Code style: black Imports: isort

What is it?

pyethnicity is a Python package to predict race from name and location and sex from first name. To the best of the author's knowledge, it outperforms all existing open-source models. It does this by training a Bidirectional LSTM on the largest, most comprehensive dataset of name and self-reported race thus far. It uses voter registration data from all 50 states. Additionally, it incorporates location features and improved versions of Bayesian Improved Surname Geocoding and Bayesian Improved Firstname Surname Geocoding to form an ensemble model that achieves up to 36.8% higher F1 scores than the next-best performing model. Finally, it provides CFPB-compliant and up-to-date versions of BISG and BIFSG.

Usage:

Please see https://pyethnicity.readthedocs.io/en/latest/ for full documentation.

Installing

The easiest way is to install pyethnicity is from PyPI using pip:

pip install pyethnicity

Running

Pyethnicity exposes several functions. It supports block group, tract, and zip code level features. Each function takes in a scalar or array-like of inputs and returns a polars DataFrame of the input and the predictions.

import pyethnicity

zcta = 27106
tract = 72153750502
first_name = "cangyuan"
last_name = "luo"

pyethnicity.bisg(last_name, zcta=zcta)
pyethnicity.bifsg(first_name, last_name, zcta=zcta, tract=tract)
pyethnicity.predict_race_fl(first_name, last_name)
pyethnicity.predict_race_flg(first_name, last_name, tract=tract)
pyethnicity.predict_race(first_name, last_name, zcta=zcta)

Performance

pyethnicity

rethnicity

ethnicolr

Please see the correpsonding paper "Can We Trust Race Prediction?" for more details.

TODO:

  • Re-train model to support Native American and Multiracial.

This package is still in active development. Please report any issues!

Releases

No releases published

Packages

No packages published

Languages

  • Python 84.0%
  • Stata 9.1%
  • R 6.9%