信頼区間の コード

import numpy as np
from scipy import stats

import statsmodels as sms

# 例
a = np.array([12.7,6.6,5.6,14.3,11.4,10.8,13.8,11.2,10.0,12.8,7.1,14.0])

# 正規分布の標本と仮定したときの、母平均の信頼区間
sigma = np.sqrt(dev / len(a))
stats.norm.interval(0.95, loc=a.mean(), scale=sigma)

# 母平均のT分布の信頼区間
sms.stats.weightstats.DescrStatsW(a).tconfint_mean()

# カイ自乗分布 の信頼区間 95%(分散)
stats.chi2.interval(alpha=0.95, df=len(a)-1, loc=0, scale=1)

# F分布 の信頼区間 90%(分散比)
stats.f.interval(0.9, 10, 10)

クラス別の割合

クラス別の割合について、seaborn のこれ使ったら便利

import pandas as pd
import seaborn as sns


# バイオリンプロット
sns.violinplot(x = 'target', y = 'rate', data = df)

# 箱髭プロット(直感的な図だが、詳細が不明)
sns.boxplot(x = 'target', y = 'rate', data = df)

# ヒストグラム
sns.distplot(df[df['target'] == 1.0]['rate'], color = 'green')
sns.distplot(df[df['target'] == 0.0]['rate'], color = 'red')

# 相関図をクラス別に
sns.pairplot(df[['rate', 'target']][0:n], hue='target')

Mysql 5.7 で 767 byte 以上のインデックスが貼れた

longtext にインデックスを貼ろうとしていた。

alter table `table` add index `index_name` (`name`(256));

以下がでなかった

Specified key was too long; max key length is 767 bytes

なるほど

mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_large_prefix%';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| innodb_large_prefix | ON    |
+---------------------+-------+
1 row in set (0.00 sec)

dev.mysql.com

python で memory の状況を取得

psutil は標準ライブラリではないので、pip install する。

from psutil import virtual_memory

def get_mem_available():
mem = virtual_memory()
print("{} GB".format(mem.available / (1024 ** 3)))

get_mem_available()

stackoverflow.com

pandas の full outer join

df = pd.DataFrame(np.random.randint(0,100,size=(3, 4)), columns=list('ABCD'))

df['_index'] = 1

pd.merge(df[['_index', 'A']], df[['_index','B']], how='outer', on='_index')


df.drop(columns=['_index'], inplace=True)

stackoverflow.com