数値データの解析モジュール

数値データの解析(記述統計量の計算)

iss_dstat.py

[math],[chem],[presentation],[goukei]のフィールドを持つレコードセット(数値データ)に対して、記述統計量(データの個数、平均、標準偏差など)を計算したり、特定のフィールドに対するグラフ、散布図や回帰直線を描画します。

  • リテラシーレベル モデルカリキュラム「基礎 2.データリテラシー」

  1. import pandas as pd

  2. import matplotlib.pyplot as plt

  3. import numpy as np


  4. def basic_graph(x,y):

  5. plt.hist(x)

  6. plt.show()

  7. plt.scatter(x,y)

  8. plt.show()


  9. plt.boxplot(np.array(x))

  10. plt.show()


  11. def reg_line(x,y):

  12. from sklearn import linear_model

  13. model = linear_model.LinearRegression()

  14. tokutyou = [[xd] for xd in x]

  15. model.fit(tokutyou, y)

  16. plt.scatter(x,y)

  17. plt.plot(tokutyou, model.predict(tokutyou))

  18. if __name__ == '__main__':

  19. shiken=pd.read_csv("*******")

  20. print('記述統計量')

  21. print(shiken.describe())

  22. print(shiken["math"])

  23. x = shiken["math"]

  24. y = shiken["goukei"]


  25. print('基本グラフ')

  26. basic_graph(x,y)


  27. print('散布図と回帰直線')

  28. reg_line(x,y)

  29. plt.show()

数値データの解析(機械学習の基礎)

iss_ml.py

[math],[chem],[presentation],[goukei]のフィールドを持つレコードセット(数値データ)に対して、学習用データと検証用データの分割、リニアモデルによる目的変数の予測、寄与率の計算をします。

  • リテラシーレベル モデルカリキュラム「選択 4.オプション」

  1. import iss_dstat as ids

  2. import pandas as pd

  3. import numpy as np

  4. import matplotlib.pyplot as plt

  5. import sklearn.model_selection

  6. from sklearn import linear_model

  7. model_L=linear_model.LinearRegression()


  8. def train_test(x,y):

  9. xg,xh,yg,yh=sklearn.model_selection.train_test_split(x,y)

  10. plt.scatter(xg,yg)

  11. plt.scatter(xh,yh)

  12. plt.show()


  13. def nl_reg_line(x,y):

  14. xg,xh,yg,yh=sklearn.model_selection.train_test_split(x,y)

  15. model_L.fit(xg,yg)

  16. tokutyou=[[xd] for xd in range(0,100)]

  17. yosoku_L=model_L.predict(tokutyou)

  18. plt.plot(tokutyou,yosoku_L)


  19. def nl_reg_value(t,x,y):

  20. xg,xh,yg,yh=sklearn.model_selection.train_test_split(x,y)

  21. model_L.fit(xg,yg)

  22. p=model_L.predict(t)[0]

  23. c=model_L.coef_

  24. return p,c

  25. if __name__ == '__main__':

  26. shiken=pd.read_csv("**********")

  27. x = shiken["math"]

  28. y = shiken["goukei"]


  29. print("学習用データと検証用データ(ランダムに変化)")

  30. train_test(x,y)

  31. train_test(x,y)


  32. print("目的変数の予測(回帰直線と機械学習)")

  33. ids.reg_line(x,y)

  34. x = shiken[["math"]]

  35. nl_reg_line(x,y)

  36. plt.show()


  37. print("クロスバリデーション法による目的変数の予測")

  38. plt.scatter(x,y)

  39. for k in range(0,10):

  40. nl_reg_line(x,y)

  41. plt.show()


  42. print("クロスバリデーション法による目的変数の予測値")

  43. kitaichi=[]

  44. kiyoritu=[]

  45. for k in range(0,100):

  46. reg_value=nl_reg_value([[80]],x,y)

  47. kitaichi.append(reg_value[0])

  48. kiyoritu.append(reg_value[1])

  49. plt.hist(kitaichi)

  50. plt.show()

  51. plt.boxplot(np.array(kiyoritu))

  52. plt.show()


  53. x = shiken[["math","chem"]]

  54. kitaichi=[]

  55. kiyoritu=[]

  56. for k in range(0,100):

  57. reg_value=nl_reg_value([[80,80]],x,y)

  58. kitaichi.append(reg_value[0])

  59. kiyoritu.append(reg_value[1])

  60. plt.hist(kitaichi)

  61. plt.show()

  62. plt.boxplot(np.array(kiyoritu))

  63. plt.show()

数値データの解析(統計ダッシュボードのデータを利用した解析)

self_gw.py

統計ダッシュボート(外部サイトへリンクします)からダウンロードしたデータを機械学習して目的変数を予測します。グループワークで、グループごとに統計ダッシュボードからデータをダウンロードして、様々な変数を特徴量として目的変数を予測します。予測の結果からどのようなことが読み取れるのかをグループでディスカッションして、そこから課題を発見し、課題解決に向けた提案をします。

  • リテラシーレベル モデルカリキュラム「導入 1.社会で起きているデータ・AI活用」

  • リテラシーレベル モデルカリキュラム「選択 4.オプション(4-8 データ活用実践)」

  1. import pandas as pd

  2. import numpy as np

  3. import matplotlib.pyplot as plt

  4. import iss_ml as ml

  5. import iss_dstat as ids


  6. if __name__ == '__main__':

  7. dash=pd.read_csv("************")

  8. dash=dash[dash.columns[[3,5,7,9]]].replace("-",np.nan).dropna() #データの前処理


  9. print("統計ダッシュボートからダウンロードしたデータによる予測")

  10. x=dash[dash.columns[0]]

  11. y=dash[dash.columns[3]]

  12. ids.reg_line(x,y)

  13. x=dash[[dash.columns[0]]]

  14. ml.nl_reg_line(x,y)

  15. plt.show()


  16. x =dash[dash.columns[[0,1,2]]]

  17. kitaichi=[]

  18. kiyoritu=[]

  19. for k in range(0,100):

  20. reg_value=ml.nl_reg_value([[8000,12000,15000]],x,y)

  21. kitaichi.append(reg_value[0])

  22. kiyoritu.append(reg_value[1])

  23. plt.hist(kitaichi)

  24. plt.show()

  25. plt.boxplot(np.array(kiyoritu))

  26. plt.show()

北海道医療大学・情報センター