数値データの解析モジュール
数値データの解析(記述統計量の計算)
iss_dstat.py
[math],[chem],[presentation],[goukei]のフィールドを持つレコードセット(数値データ)に対して、記述統計量(データの個数、平均、標準偏差など)を計算したり、特定のフィールドに対するグラフ、散布図や回帰直線を描画します。
リテラシーレベル モデルカリキュラム「基礎 2.データリテラシー」
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
def basic_graph(x,y):
plt.hist(x)
plt.show()
plt.scatter(x,y)
plt.show()
plt.boxplot(np.array(x))
plt.show()
def reg_line(x,y):
from sklearn import linear_model
model = linear_model.LinearRegression()
tokutyou = [[xd] for xd in x]
model.fit(tokutyou, y)
plt.scatter(x,y)
plt.plot(tokutyou, model.predict(tokutyou))
if __name__ == '__main__':
shiken=pd.read_csv("*******")
print('記述統計量')
print(shiken.describe())
print(shiken["math"])
x = shiken["math"]
y = shiken["goukei"]
print('基本グラフ')
basic_graph(x,y)
print('散布図と回帰直線')
reg_line(x,y)
plt.show()
数値データの解析(機械学習の基礎)
iss_ml.py
[math],[chem],[presentation],[goukei]のフィールドを持つレコードセット(数値データ)に対して、学習用データと検証用データの分割、リニアモデルによる目的変数の予測、寄与率の計算をします。
リテラシーレベル モデルカリキュラム「選択 4.オプション」
import iss_dstat as ids
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import sklearn.model_selection
from sklearn import linear_model
model_L=linear_model.LinearRegression()
def train_test(x,y):
xg,xh,yg,yh=sklearn.model_selection.train_test_split(x,y)
plt.scatter(xg,yg)
plt.scatter(xh,yh)
plt.show()
def nl_reg_line(x,y):
xg,xh,yg,yh=sklearn.model_selection.train_test_split(x,y)
model_L.fit(xg,yg)
tokutyou=[[xd] for xd in range(0,100)]
yosoku_L=model_L.predict(tokutyou)
plt.plot(tokutyou,yosoku_L)
def nl_reg_value(t,x,y):
xg,xh,yg,yh=sklearn.model_selection.train_test_split(x,y)
model_L.fit(xg,yg)
p=model_L.predict(t)[0]
c=model_L.coef_
return p,c
if __name__ == '__main__':
shiken=pd.read_csv("**********")
x = shiken["math"]
y = shiken["goukei"]
print("学習用データと検証用データ(ランダムに変化)")
train_test(x,y)
train_test(x,y)
print("目的変数の予測(回帰直線と機械学習)")
ids.reg_line(x,y)
x = shiken[["math"]]
nl_reg_line(x,y)
plt.show()
print("クロスバリデーション法による目的変数の予測")
plt.scatter(x,y)
for k in range(0,10):
nl_reg_line(x,y)
plt.show()
print("クロスバリデーション法による目的変数の予測値")
kitaichi=[]
kiyoritu=[]
for k in range(0,100):
reg_value=nl_reg_value([[80]],x,y)
kitaichi.append(reg_value[0])
kiyoritu.append(reg_value[1])
plt.hist(kitaichi)
plt.show()
plt.boxplot(np.array(kiyoritu))
plt.show()
x = shiken[["math","chem"]]
kitaichi=[]
kiyoritu=[]
for k in range(0,100):
reg_value=nl_reg_value([[80,80]],x,y)
kitaichi.append(reg_value[0])
kiyoritu.append(reg_value[1])
plt.hist(kitaichi)
plt.show()
plt.boxplot(np.array(kiyoritu))
plt.show()
数値データの解析(統計ダッシュボードのデータを利用した解析)
self_gw.py
統計ダッシュボート(外部サイトへリンクします)からダウンロードしたデータを機械学習して目的変数を予測します。グループワークで、グループごとに統計ダッシュボードからデータをダウンロードして、様々な変数を特徴量として目的変数を予測します。予測の結果からどのようなことが読み取れるのかをグループでディスカッションして、そこから課題を発見し、課題解決に向けた提案をします。
リテラシーレベル モデルカリキュラム「導入 1.社会で起きているデータ・AI活用」
リテラシーレベル モデルカリキュラム「選択 4.オプション(4-8 データ活用実践)」
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import iss_ml as ml
import iss_dstat as ids
if __name__ == '__main__':
dash=pd.read_csv("************")
dash=dash[dash.columns[[3,5,7,9]]].replace("-",np.nan).dropna() #データの前処理
print("統計ダッシュボートからダウンロードしたデータによる予測")
x=dash[dash.columns[0]]
y=dash[dash.columns[3]]
ids.reg_line(x,y)
x=dash[[dash.columns[0]]]
ml.nl_reg_line(x,y)
plt.show()
x =dash[dash.columns[[0,1,2]]]
kitaichi=[]
kiyoritu=[]
for k in range(0,100):
reg_value=ml.nl_reg_value([[8000,12000,15000]],x,y)
kitaichi.append(reg_value[0])
kiyoritu.append(reg_value[1])
plt.hist(kitaichi)
plt.show()
plt.boxplot(np.array(kiyoritu))
plt.show()
北海道医療大学・情報センター