5章 Adding and Updating Dataのまとめ

Structured Query Language (SQL): A practical introductionの5章 Adding and Updating Dataの要約です。

キーワード

  1. DML
  2. INSERT INTO
  3. UPDATE SET
  4. DELETE

1. DML

Database Manipulation Languageの略称。 DDLで定義したTableにデータを追加、編集したりするときに使用する。

2. INSERT INTO

表記:INSERT INTO table_name (Column1, column2) VALUES (val1, val2); データを追加する。 Char型はシングルクオテーションで囲む ' ' column表記はオプション。 値にnullをふくんでも良い。 WHEREやSub-queryを利用して、他のTableデータをまとめて追加できる。

3. UPDATE SET

すでに入力されているデータを編集、更新する。 表記:UPDATE table_name SET col_name = value

4. DELETE

表記:DELETE FROM table_name WHERE 条件 削除するときは、先にSELECTでデータを確認、誤って削除しないよう、Primary IDを利用して削除する。

3章 Creating and Maintaining Tablesのまとめ

Structured Query Language (SQL): A practical introduction. NCC Blackwell の3章Creating and Maintaining Tablesのまとめです。

キーワード
  1. ANSI standard
  2. Database Archtecture
  3. SCHEMA
  4. PUBLIC
  5. DDLコマンド(CREATE、DROP、ALTER)
1.Database Archtecture

CREATEコマンドでデータベースを作成した後に、ALTERコマンドで編集ができる。 ただし、ANSI standardではデータベースを作成した後に、編集することは認めていないよう。

2. Database Archtecture

Single型とMultiple型がある。 Single型はデータベースは一つ、全てのテーブルがそのデータベース内に保持される。 構築が単純な一方で、情報が増えるにつれバックアップの管理やパフォーマンス解析が困難になる。

Multiple型は複数のデータベースに分割してシステムを構築する。Single型の問題点を解決するが、異なるデータベース内に有るテーブル間での参照関係の構築が難しくなる。

3. SCHEMA

ANSI standardでは、Databaseの前にSchemaの定義が必要。

4. PUBLIC

テーブル作成時に、誰が編集可能か設定できる。PUBLICを指定した場合は誰でも編集できる。

5. DDLコマンド(CREATE、DROP、ALTER)

テーブルの定義についてのコマンドは CREATE、DROP、ALTERがある。

どうやったら仕事が早く終わるか。

仕事は段取りが重要。 段取りに時間をかける。

成功を求めるのではなく、失敗しない方法を考える。 一度失敗したら次は失敗しないような方法を作る。

先にやらないことを決める。

管理するときは自分がプレイヤーにならなくて良い。適切な采配によりメンバーの力を集結することが重要。

代名詞ではなく固有名詞を使う。

会議の冒頭で雑談の機会を設けると、会議で出席者が発言しやすくなる。

どれだけ忙しくても焦っていないようなふりをすることで、メンバーが話しかけやすくなる。

メールは1通で完結するようなメールを意識する。

どうやったら仕事が早く終わるか。

仕事は段取りが重要。 段取りに時間をかける。

成功を求めるのではなく、失敗しない方法を考える。 一度失敗したら次は失敗しないような方法を作る。

先にやらないことを決める。

管理するときは自分がプレイヤーにならなくて良い。適切な采配によりメンバーの力を集結することが重要。

代名詞ではなく固有名詞を使う。

会議の冒頭で雑談の機会を設けると、会議で出席者が発言しやすくなる。

どれだけ忙しくても焦っていないようなふりをすることで、メンバーが話しかけやすくなる。

メールは1通で完結するようなメールを意識する。

中国語 基本の述語文

基本形 

主語 是 名詞 主語は名詞です。

我是日本人 私は日本人です。

我不是日本人 私は日本人ではない。

動詞述語文

主語 動詞 主語は動詞する

我吃早餐 私は朝食を食べる (食べる習慣がある)

我不吃早餐 私は朝食を食べない (食べる習慣が無い)

我没吃早餐 私は朝食を食べなかった(食べる習慣があるけど食べなかった)

連動文

動詞述語文は動詞と目的語を重ねて使うことができる。

主語 動詞1 目的語1 動詞2 目的語2

我去了餐厅吃拉面 私はレストランに行ってラーメンを食べた。

形容詞述語文

主語 很 形容詞 主語は形容詞です

この時の很には とても という意味は無い。

这个房间很漂亮 この部屋は綺麗だ。

这个房间不很漂亮 部分否定 この部屋はあまり綺麗ではない。

这个房间很不漂亮 全部否定 この部屋は全く綺麗ではない。

名詞述語文 是の省略

主語 名詞 (出身、年齢、職業、天候、価格、時間)

主語述語文

大主語+(小主語+述語) 大主語の小主語は〜だ

这家饭馆味道比较好 この店の味はまあまあ良い。

否定の強調

一点也不〜

这道菜一点也不腻 この料理はちっとも飽きない。

中国駐在も残り一年。

中国に駐在してもう一年以上経つだろう。いまだに何か辛い日々が続いている。 仕事うまくいかないし自分が何をしたいのかもよくわかんない。 オンラインの大学には行っている。けれども大学もうまくいかないし勉強してもすべての知識や何かどっかに流れているようなそんな感覚を覚え集中できない日々が続く。 少し鬱気味な時もあるだろうか一方で何か言われたときに素直に受け止められない。 趣味も特にあるわけでもない。 仕事がうまくいかない。 特に趣味もないので仕事もできないととにかく辛い。 仕事に強い得られているのか人に優しくできているだろうか。そうでもない。 頭の回線も鈍い、どうやったらやったら仕事が上手く行くだろう。 どうやったら人生楽しめるだろう。 すべての人に受けられる必要ない、人に受け入れられることを主軸にしてはいけない。 私の基準を他人任せにしてはいけない。 それは他力本願であるから。 自分の中に自分で楽しみを見つけなくちゃいけないんです。何が楽しいのかわからない。 ただ自分を見つめるためにこのブログを書いていこうと思う。 本業以外に副業で何か生計を立てたいと思う。 自分で自分の生活をコントロールしたい、自分で自分の生活をコントロールしたいんです。 自分で自分の生活をコントロールするってどういうことか。 お金を自分でコントロールするということか。 自分がやったら自分でやった分だけ返ってくる、そんなそんなものはない。 大体の成果は後から成果は後から実の成果は今実るものではない。 そのラグを自分の中でバッファーとして吸収することが必要。 仕事の量が多い、考えることがたくさんある、自分のキャパシティを超えていると日々感じている。

どうやったら回せるようになるんだろう。 どうやったら考えられるようになるのだろう、どうやったら案件全部把握して考えられるようになるんだろう。 定量ではなくて定性的に考える、 数字で考えるんだ、数字に強くなる、数字で考える数字を見る。

刺激を求めるんじゃなくて継続性を求める。 一過性のもので人生は変わらない。 少しずつ少しずつ水が石を削るように人生は変わっていく。 とは言え全く違うところに水を垂らし続けても何にもならない。 自分がどの方向に進みたいのか考える必要がある。 間違っている時間はなるべく少なくする。 他の人が間違ったことを自分の同じ間違いを犯してはいけない。 間違いの多い人、間違いの少ない人、間違いの多い人がかかる時間の、半分や3分の1の時間で間違いの少ない人は人生を進んでいくことができる。だから考える必要がある。考える、考える、考える。

物事を見るときには測定ー解析ー判断のフローをたどる。 測定は同じようにできる。 解析判断のところで人によって大きく違いが出て、結果が大きく変わってくる。 解析と判断、そこを大きく間違えてはいけない。

謙虚さを忘れるな、謙虚と言う事は守破離と同じ。 我流では自分ができる範囲内のところしか進んで行けない。他の人の力を借りることができない。 素直さ謙虚さを持って初めて他の人の意見を自分の人生に取り入れ、自分だけでは辿り着けない、さらに先のところまでたどり着くことができる。 それを忘れるな。 他の人はかけてくれる言葉のありがたみを忘れるな。 何か言われたらむかつくこといっぱいある、 でもその言葉は他の人が自分の人生を使って自分に何か投げかけてきてくれている言葉なんだありがたみを忘れるな。 どんなに自分が忙しくても謙虚に生きること。

sklearnによる回帰問題(線形回帰と多項式回帰)

udemyのdata science A-Zの回帰の問題が終わりましたのでその進捗と学んだことを応用して回帰してみたいと思います。

たぶんですが、この講義は原理を理解している人がやるとスムーズなのでしょうね。 原理を知った上で、じゃあプログラミングはどうやろうか知りたい人だとスムーズに進むと思います。 僕はいまいち理解していないことが多かったため、プラスαでなにをしているのか調べることに結構時間かかりました。

regression

回帰というのは従属変数yと独立変数\bf{X}の間にモデルを当てはめるということ。 \bf{X}yがあたえられたとき、y = f(\bf{X}, \beta) と表すことができるような、 \betaを探しだす。

y = \bf{X}  \beta
 \betaが未知のパラメータ、求めたいパラメータでスカラもしくはベクトルになります。

線形回帰

今回はLinearRegression 線形回帰のみ考えたいと思います。

 y= \beta_1  x_1 + \beta_0 のようなモデルは単回帰を表します。

このようにy = f(x) で表されるモデルにはあるパターンがあります。 xが2次元以上のものは重回帰と呼ぶようです。  y =  \beta_0 + \beta_1 x_1  + \beta_2 x_2

xが多項式となる場合は多項式回帰となります。  y =  \beta_0 + \beta_1 x_1  + \beta_2  {x_1}^2 このモデルをフィットさせると直線にはならないのですが、\betaに関してはLinearなためLinear Regressionだそうです。

どのモデルがうまくフィットするのか考えることが重要です。

近似方法

さてモデルを考えたら係数を求めていくわけですが、その際に使用する手法は最小2乗近似という方法をとります。

実際にやってみた

UCIのMachine Learning Repositoryからデータセットを取ってきて回帰問題を考えてみます。 今回はcomputer hardwareというデータセットを使います。

http://archive.ics.uci.edu/ml/datasets/Computer+Hardware

まずは
X:maximum main memory in kilobytes (integer)
y:estimated relative performance from the original article (integer)
として線形回帰を行っていきます。

まずライブラリとデータセットを読み込みます。

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('dataset.csv')

# Simple Linear Regression
X = dataset.loc[:, ['ERP']].values
y = dataset.loc[:, ['MMAX']].values

最初は単回帰を行ってみます。

# importing the Linear Model
from sklearn.linear_model import LinearRegression
reg = LinearRegression()
reg.fit(X, y)
#visualising the result 
y_pred = reg.predict(X)
plt.scatter(X,y, color='red')
plt.plot(X, y_pred, color='blue')
plt.title("MMAX(maximum main memory in kilobytes) vs \n ERP(estimated relative performance)\n(Linear Regression)")
plt.xlabel("MMAX")
plt.ylabel("ERP")
plt.show()

f:id:coldwarmer:20170724090329p:plain
こんな感じになりました。 青線が今回作ったモデルを使ってyを予測した値になります。 よくフィットしているとはいえないですね。

次は多項式を用いて回帰してみようと思います。 3次の多項式で近似してみます。

# Polynomial Regression
from sklearn.preprocessing import PolynomialFeatures
polynomial_features = PolynomialFeatures(degree = 3)
X_poly = polynomial_features.fit_transform(X)
poly_reg = LinearRegression()
poly_reg.fit(X_poly, y)


# Visualising the Polynomial Regression results 
plt.scatter(X, y, color = 'red')
plt.plot(X_grid, poly_reg.predict(polynomial_features.fit_transform(X)), color = 'blue')
plt.title("MMAX(maximum main memory in kilobytes) vs \n ERP(estimated relative performance)\n(Polinomial Regression)")
plt.xlabel('MMAX')
plt.ylabel('ERP')
plt.show()

f:id:coldwarmer:20170724090350p:plain
結構いい感じ。

最後に6次の多項式で回帰してみます。
f:id:coldwarmer:20170724091027p:plain
うまくいきませんね。 これはオーバーフィッティングしている状態ですね。

とりあえず単回帰と多項式回帰はできました。 本当は最小2乗近似の誤差を確認したいのですがやり方がわかりません。。。 分かり次第追記します。

今回重回帰をやらなかったのと、Rを使ってないのでRで重回帰をやってみます。。

また次のコンテンツは決定木の回帰ということなのでそちらもまとめていきたいと思います。

ではまた。