Skip to content

Instantly share code, notes, and snippets.

@kazk1018
Created December 10, 2018 10:33
Show Gist options
  • Save kazk1018/1bc0176ed100c16f57e247b8ef1e0e42 to your computer and use it in GitHub Desktop.
Save kazk1018/1bc0176ed100c16f57e247b8ef1e0e42 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# TensorFlow Data Validation Example\n",
"\n",
"Census Income Data Setを利用してData Validationの例を紹介します。"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import tensorflow_data_validation as tfdv"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dataの読み込み\n",
"\n",
"adult.testをそのまま使っても綺麗なデータなので少し細工したadult.validateを作成します"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# !curl -o ../dataset/adult.data https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data\n",
"# !curl -o ../dataset/adult.test https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.test"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [],
"source": [
"DATASET_DIR = '../dataset/'\n",
"TRAIN_DATA = os.path.join(DATASET_DIR, 'adult.data')\n",
"TEST_DATA = os.path.join(DATASET_DIR, 'adult.test')\n",
"VALIDATE_DATA = os.path.join(DATASET_DIR, 'adult.validate')"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
"COLUMN_NAMES = [\n",
" 'age',\n",
" 'workclass',\n",
" 'fnlwgt',\n",
" 'education',\n",
" 'education-num',\n",
" 'marital-status',\n",
" 'occupation',\n",
" 'relationship',\n",
" 'race',\n",
" 'sex',\n",
" 'capital-gain',\n",
" 'capital-loss',\n",
" 'hours-per-week',\n",
" 'native-country',\n",
" 'target'\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [],
"source": [
"import csv\n",
"\n",
"# 学習データにはないcountryを検証データに入れる\n",
"new_country = ' Spain'\n",
"\n",
"i = COLUMN_NAMES.index('native-country')\n",
"with open(TEST_DATA, 'r') as f_in, open(VALIDATE_DATA, 'w') as f_out:\n",
" reader = csv.reader(f_in)\n",
" for line in reader:\n",
" if len(line) > 0:\n",
" line[i] = line[i] if line[i] != ' ?' else new_country\n",
"\n",
" f_out.write(','.join(line) + '\\n')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Statisticsの生成"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"train_stats = tfdv.generate_statistics_from_csv(TRAIN_DATA, column_names=COLUMN_NAMES)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<iframe id='facets-iframe' width=\"100%\" height=\"500px\"></iframe>\n",
" <script>\n",
" facets_iframe = document.getElementById('facets-iframe');\n",
" facets_html = '<link rel=\"import\" href=\"https://raw.githubusercontent.com/PAIR-code/facets/master/facets-dist/facets-jupyter.html\"><facets-overview proto-input=\"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\"></facets-overview>';\n",
" facets_iframe.contentWindow.document.write(facets_html);\n",
" facets_iframe.id = \"\";\n",
" setTimeout(() => {\n",
" facets_iframe.setAttribute('height', facets_iframe.contentWindow.document.body.offsetHeight + 'px')\n",
" }, 1500)\n",
" </script>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Gistでは表示されない\n",
"tfdv.visualize_statistics(train_stats)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Schemaの推定"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"schema = tfdv.infer_schema(train_stats)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Type</th>\n",
" <th>Presence</th>\n",
" <th>Valency</th>\n",
" <th>Domain</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Feature name</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>'capital-loss'</th>\n",
" <td>INT</td>\n",
" <td>required</td>\n",
" <td></td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'target'</th>\n",
" <td>STRING</td>\n",
" <td>required</td>\n",
" <td></td>\n",
" <td>'target'</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'relationship'</th>\n",
" <td>STRING</td>\n",
" <td>required</td>\n",
" <td></td>\n",
" <td>'relationship'</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'age'</th>\n",
" <td>INT</td>\n",
" <td>required</td>\n",
" <td></td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'capital-gain'</th>\n",
" <td>INT</td>\n",
" <td>required</td>\n",
" <td></td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'sex'</th>\n",
" <td>STRING</td>\n",
" <td>required</td>\n",
" <td></td>\n",
" <td>'sex'</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'hours-per-week'</th>\n",
" <td>INT</td>\n",
" <td>required</td>\n",
" <td></td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'race'</th>\n",
" <td>STRING</td>\n",
" <td>required</td>\n",
" <td></td>\n",
" <td>'race'</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'native-country'</th>\n",
" <td>STRING</td>\n",
" <td>required</td>\n",
" <td></td>\n",
" <td>'native-country'</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'education-num'</th>\n",
" <td>INT</td>\n",
" <td>required</td>\n",
" <td></td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'workclass'</th>\n",
" <td>STRING</td>\n",
" <td>required</td>\n",
" <td></td>\n",
" <td>'workclass'</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'education'</th>\n",
" <td>STRING</td>\n",
" <td>required</td>\n",
" <td></td>\n",
" <td>'education'</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'fnlwgt'</th>\n",
" <td>INT</td>\n",
" <td>required</td>\n",
" <td></td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'marital-status'</th>\n",
" <td>STRING</td>\n",
" <td>required</td>\n",
" <td></td>\n",
" <td>'marital-status'</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'occupation'</th>\n",
" <td>STRING</td>\n",
" <td>required</td>\n",
" <td></td>\n",
" <td>'occupation'</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Type Presence Valency Domain\n",
"Feature name \n",
"'capital-loss' INT required - \n",
"'target' STRING required 'target' \n",
"'relationship' STRING required 'relationship' \n",
"'age' INT required - \n",
"'capital-gain' INT required - \n",
"'sex' STRING required 'sex' \n",
"'hours-per-week' INT required - \n",
"'race' STRING required 'race' \n",
"'native-country' STRING required 'native-country'\n",
"'education-num' INT required - \n",
"'workclass' STRING required 'workclass' \n",
"'education' STRING required 'education' \n",
"'fnlwgt' INT required - \n",
"'marital-status' STRING required 'marital-status'\n",
"'occupation' STRING required 'occupation' "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Values</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Domain</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>'target'</th>\n",
" <td>' &lt;=50K', ' &gt;50K'</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'relationship'</th>\n",
" <td>' Husband', ' Not-in-family', ' Other-relative', ' Own-child', ' Unmarried', ' Wife'</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'sex'</th>\n",
" <td>' Female', ' Male'</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'race'</th>\n",
" <td>' Amer-Indian-Eskimo', ' Asian-Pac-Islander', ' Black', ' Other', ' White'</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'native-country'</th>\n",
" <td>' ?', ' Cambodia', ' Canada', ' China', ' Columbia', ' Cuba', ' Dominican-Republic', ' Ecuador', ' El-Salvador', ' England', ' France', ' Germany', ' Greece', ' Guatemala', ' Haiti', ' Holand-Netherlands', ' Honduras', ' Hong', ' Hungary', ' India', ' Iran', ' Ireland', ' Italy', ' Jamaica', ' Japan', ' Laos', ' Mexico', ' Nicaragua', ' Outlying-US(Guam-USVI-etc)', ' Peru', ' Philippines', ' Poland', ' Portugal', ' Puerto-Rico', ' Scotland', ' South', ' Taiwan', ' Thailand', ' Trinadad&amp;Tobago', ' United-States', ' Vietnam', ' Yugoslavia'</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'workclass'</th>\n",
" <td>' ?', ' Federal-gov', ' Local-gov', ' Never-worked', ' Private', ' Self-emp-inc', ' Self-emp-not-inc', ' State-gov', ' Without-pay'</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'education'</th>\n",
" <td>' 10th', ' 11th', ' 12th', ' 1st-4th', ' 5th-6th', ' 7th-8th', ' 9th', ' Assoc-acdm', ' Assoc-voc', ' Bachelors', ' Doctorate', ' HS-grad', ' Masters', ' Preschool', ' Prof-school', ' Some-college'</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'marital-status'</th>\n",
" <td>' Divorced', ' Married-AF-spouse', ' Married-civ-spouse', ' Married-spouse-absent', ' Never-married', ' Separated', ' Widowed'</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'occupation'</th>\n",
" <td>' ?', ' Adm-clerical', ' Armed-Forces', ' Craft-repair', ' Exec-managerial', ' Farming-fishing', ' Handlers-cleaners', ' Machine-op-inspct', ' Other-service', ' Priv-house-serv', ' Prof-specialty', ' Protective-serv', ' Sales', ' Tech-support', ' Transport-moving'</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Values\n",
"Domain \n",
"'target' ' <=50K', ' >50K' \n",
"'relationship' ' Husband', ' Not-in-family', ' Other-relative', ' Own-child', ' Unmarried', ' Wife' \n",
"'sex' ' Female', ' Male' \n",
"'race' ' Amer-Indian-Eskimo', ' Asian-Pac-Islander', ' Black', ' Other', ' White' \n",
"'native-country' ' ?', ' Cambodia', ' Canada', ' China', ' Columbia', ' Cuba', ' Dominican-Republic', ' Ecuador', ' El-Salvador', ' England', ' France', ' Germany', ' Greece', ' Guatemala', ' Haiti', ' Holand-Netherlands', ' Honduras', ' Hong', ' Hungary', ' India', ' Iran', ' Ireland', ' Italy', ' Jamaica', ' Japan', ' Laos', ' Mexico', ' Nicaragua', ' Outlying-US(Guam-USVI-etc)', ' Peru', ' Philippines', ' Poland', ' Portugal', ' Puerto-Rico', ' Scotland', ' South', ' Taiwan', ' Thailand', ' Trinadad&Tobago', ' United-States', ' Vietnam', ' Yugoslavia'\n",
"'workclass' ' ?', ' Federal-gov', ' Local-gov', ' Never-worked', ' Private', ' Self-emp-inc', ' Self-emp-not-inc', ' State-gov', ' Without-pay' \n",
"'education' ' 10th', ' 11th', ' 12th', ' 1st-4th', ' 5th-6th', ' 7th-8th', ' 9th', ' Assoc-acdm', ' Assoc-voc', ' Bachelors', ' Doctorate', ' HS-grad', ' Masters', ' Preschool', ' Prof-school', ' Some-college' \n",
"'marital-status' ' Divorced', ' Married-AF-spouse', ' Married-civ-spouse', ' Married-spouse-absent', ' Never-married', ' Separated', ' Widowed' \n",
"'occupation' ' ?', ' Adm-clerical', ' Armed-Forces', ' Craft-repair', ' Exec-managerial', ' Farming-fishing', ' Handlers-cleaners', ' Machine-op-inspct', ' Other-service', ' Priv-house-serv', ' Prof-specialty', ' Protective-serv', ' Sales', ' Tech-support', ' Transport-moving' "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"tfdv.display_schema(schema)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 検証データのStatisticsを生成\n",
"\n",
"学習データと検証データを比較する"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [],
"source": [
"validate_stats = tfdv.generate_statistics_from_csv(VALIDATE_DATA, column_names=COLUMN_NAMES)"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<iframe id='facets-iframe' width=\"100%\" height=\"500px\"></iframe>\n",
" <script>\n",
" facets_iframe = document.getElementById('facets-iframe');\n",
" facets_html = '<link rel=\"import\" href=\"https://raw.githubusercontent.com/PAIR-code/facets/master/facets-dist/facets-jupyter.html\"><facets-overview proto-input=\"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\"></facets-overview>';\n",
" facets_iframe.contentWindow.document.write(facets_html);\n",
" facets_iframe.id = \"\";\n",
" setTimeout(() => {\n",
" facets_iframe.setAttribute('height', facets_iframe.contentWindow.document.body.offsetHeight + 'px')\n",
" }, 1500)\n",
" </script>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Gistでは表示されない\n",
"tfdv.visualize_statistics(lhs_statistics=validate_stats, rhs_statistics=train_stats,\n",
" lhs_name='VALIDATE_DATASET', rhs_name='TRAIN_DATASET')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 異常検出を行う"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [],
"source": [
"native_country = tfdv.get_feature(schema, 'native-country')\n",
"\n",
"# `native-country`は学習データのdomainにないデータを含めたくない\n",
"native_country.distribution_constraints.min_domain_mass = 1.0"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [],
"source": [
"anomalies = tfdv.validate_statistics(validate_stats, schema)"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Anomaly short description</th>\n",
" <th>Anomaly long description</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Feature name</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>'target'</th>\n",
" <td>Unexpected string values</td>\n",
" <td>Examples contain values missing from the schema: &lt;=50K. (~76%), &gt;50K. (~23%).</td>\n",
" </tr>\n",
" <tr>\n",
" <th>'native-country'</th>\n",
" <td>Unexpected string values</td>\n",
" <td>Examples contain values missing from the schema: Spain (~1%).</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Anomaly short description \\\n",
"Feature name \n",
"'target' Unexpected string values \n",
"'native-country' Unexpected string values \n",
"\n",
" Anomaly long description \n",
"Feature name \n",
"'target' Examples contain values missing from the schema: <=50K. (~76%), >50K. (~23%). \n",
"'native-country' Examples contain values missing from the schema: Spain (~1%). "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"tfdv.display_anomalies(anomalies)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"結果を見ると`native-country`にUnexpected string valuesの異常が検出されています\n",
"\n",
"更にlong descriptionを見ると` Spain`という単語が含まれているということまで確認出来ます"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.15"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment