<jupyter_start><jupyter_text>AutoAIデータ作成用  共通事前処理<jupyter_code># 日本語化ライブラリ導入
!pip install japanize-matplotlib | tail -n 1
# 共通事前処理

# 余分なワーニングを非表示にする
import warnings
warnings.filterwarnings('ignore')

# 必要ライブラリのimport
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# matplotlib日本語化対応
import japanize_matplotlib

# データフレーム表示用関数
from IPython.display import display

# 表示オプション調整
# numpyの浮動小数点の表示精度
np.set_printoptions(suppress=True, precision=4)
# pandasでの浮動小数点の表示精度
pd.options.display.float_format = '{:.4f}'.format
# データフレームですべての項目を表示
pd.set_option("display.max_columns",None)
# グラフのデフォルトフォント指定
plt.rcParams["font.size"] = 14
# 乱数の種
random_seed = 123<jupyter_output><empty_output><jupyter_text>データ読み込み<jupyter_code># 公開データのダウンロードと解凍
!wget https://archive.ics.uci.edu/ml/\
machine-learning-databases/00222/bank.zip -O bank.zip
!unzip -o bank.zip

# bank-full.csvをデータフレームに取り込み
df_all = pd.read_csv('bank-full.csv', sep=';')

# 項目名を日本語に置き換える
columns = [
    '年齢', '職業', '婚姻', '学歴', '債務不履行', '平均残高',
    '住宅ローン', '個人ローン', '連絡手段', '最終通話日',
    '最終通話月', '最終通話秒数', '通話回数_販促中',
    '前回販促後_経過日数', '通話回数_販促前', '前回販促結果',
    '今回販促結果'
]
df_all.columns = columns
y = df_all['今回販促結果'].values<jupyter_output><empty_output><jupyter_text>データ分割<jupyter_code># 訓練データと検証データの分割
# 訓練データ60% 検証データ40%の比率で分割する
test_size = 0.4

from sklearn.model_selection import train_test_split
df_train, df_test = train_test_split(
  df_all, test_size=test_size, random_state=random_seed,
  stratify=y)<jupyter_output><empty_output><jupyter_text>結果確認<jupyter_code>display(df_train.head())
display(df_test.head())<jupyter_output><empty_output><jupyter_text>保存<jupyter_code>fn_train = 'bank-train-autoai.csv'
df_train.to_csv(fn_train, index=False)
fn_test = 'bank-test-autoai.csv'
df_test.to_csv(fn_test, index=False)<jupyter_output><empty_output><jupyter_text>Google Colabからダウンロード<jupyter_code>try:
    from google.colab import files
    files.download(fn_train) 
    files.download(fn_test)      
except:
    print('not google colab')<jupyter_output><empty_output><jupyter_text>検証データをJSON形式に変更<jupyter_code>df_test_yes = df_test[df_test['今回販促結果']=='yes'].head(20)
df_test_no = df_test[df_test['今回販促結果']=='no'].head(20)
display(df_test_yes.head())
display(df_test_no.head())
x_test_yes = df_test_yes.drop(['今回販促結果'], axis=1)
x_test_no = df_test_no.drop(['今回販促結果'], axis=1)
display(x_test_yes.head())
display(x_test_no.head())
columns = list(x_test_yes.columns)
yes_values = x_test_yes.values
no_values = x_test_no.values
print(columns)
print(yes_values[:5,:])
# yes用jsonデータ
import json
w1 = {}
w1['fields'] = columns
w1['values'] = yes_values.tolist()
u1 = {"input_data": [w1]}
d1 = json.dumps(u1,ensure_ascii=False)
print(d1)
# no用jsonデータ
w2 = {}
w2['fields'] = columns
w2['values'] = no_values.tolist()
u2 = {"input_data": [w2]}
d2 = json.dumps(u2, ensure_ascii=False)
print(d2)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.14685556323427781, 'fraction_numerical': 0.014512785072563926, 'mean_word_length': 7.440233236151603, 'pattern_counts': {'":': 2, '<': 29, '<?xml version=': 0, '>': 29, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '549494', 'license': 'Apache-2.0', 'n_tokens_mistral': 1519, 'n_tokens_neox': 1515, 'n_words': 169, 'path': 'notebooks/c31_bank_autoai_data.ipynb', 'repo_name': 'hrstt/profitable_ai_book_info', 'size': '2894'}