データサイエンスの勉強(データをざっくり眺める)
データサイエンスの育成講座(3) - 技術をかじる猫 この辺の続き
データダウンロードと解凍
ファイルのダウンロードと解凍…って何回やるかは不明だが。
import requests, zipfile from io import StringIO import io target_url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/00356/student.zip' req = requests.get(target_url, stream=True) zip_val = zipfile.ZipFile(io.BytesIO(req.content)) zip_val.extractall()
ファイルの読み込み
import numpy as np import numpy.random as random import scipy as sp import pandas as pd from pandas import Series, DataFrame student_data_math = pd.read_csv('student-mat.csv') student_data_math.head()
school;sex;age;address;famsize;Pstatus;Medu;Fedu;Mjob;Fjob;reason;guardian;traveltime;studytime;failures;schoolsup;famsup;paid;activities;nursery;higher;internet;romantic;famrel;freetime;goout;Dalc;Walc;health;absences;G1;G2;G3 | |
---|---|
0 | GP;"F";18;"U";"GT3";"A";4;4;"at_home";"teacher... |
1 | GP;"F";17;"U";"GT3";"T";1;1;"at_home";"other";... |
2 | GP;"F";15;"U";"LE3";"T";1;1;"at_home";"other";... |
3 | GP;"F";15;"U";"GT3";"T";4;2;"health";"services... |
4 | GP;"F";16;"U";"GT3";"T";3;3;"other";"other";"h... |
え!?
まさか…
student_data_math = pd.read_csv('student-mat.csv', sep=';') student_data_math.head()
school | sex | age | address | famsize | Pstatus | Medu | Fedu | Mjob | Fjob | ... | famrel | freetime | goout | Dalc | Walc | health | absences | G1 | G2 | G3 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | GP | F | 18 | U | GT3 | A | 4 | 4 | at_home | teacher | ... | 4 | 3 | 4 | 1 | 1 | 3 | 6 | 5 | 6 | 6 |
1 | GP | F | 17 | U | GT3 | T | 1 | 1 | at_home | other | ... | 5 | 3 | 3 | 1 | 1 | 3 | 4 | 5 | 5 | 6 |
2 | GP | F | 15 | U | LE3 | T | 1 | 1 | at_home | other | ... | 4 | 3 | 2 | 2 | 3 | 3 | 10 | 7 | 8 | 10 |
3 | GP | F | 15 | U | GT3 | T | 4 | 2 | health | services | ... | 3 | 2 | 2 | 1 | 1 | 5 | 2 | 15 | 14 | 15 |
4 | GP | F | 16 | U | GT3 | T | 3 | 3 | other | other | ... | 4 | 3 | 2 | 1 | 2 | 5 | 4 | 6 | 10 | 10 |
5 rows × 33 columns
CSV じゃねーのかよ!?
気を取り直して、情報の状態。
各データ型とどれくらいデータが詰まってるか?(null フィールド検出)
student_data_math.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 395 entries, 0 to 394
Data columns (total 33 columns):
school 395 non-null object
sex 395 non-null object
age 395 non-null int64
address 395 non-null object
famsize 395 non-null object
Pstatus 395 non-null object
Medu 395 non-null int64
Fedu 395 non-null int64
Mjob 395 non-null object
Fjob 395 non-null object
reason 395 non-null object
guardian 395 non-null object
traveltime 395 non-null int64
studytime 395 non-null int64
failures 395 non-null int64
schoolsup 395 non-null object
famsup 395 non-null object
paid 395 non-null object
activities 395 non-null object
nursery 395 non-null object
higher 395 non-null object
internet 395 non-null object
romantic 395 non-null object
famrel 395 non-null int64
freetime 395 non-null int64
goout 395 non-null int64
Dalc 395 non-null int64
Walc 395 non-null int64
health 395 non-null int64
absences 395 non-null int64
G1 395 non-null int64
G2 395 non-null int64
G3 395 non-null int64
dtypes: int64(16), object(17)
memory usage: 102.0+ KB
質的データ
数値化されていない不連続値データ。状態を表す。
# 質的データ:連続的なあたいのデータで、比率に意味がある student_data_math['sex'].head()
0 F
1 F
2 F
3 F
4 F
Name: sex, dtype: object
量的データ
数値化されたデータ。比率などに意味を持つ。
student_data_math['absences'].head()
0 6
1 4
2 10
3 2
4 4
Name: absences, dtype: int64
軸別に平均値を出す
といってもそのままですね
student_data_math.groupby('sex')['age'].mean()
sex
F 16.730769
M 16.657754
Name: age, dtype: float64
続きを読む
Elixir の薄い同人本読んでみた
薄くて肌色の本を想像したそこな男よ!残念!技術書でしたー!
タイトル見て「コイツ何言ってんの?」と思った人も居そう。
何をしているかと言うと、下記にでる予定の Elixir 本を先行して読ませてもらっているという!
あるんですよ、世の中には 技術専門の同人誌 なんて言うものが。
で、知り合いがそこでサークル参加するので、その本をレビュー兼ねて読ませて頂いてる次第!
内容を概要だけでざっくりと!
- 実行環境と基礎
- XXXXXXでのプロジェクト作成、実行の基礎
- PhoXXXX の基礎
- XXXves の基礎
まだ出てないの伏せ字(白目
何がいいって、座学じゃない点。
マジでそのまま打って概要と雰囲気が理解できるのがありがたい。(ゴメン、読み物系技術書は余程理論系でもない限り僕が寝るwww)
でも技術って本来面白いというか、ワクワクするモンだよね。
面白そう、でも知識が浅い、どっから手をつければ良いか分からない。
技術あるあるですわ。
僕も Web はドップリだけど、IoT なんか殆どやってないし、関数型はやってても静的型付けしか経験ないし。
浅くても取っ掛かりとして十分な本てとってもありがたいよね。
Framework 離れて 1 年
何があったかと言うと、ひさびさに非Salesforce系もくもく会(下)に参加して、1年以上ぶりに Scala+Playframework を弄ろうとして色々どハマりしたという話。
ポートフォリオアプリや個人サービスを開発したい方向けのWeb開発もくもく会&勉強会 - connpass
最近 Playframework 離れてたし久々にやるかーと思って手をつけて色々どハマりして 2 時間食いつぶしてしまったので、反省も兼ねて。
- 基本的に更新早いフレームワークは 1 年経ったら半分以上別物と思った方が良さそう。
具体的には evolution のセットアップが変わっていたり、その割にドキュメントの更新が追いついてなくて、エラーの修正をどうすべきか悩んだ。 - 当時愛用してた scala-activerecord だけど、気づいたら更新止まってて、最後の対応 scala バージョンが 2.12 だったという(Play2.7 は 2.13 なので、単純に参照できない)。
補足すると 2.13 でリビルドしようとしたが、依存ライブラリもまた対応してなかったとかで色々吐いて来たので利用諦め
lllorz
- 細かいフィルタの挙動、設定とかもちょくちょくハマった。
ここから反省すべきは
ということでいきなり物を作れるなんてタカを括らず、ドキュメントを読めってことで…
Matplotlib の使い方近辺
# Matplotlib と seaborn (ヘルパー) import matplotlib as mpl import seaborn as sns # pyplot import matplotlib.pyplot as plt %matplotlib inline
散布図
# ライブラリ import numpy as np import numpy.random as random random.seed(0) # x,y x = np.random.randn(30) y = np.sin(x) + np.random.randn(30) # グラフ保大きさ指定 plt.figure(figsize=(10, 6)) # 散布図1 plt.plot(x, y, 'o')
続きを読む
データサイエンスの育成講座(3)
東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~
- 作者: 塚本邦尊,山田典一,大澤文孝,中山浩太郎,松尾豊[協力]
- 出版社/メーカー: マイナビ出版
- 発売日: 2019/03/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
# データ解析、機械学習系 import numpy as np import numpy.random as random import scipy as sp import pandas as pd from pandas import Series, DataFrame %precision 3
'%.3f'
Pandas
代表的なデータ構造の Series から。
ラベルとかの情報を含む配列みたいな感じと認識。
データ型
sample_data = pd.Series([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90 ]) print(sample_data)
0 0
1 10
2 20
3 30
4 40
5 50
6 60
7 70
8 80
9 90
dtype: int64
sample_indexed_data = pd.Series( [0, 10, 20, 30, 40, 50, 60, 70, 80, 90], index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] ) sample_indexed_data
a 0
b 10
c 20
d 30
e 40
f 50
g 60
h 70
i 80
j 90
dtype: int64
続きを読む
データサイエンスの育成講座(2)
東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~
- 作者: 塚本邦尊,山田典一,大澤文孝,中山浩太郎,松尾豊[協力]
- 出版社/メーカー: マイナビ出版
- 発売日: 2019/03/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
と、続きでやってる。
jupiter-notebook があればいい。
一応色々端折る為に anaconda で作成。
# データ解析、機械学習系 import numpy as np import numpy.random as random import scipy as sp import pandas as pd from pandas import Series, DataFrame # 可視化系 import matplotlib.pyplot as plt import matplotlib as mpl import seaborn as sns %matplotlib inline %precision 3
'%.3f'
Scipy
# Library of linear algebra import scipy.linalg as linalg
matrix = np.array([[1, -1, -1], [-1, 1, -1], [-1, -1, 1]]) print(f'行列式 : {linalg.det(matrix)}')
行列式 : -4.0
inv_matrix = linalg.inv(matrix) print(f'逆行列 :\n{inv_matrix}') print(f'Dot積 : \n{ matrix.dot(inv_matrix) }')
逆行列 :
[[ 0. -0.5 -0.5]
[-0.5 -0. -0.5]
[-0.5 -0.5 0. ]]
Dot積 :
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
eig_value, eig_vector = linalg.eig(matrix) print(f'固有値 : \n{eig_value}') print(f'固有ベクトル : \n{eig_vector}')
固有値 :
[-1.+0.j 2.+0.j 2.+0.j]
固有ベクトル :
[[ 0.577 -0.816 0.428]
[ 0.577 0.408 -0.816]
[ 0.577 0.408 0.389]]
続きを読む
暫く積んでた本の着手
Kaggle やり始めて撃沈して、ちまちま勉強していたけど、そもそも基礎がなってない気がしてそれっぽい物を探した痕跡。
最近までずっと Salesforce で Trail 祭りしてたからなぁ(汗
東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~
- 作者: 塚本邦尊,山田典一,大澤文孝,中山浩太郎,松尾豊[協力]
- 出版社/メーカー: マイナビ出版
- 発売日: 2019/03/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
利用する系のライブラリ
# データ解析、機械学習系 import numpy as np import numpy.random as random import scipy as sp import pandas as pd from pandas import Series, DataFrame # 可視化系 import matplotlib.pyplot as plt import matplotlib as mpl import seaborn as sns %matplotlib inline %precision 3
'%.3f'
マジックコマンド
jupiter notebook の機能群
%run
外部コマンドの実行%cp
ファイルのコピー%time
時間の計測%precision
numpy 拡張。表示する場合の有効桁数を指定する。%matplotlib
Matplotlib 拡張。グラフなどの表示法を設定できる。inline など。%quickref
コマンドの一覧表示など
numpy 近辺
# use array. example_array = np.array([1, 4, 8, 16, 6, 8, 1, 5]) # tab key on after dot(.) to code complete example_array.dtype
dtype('int64')
続きを読む