Translate

ラベル :データマイニング の投稿を表示しています。 すべての投稿を表示
ラベル :データマイニング の投稿を表示しています。 すべての投稿を表示
Post Date:2020年5月27日 

LaTex で数式を書く最も簡単な方法

Google Colaboratory で Markdown

Markdown(マークダウン)で Latex を使って数式を書く方法について「象と散歩: TyporaでMarkdownを始めよう!」で紹介しましたが、利用頻度の低い LaTex の書式なんて、直ぐに記憶の彼方に、、、。

しかし、今は便利な世の中。オンラインで、ポチポチと式を選んでいくと簡単に LaTex を作成することができます。

アカウントを登録しなくて利用できるサービスには下記の2つがあります。

一長一短ありますが、操作性の観点では HostMath の方が使いやすいです。


LaTexの基本は押さえておく

オンラインサービスを使う前に、LaTexの基本は理解しておきましょう。

基本形は、

\(コマンド){値}

とシンプルです。これだけ理解していれば大丈夫です。

例えば、ルートを使う場合には、

\sqrt{数値 or 式}

と、記載すれば、下記のように表示されます。

\[ \sqrt{数値 \, or \, 式} \]

HostMathでLaTexを作成

では、さっそくHostMath を使って数式を作っていきます。例題は分散です。

\[ \sigma^2 = \frac{1}{n} \sum_{i=1}^n(x_{i} - \bar{x})^2 \]


σの二乗

"GK&Fun (Greek And Function)” からσを選択します。エディター画面に \sigma と表示されて、下のビューアー画面には、σ が表示されます。

HostMathでLaTex

べき乗は、”^” を使います。エディター画面で \sigma の後に ^2= まで入力します。

HostMathでLaTex

式の左側が完成です。


分数の入力

続いて1/nを入力するために、”Math” から ”ab/cd” を選択します。

エディター画面には \frac{ab}{cd} が追加され、プレビュー画面には、ab/cd が追加されています。

HostMathでLaTex

ab が分子、cd が分母なので、ab を 1 に cd を n に書き換えます。

HostMathでLaTex

Σの入力

続いては、Σの部分になります。”Math” から ”Σ” を選択すると、\sum_a^b が追加されました。

HostMathでLaTex

しかし、この形式は、これだけ理解すれば大丈夫といった基本形と異なります。値がひとつなので{}が省略されていますが、正しくは下記となります。

\sum_{下限}^{上限}

エディター画面で、下限を {i=1}、上限を {n} に書き換えます。

※{}で括らないで、a の部分を i=1 にしてしまうと違う解釈となってしまいます。

HostMathでLaTex

(x-x̄)^2

エディター画面で (x-x)^2 を追加します。

HostMathでLaTex

エディター画面で、2二つ目の x を選択して、”Logic” から ā を選択すると \bar{a} となります。

HostMathでLaTex

\bar{a} を \bar{x} とすれば、完成です。

HostMathでLaTex

完成した式(LaTex)をMarkdownで利用する

今回はTyporaではなく、Google Colaboratory で利用します。

Google Colaboratory については、「象と散歩: 1分でPythonの学習を始める!」で紹介していますが、Googleが提供する Python 実行環境です。テキストを Markdown で記載できます。

Google Colaboratory で LaTex を使う場合には、数式を $$ で囲みます。

$$ \sigma^2=\frac{1}{n}\sum_{i=1}^n(x_{i}-\bar{x})^2 $$

Google Colaboratory

ブログで LaTex を使って式を書く

ブログでLaTexで記載した数式を表示するためには 「MathJax」 を利用します。

CDNサービスが提供されているので下記のコードを </head> の前に追加します。

<script async='async' src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML'/

LaTex で記載した数式を使う場合には、下記のように “\[“ で囲みます。

\[
\sigma^2 = \frac{1}{n} \sum_{i=1}^n(x_{i} - \bar{x})^2
\]

下記のように表示されます。

\[ \sigma^2 = \frac{1}{n} \sum_{i=1}^n(x_{i} - \bar{x})^2 \]
Post Date:2020年1月20日 

超初心者のPythonプログラミング(その1)

はじめてのPython ipynb - Colaboratory

1分でPythonの学習を始める! | 象と散歩 で Googleが提供するクラウドでのPython実行環境、Google Colaboratory を紹介しました。PCでもモバイル端末でもブラウザ(Chromeを推奨)が使える環境とGoogleアカウントさえあれば簡単にPythonの勉強が始められます。

データサイエンティストとして活躍するためには、データクレンジングやデータ加工をするためにPythonでプログラムが書けると便利ですし、そのままPythonでデータ分析もできます。

また、論理的思考を鍛えるためにプログラミングを勉強しようという方にも、Python は文法が簡単なので最適なプログラム言語だと思います。。そして、前述したように Google Colaboratory を使えば、ソフトウェアのインストールなども必要ないので気軽に始められます。

何れにしても、バリバリのプログラマーを目指すわけではないので、エキスパートになる必要はまったくなく、最低必要減の知識を身に付ければ十分です。先ずは、Pythonってどんなプログラム言語なのかを学んでいきましょう。

このブログの中では、 プログラミングの基礎として、下記について何回かに分けて説明をしていこうと思います。あとは実践の中で知識を深めていってください。今回は、1~2の変数と四則演算までの説明となります。

  1. 変数とは?
  2. 演算子(四則演算)
  3. データを格納する
    1. 配列
    2. 二次元配列
    3. 集合型
    4. 辞書型
  4. 条件分岐(IF分と比較演算子,論理演算子)
  5. 繰り返し文(forループ, whileループ)
  6. 関数

Goolge Cloabで新規ノートを作成する

Python3の新しいノートブック - Colaboratory

メニューから “ファイル” → “Python 3の新しいノートブック” を選択します。

Python3の新しいノートブック - Colaboratory

これで、新しいノートブックが開いてPythonのプラグラムを書く準備ができました。

Python3 ノートブック - Colaboratory

ひとつのコードセルに書いたプログラムは同時に実行されます。左上にある『+コード』をクリックすると、現在のセルの下にコードが追加されます。またセル中央の上部でマウスオーバーすると同じようにコードを追加のアイコンが現れます(下図参照)。こちらは、現在のセルの上にコードセルが追加されます。

またセル中央の下部でマウスオーバーすると、現在のセルの下にコードを追加するアイコンが出現します。

プログラムを書くcodeセル - Colaboratory

これで、Pythonプログラミングの勉強の準備は完了です。


0. Pythonの文法

Pyhonはとてもシンプルなプログラミング言語です。

  • Pythonのプログラムは、原則1行に1命令
    1行に複数の命令を記載する場合は、;(セミコロン)で繋げる
  • # で始まる行はコメント
    プログラムと同一行の後ろに # でコメントを記載することも可能
  • if, for, while で実行するプログラムはインデント(字下げ)する

と、いうのがプログラムを実行する上での最低限のルールですが、PEP (Python Enhancement Proposal:Python拡張提案)にて美しい(わかりやすい)プログラムの書き方が提案されているので、少しPythonのプログラムに慣れたら pep8-ja 1.0 ドキュメント を参照してみましょう。


1. 変数とは

変数はプログラミングをする上では必ず使うものなのでしっかり覚えましょう。

なぜプログラムで変数を使うかといえば、例えば、1+1 の答えは、2でしかありませんが、a+b とすると、a と b に様々な数値を代入することで、式を変えずに答えを変えることができます。この a, b が変数です。変数には、数値以外にも文字も代入することができます。


変数名

aとかbといった小文字ひと文字でなくても、Result, Result_1, Result_2 など英大文字、アンダースコア、数字が使えますが、数字は先頭には利用できません。

しかし、Pythonが使っているキーワード(予約語)は、変数としては使えません。例えばNoneに1を代入しようとすると、"SyntaxError: can't assign to keyword" とエラーとなります。

予約語を変数として使おうとするとエラーに

また print などを変数として割り当ててしまうと、命令としてのprintが使えなくなり面倒なことになります。

Google Colaboratory のノートブックでプログラムを書くと、「あなたが書きたいプログラムはこう?」と推奨してくれる機能があります。例えば先頭一文字pを入力すると、pass, pow, pprint, print, property が候補としてあがるので、これらの文字列を変数として使うのはやめましょう。

サジェスト機能で変数に使えない文字列を確認

もし間違って割り当ててしまったときには、

del 変数名

として、変数の定義を削除します。


変数に数値や文字列を代入する

変数に数値や文字を代入するには"="を使います。プログラムでは=記号は、計算結果を表す記号ではなく代入のための記号です。

  • =(イコール)は代入を表す
  • 文字列は、'(シングルクォーテーション)若しくは、"(ダブルクォーテーション)で囲む

また、文字列+文字列は、文字列の結合を意味します。

下記のプログラムを実行してみましょう。a + b の結果を c に代入して、結果を表示するプログラムです。a と b に代入している数値を変更して色々と試してみましょう。

print() は、()の中を表示する命令です。

a = 1        # 変数 a に 1 を代入
b = 2.5      # 変数 b に 2.5 を代入
c = a + b    # 変数 c に a+b の計算結果を代入
print(c)     # 変数 C の中身を表示

変数に数値を代入して計算する - colaboratory

文字列を変数に代入する

続いて変数に文字列を入れてみます。

a に Hello, b には World! を代入して、a と b の文字列を結合した結果を c に代入します。文字列の足し算は、結合を意味します。前述したように文字列は ‘(シングルクォーテーション)か “(ダブルクォーテーション)で囲みます。

下記のプログラムを実行してみましょう。

a = 'Hello,'    # a に Hello,を代入(シングルクォーテーションで囲む)
b = 'World!'    # b に World!を代入(シングルクォーテーションで囲む)

# 文字列 + 文字列は、文字列を結合するという意味になります。
c = a + b       # c に a の文字列と b の文字列を結合した結果を代入
print(c)        # c を表示

変数に文字列を代入して結合する - colaboratory

因みに文字列の中で ‘(シングルクォーテーション)を使いたい場合は、 ”(ダブルクォーテーション)で全体を囲み、逆に”(ダブルクォーテーション)を使いたい場合は、‘(シングルクォーテーション)で全体を囲みます。

下記のプログラムで確認できます。

# ' を文字列に含みたい場合は " で全体を囲む
# " を文字列に含みたい場合は ' で全体を囲む

print('Hello, "Python" World!')
print("Hello, 'Python' World!")

Pythonで文字としてシングルクォーテーション、ダブルクォーテーションを使う

変数の有効範囲

変数に代入した値は、Google Colabotaryでは、

  • ノートブックを閉じる
  • 別なノートブックでプログラムを書く
  • 暫く放置してセッションが切れる

まで、ずっと有効です。

厳密には、グローバル変数とローカル変数というのがありますが、いまの時点では、前に代入した値が残っていると思ってください。


2.演算子(四則演算子)

次は、四則演算子についてです。加算(足し算)については、変数の例で示しましたが、減算(引き算)、乗算(掛け算)、除算(割り算)、べき乗については下記の記号を使います。

四則演算 記号
加算 +
減算 -
乗算*
除算 /
商を求める //
余を求める %
べき乗 **

割り算では、商と余を求めることができます。べき乗では、二乗であれば**2、10乗であれば**10のように書きます。

では実際にプログラムで確認してみましょう。下記のプログラムでは、print文の中で計算を実行しています。

a = 5
b = 3

# aとbを足す(加算)
print(a + b)

# aからbを引く(減算)
print(a - b)

# aとbをかける(乗算)
print(a * b)

# aをbで割る(除算)
print(a / b)

# aをbで割った商を求める
print(a // b)

# aをbで割った余りを求める
print(a % b)

# aのb乗
print(a ** b)

Pythonで四則演算 - Colaboratory

最後に

これで、変数を説明して変数を使った計算までができるようになったと思います。

最後に読みやすいプログラムについて追記しておきます。今回のサンプルプログラムは、下記のように読みやすくするためにところどころ半角スペースを入れています。

a = 1      # 変数 a に 1 を代入
b = 2.5    # 変数 b に 2.5 を代入
c = a + b  # 変数 c に a+b の計算結果を代入
print(c)   # 変数 c の中身を表示

しかし、下記のようにすべての半角スペースを削除したとしても実行結果は同じです。

a=1#変数aに1を代入
b=2.5#変数bに2.5を代入
c=a+b#変数cにa+bの計算結果を代入
print(c)#変数cの中身を表示

どちらも3.5という答えを求められますが、どちらのプログラムが見やすいですか?

img alt="可読性に優れたプログラム" height="378" src="https://lh4.googleusercontent.com/QW6mUmW1HSuCcYU9d_yc50NiL9CHNwKzfvewjWU1QlPSyhBiYQefLC2OJ1KafSNeH35Z72uIDRslVOZfTTb9JYH-dIcUcx_bTF1-zbDqVRweKprA-I9q9ryEgPesaq17wNnnamiLkI6l_mgWz0VNMw=w640-h378" title="可読性に優れたプログラム" width="640" />

これが見やすいプログラムを考えるということです。

Post Date:2019年9月23日 

1分でPythonの学習を始める!

Colaboratory へようこそ - Colaboratory

世の中、データサイエンティストブームです⁉ 少し前ならR(アール)でデータ分析を学習された方も多かったと思いますが、AIというキーワードが浸透すると共に、Python(パイソン)で機械学習ディープラーニング(深層学習)というのが主流になってきています。

そんなPythonが、どんなものなのかを試してみようと思ったときに、障壁となるのが環境構築です。またPCにインストールするので、スマホやタブレットで隙間時間にも勉強しようということもできません。もちろん iOS用の Pythonista 3 - omz:software などもありますが、PCとモバイルでのデータやプログラムの共有などに難があります。

と、いうことで、今回は、Googleアカウントとブラウザさえあれば、場所も環境も問わずに Python の学習を始められる Colaboratory – Google Cloab(コラボラトリー - グーグル・コラボ)の紹介です


Pythonとは

Pythonは、簡単にプログロムが実行できるインタプリタ形式のオブジェクト指向プログラミング言語です。シンプルな文法なのでプログラミング初心者にもわかりやすい言語です。オープンソース(BSDライセンス)として提供されているので、誰でも無料で利用することができます。

そして、データ加工、グラフ作成、データ分析、機械学習といったライブラリ(パッケージ)が提供されているので、簡単なプログラムで最新のデータ分析を行うことができます。


Python の勉強を始めるときの最大の難関

Python でデータ分析や機械学習を行うためのライブラリのインストールや管理を容易にしてくれる Anaconda | World's Most Popular Data Science Platform (アナコンダ)を使うの一般的です。

ANACONDA NAVIGATOR

しかし、何やら黒い画面(コマンドプロント)は出てくるし、取りあえず、プログラムをノートブック形式で書いて実行してくれる Jupyter Notebook も起動したら英語、、、。

jupter notebook

Python を勉強しようと思っても、この最初の環境構築で挫けてしまう人も多いのではないかと思います。


インストール不要、モバイルでも実行可能な Python環境

Colaboratory – Google Cloab は、Googleが機械学習の教育・研究の促進として提供しているクラウドで実行される Jupyter ノートブック環境です。複雑な設定は不要で、Googleアカウントさえあれば無料でブラウザから利用することができます。

また作成したプログラムやデータもGoogleドライブに保存できるのでブラウザさえあれば作業を継続できるし、他の人との共有も容易です。そして深層学習(ディープラーニング)でGPU環境を使用することもできます。

下記は、モバイルでの画面となります。

Colaboratory - Google Colab モバイル

Google Colaboratoryの起動方法

Google Colaboratory の起動は、「Clolaborataly」 でググるか、https://colab.research.google.com/ になります。Googleにログインしていなければ、右上のログインからGoogleアカウントでログインしてください。最初の利用時には認証を求められます。

Colaboratory へようこそ - Colaboratory (ログイン)

Pythonを実行してみよう

ファイル>python3の新しいノートブック」を選択します。(モバイルでの実行なら左上のメニューバーから選択します)

Google Colab - python3の新しいノートブック

新しいノートブックが開きます。ノートブックには、”コード”(Pythonプログラ)か ”テキスト”(ノートブック)が記載でき、これらひとつづつの枡をセルとよびます。

Google Colab - Jupyter Notebook

それでは、さっそくプログラムを書いてみましょう。コードセルに下記のコード書きます。

print('Hello, World!')

上記のコードを実行するには、Windows PCなら 「Ctrl+Enter」、Macなら 「command+return」 です。モバイルで実行する場合はセル左側の「再生ボタン」をクリックして実行しましょう。下図はiPhoneで実行した結果となります。

Google Colab - Pythonの実行

作成したプログラムを保存する

作成したプログラムはGoogleドライブに保存されますので、名前を付けて保存します。PCならメニューバーの「ファイル>名前を変更」で左上の「Untitled1.ipynb」にフォーカスされます。モバイルからならメニューバーから「ファイル>名前の変更…」です。直接ファイル名の部分をクリックしても名前を変更できます。

Google Colab - Jupyter Nootebookの保存

.ipynb」 は、Jupyter Notebookの拡張子になりますので、.(ドット)の前の「Untitled1」を変更します。下記の例では、「Hello World.ipynb」としました。

Google Colab - Jupyter Nootebook 名前の変更

保存するには、「ファイル>保存」かPCなら「Ctrl+S」です。最初にClolaboratalyの認証リクエストを受託すると、Googleドライブのマイドライブに「Colab Notebooks」というフォルダが作成され、Jupyterノートブックのファイルは、こちらのフォルダ配下に保存されます。


Google Colab でライブラリを使う

Colaboratory – Google Cloab は、簡単に Python の学習を始められます。またデータ分析や機械学習で必要な作業を容易にしてくれるライブラリも簡単に使えます。

利用できるライブラリとバージョンは、下記のコマンドで確認できます。

!pip freeze
Google Colab - ライブラリの確認

また必要があれば簡単に追加でインストールすることもできます。

!pip install pandas_profiling

pandas_prifiling は、pandasをもっと便利にしてくれる追加パッケージですが、ライブラリの使い方などはまた別途説明したいと思います。


まとめ

Pythonは、簡単な構文で覚えやすいプログラミング言語です。また豊富なライブラリがありますので、機械学習を勉強したい、データサイエンティストを目指したい、プログラミングを始めたいという方は、先ずは、Colaboratory - Google Colab で Pythonでのデータ分析、機械学習の勉強を始めてみてくさい。

Post Date:2019年2月11日 

Excelで簡単テーブル結合

Excelでテーブル結合

Excelでデータを結合する関数に VLOOKUP がありますが、使っていないと直ぐに忘れてしまうし、複数の列で結合するのは、ちょっと面倒です。しかし、Office365、若しくは、Office2016以降であれば[データ]タブの[データの取得と変換]を使えば簡単にテーブル結合ができます。

Power Query を使えば、Excelをリレーショナルデータベースのように簡単にテーブル結合(JOIN)ができます。

では、さっそく、[データの取得と変換](Power Query)を使い方を説明していきます。


使用する表の説明

果物を注文した個数と、注文日の果物価格からなる2つの表です。果物の仕入れ金額は、日によって異なります。

果物の注文個数
注文日 品名 個数
2019/2/1 リンゴ 5
2019/2/1 イチゴ 6
2019/2/2 リンゴ 3
2019/2/2 イチゴ 1
2019/2/2 バナナ 10
2019/2/3 バナナ 5
2019/2/3 イチゴ 7

注文日の果物価格
注文日 品名 価格
2019/2/1 リンゴ 100
2019/2/1 バナナ 50
2019/2/1 イチゴ 200
2019/2/2 リンゴ 100
2019/2/2 バナナ 60
2019/2/2 イチゴ 250
2019/2/3 リンゴ 120
2019/2/3 バナナ 70
2019/2/3 イチゴ 230

上記の表から、下表を作成していきます。

テーブル結合した結果
注文日 品名 個数 価格
2019/2/1 リンゴ 5 100
2019/2/1 イチゴ 6 200
2019/2/2 リンゴ 3 100
2019/2/2 イチゴ 1 250
2019/2/2 バナナ 10 60
2019/2/3 バナナ 5 70
2019/2/3 イチゴ 7 230

データの取得と変換

[データの取得と変換](Power Query)では、Excel, CSV, XML形式の表(テーブル)を読み込むことができます。

データの取得と変換(Power Query)

果物の注文個数」の表を読み込む

今回は、[テーブルまたは範囲から]を使って表を読み込みます。上記の「果物の注文個数」の表をコピーして、Excelに貼り付けてください。

① [データ]タブの[テーブルまたは範囲から]をクリック

テーブルまたは範囲から

② [テーブルの作成] で表全体(A1:C8)を選択

③ [先頭行をテーブルの見出しとして使用する(M)] をチェック

テーブルの作成

④ [OK]をクリック

[Power Query エディター]が起動されます。

Power Query エディター

Power Query エディターでは、データ形式を変更することもできます。

読み込んだ 注文日 の形式は、日付/時刻 となっていますので日付に変更します。

注文日の左側にあるカレンダーアイコンをクリック

⑥ 形式一覧から 日付 を選択

日付形式への変換

⑦ [クエリの設定]で[名前]を注文個数とします(下図①)

⑧ [閉じて読み込む] をクリック(下図②)

クエリの設定

7行のデータが読み込まれます。

クエリの接続

「注文日の果物価格」の表を読み込む

注文日の果物価格」の表をコピーして、Excelに貼り付けて「果物の注文個数」の表と同じように読み込みます。

クエリの名前は「果物価格」とします。

果物価格テーブルの読み込み

2つのテーブルを結合する

2つの表を読み込んだので、結合していきます。

① [クエリと接続] にある 注文個数 のクエリを右クリック

② [結合] をクリック

テーブルの結合

上段に注文個数のテーブルが読み込まれた状態で[マージ]の画面が表示されます。

結合テーブルの選択

③ 下段のテーブルに果物価格を選択

結合テーブルの選択

結合するキーを選択します。注文日品名の2項目を結合キーとします。

注文個数注文日 をクリック

注文個数品名Ctrlキー を押しながらクリック

果物価格注文日をクリック

果物価格品名Ctrlキー を押しながらクリック

テーブル結合項目の選択

複数の連結キーがある場合は、Ctrlキーを押しながら列名をクリックします。

注文日は1、品名には2 と表示されます。


結合の種類

Power Queryでの結合の種類には、いくつかありますが、よく使う左外部と内部について説明します。

Power Query の結合の種類
左外部(最初の行すべて、および2番目の行のうち一致するもの)

[左外部](右外部)結合は、リレーショナルデータベースでの外部結合(OUTER JOIN)です。

最初の行というのは、上記例では、注文個数、2番目の行が果物価格になり、注文個数注文日品名に一致する果物価格の列が追加されます。

[右外部]を選択すると、果物価格の表に一致する注文個数の列が追加されます。

内部(一致する行のみ)

[内部]結合は、リレーショナルデータベースでの内部結合(INNER JOIN)です。

上記例では、注文個数果物価格注文品名が一致する行のみ抽出されます。

⑧ [結合の種類]で[左外部]を選択

⑨ [OK]をクリック

[Power Query エディター]が起動します。

Power Query でテーブル結合

結合した結果に追加する列を選択

注文個数注文日品名個数の右に 注文個数が追加され、各行にはTableと表示されています。注文個数テーブルから必要な列(価格)を選択するために、注文個数の右にある展開アイコン ( 展開 )をクリックします。

マージされたテーブルの列名を指定する

⑩ [すべての列を選択] をクリックして、すべての列をオフにします

価格 を選択

⑫ [OK] をクリック

マージされたテーブルの列名を選択

一番右の列が、選択した 果物価格テーブルの価格になります。

クエリでのテーブル結合結果

⑬ [閉じて読み込む] をクリック

これで、2つのテーブルで注文日品名が一致する価格の列がマージされたシートが作成され完成です。

マージ(結合)結果

まとめ

[データの取得と変換](Power Query)は、データを加工する上で、テーブル結合ができる強力なツールです。10万行ぐらいのデータでも簡単に扱えますので、是非、使い方を覚えてください。

象と散歩:人気の投稿(過去7日間)