<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Colab &#8211; uxmeetsdata.com</title>
	<atom:link href="https://uxmeetsdata.com/tag/colab/feed/" rel="self" type="application/rss+xml" />
	<link>https://uxmeetsdata.com</link>
	<description>UXとデータによる価値創発メディア</description>
	<lastBuildDate>Mon, 03 Jun 2024 07:01:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<item>
		<title>TechGym セミナー報告</title>
		<link>https://uxmeetsdata.com/techgym-event-20190522/</link>
				<pubDate>Wed, 29 May 2019 10:15:07 +0000</pubDate>
		<dc:creator><![CDATA[Atsushi Sugawa]]></dc:creator>
		<category><![CDATA[Topics]]></category>
		<category><![CDATA[Report]]></category>
		<category><![CDATA[Colab]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">https://uxmeetsdata.com/?p=9808</guid>
				<description><![CDATA[座学なしの実践先行型。 5月22日に開催された、TechGym主催の「ゼロからはじめるPythonプログラミン...<p class="more-link"><a href="https://uxmeetsdata.com/techgym-event-20190522/" class="themebutton3">Read More</a></p>]]></description>
								<content:encoded><![CDATA[<h2><strong>座学なしの実践先行型。</strong></h2>



<p>5月22日に開催された、<a rel="noreferrer noopener" aria-label="TechGym (新しいタブで開く)" href="http://techgym.jp" target="_blank">TechGym</a>主催の「<a rel="noreferrer noopener" aria-label="ゼロからはじめるPythonプログラミング入門講座 (新しいタブで開く)" href="http://techgym.jp/?p=19" target="_blank">ゼロからはじめるPythonプログラミング入門講座</a>」に参加してきたのでレポートします。とはいえ、そもそもの参加目的がPythonの習得ではなく、<strong>テックジム方式</strong>という学習メソッドの体験なので、そちらを中心に紹介していきます。</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img src="https://uxmeetsdata.com/wp-content/uploads/2019/05/xmd_techgym.jpg" alt="" class="wp-image-9807" width="480" height="241" srcset="https://uxmeetsdata.com/wp-content/uploads/2019/05/xmd_techgym.jpg 800w, https://uxmeetsdata.com/wp-content/uploads/2019/05/xmd_techgym-300x150.jpg 300w, https://uxmeetsdata.com/wp-content/uploads/2019/05/xmd_techgym-768x384.jpg 768w" sizes="(max-width: 480px) 100vw, 480px" /><figcaption>出典：TechGym</figcaption></figure></div>



<p><strong>テックジム（TechGym）方式</strong>は、基礎知識のないビギナーでも、<strong>座学なしの実践先行型</strong>でプログラミングを習得できるよう設計された学習メソッドです。その背景について、TechGymのホームページではこのように説明されています。</p>



<blockquote class="wp-block-quote"><p>優れたエンジニアの多くは、職業訓練学校や研修スクールで学ぶような学び方をしません。 作りたいものを作っていたら、自然に習得できているのです。そして、優れた指導者（メンターや師匠）との出会いがエンジニアとしてのプロフェッショナル性を高めます。</p><cite><a href="http://techgym.jp" target="_blank" rel="noreferrer noopener" aria-label="TechGym (新しいタブで開く)">TechGym</a></cite></blockquote>



<p>筆者の経験的にも、大学で初めてプログラミングの授業を受けた際、いきなり基礎知識を詰め込まれ、意味が理解できないだけでなく、<strong>楽しいという感覚が得られずに興味を失ってしまった</strong>記憶があります。その後、研究室でのAIの開発を通じてようやくプログラミングが楽しくなり、自ら学習するようになりました。</p>



<p>実際の学習の進め方としては、講師が課題を提示し、各自がひたすら自習で課題に取り組むというものです。この講座では「じゃんけんゲーム」を作るというのが課題でした。最初は、<strong>限定的な機能をとにかく動作する形にする</strong>ところから開始し、徐々に<strong>機能を追加</strong>し、さらに<strong>プログラミングの記述を洗練</strong>させていく、というステップで進んで行きます。</p>



<p>各ステップでは、予め用意された<strong>サンプルコードに倣い</strong>ながら、少しずつ開示される<strong>ヒントを頼り</strong>にプログラミングを作成します。そして、それが動作したことを確認した上で<strong>講師からの解説</strong>があり、そこでようやく自分が記述したプログラムの<strong>正しい意味を理解</strong>することになります。この進め方は非常に合理的です。</p>



<h2><strong>もくもく会ベースの学習メソッド。</strong></h2>



<p>ちなみに、各自の自習形式で行うという点では、もくもく会に近いと言えます。<strong>もくもく会</strong>とは、カフェやシェアオフィスなどに集まり、各自もくもくと勉強したり作業したり本を読んだりするだけの会のことで、いわゆる勉強会とは違い、<strong>各自が主体的に取り組む</strong>ことで”話を聞いて勉強した気になっただけ”にならないのと、完全な独習とは違い、<strong>同じ関心や課題をもった仲間がいる</strong>ことで背中を押されたり、互いに教え合うことで知識を高められるという特徴があります。</p>



<p>テックジム方式がもくもく会と異なるのは、課題と解くという明確な&#8221;<strong>やるこ</strong>と&#8221;がある点と、プロの講師やメンターから教えてもらえる点です。すなわち、自発性とプロフェッショナル性を兼ね備えた学習メソッドと言えます。ただし、多くのもくもく会が有志により無料（場所代などの実費を除く）で行われているのに対し、テックジム方式は有料のスクールになります。</p>



<p>ちなみにプログラミングの実行環境としては、今回の対象言語がPythonであったこともあり、Google Colabで行われました。Colabについては「<a href="https://uxmeetsdata.com/colab-python-01/">ColabではじめるPython</a>」で詳細を解説していますが、Googleが機械学習の教育や研究のために無償提供しているブラウザUIベースのPython実行環境で、環境構築なしですぐにプログラミングを実践できる優れモノです。Pythonのプログラミング学習はこれだけで十分なので、しばらくはColab一択の状況が続くかと思います。</p>
]]></content:encoded>
										</item>
	<item>
		<title>ColabではじめるPython #04</title>
		<link>https://uxmeetsdata.com/colab-python-04/</link>
				<pubDate>Sun, 17 Feb 2019 11:52:41 +0000</pubDate>
		<dc:creator><![CDATA[Atsushi Sugawa]]></dc:creator>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Colab]]></category>
		<category><![CDATA[Data Science]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">https://uxmeetsdata.com/?p=1998</guid>
				<description><![CDATA[条件分岐はif文のみ。 Pythonの基本的な構文に、条件分岐と繰り返しがあります。これは他のプログラミング言...<p class="more-link"><a href="https://uxmeetsdata.com/colab-python-04/" class="themebutton3">Read More</a></p>]]></description>
								<content:encoded><![CDATA[<div class="wp-block-image"><figure class="aligncenter is-resized"><img src="https://uxmeetsdata.com/wp-content/uploads/2019/03/xmd_colab_python.png" alt="" class="wp-image-3468" width="480" height="243"/></figure></div>



<h2><strong>条件分岐はif文のみ。</strong></h2>



<p>Pythonの基本的な構文に、<strong>条件分岐</strong>と<strong>繰り返し</strong>があります。これは他のプログラミング言語でもほぼ共通して存在するものです。</p>



<p><strong>条件分岐（Conditional Branch）</strong>とは、条件により処理を分岐させることをといい、<strong>if文</strong>を用います。C/C++などに存在するswitch文はPythonには存在しません。一般的に、<strong>分岐が少ない場合はif文</strong>、<strong>分岐が多い場合はswitch文</strong>を使うことが多いですが、Pythonではすべてif文で記述します。switch文は分岐をシンプルに表現できますが、Pythonでは<strong>辞書</strong>を使ってif文をシンプルに表現できます。</p>



<p>if文は以下のフォーマットで記述します。elif文はいくつでも入れることができます。</p>



<pre class="wp-block-preformatted">if <em>条件式1</em>:<br>    <em>条件式1が真の場合の処理</em><br>elif <em>条件式2</em>:<br>    <em>条件式1が偽で条件式2が真の場合の処理</em><br>else:<br>    <em>すべての条件式が偽の場合の処理</em></pre>



<p>if文のサンプルコードは以下のとおりです。</p>



<script src="https://gist.github.com/crosshack/aaef1bc595fb4052fce237ce4481702d.js"></script>



<p>なお、条件式は「x == 1」のように記述しますが、この「==（等しい）」を<strong>比較演算子</strong>といい、他には「!=（異なる）」「&gt;（大なり）」「&lt;（小なり）」などがあります。また、複数の条件式を「and（論理積）」「or（論理和）」などの<strong>論理演算子</strong>で組み合わせることが可能です。</p>



<p>条件と処理を添字と値で表現できる場合は「dict = {1:&#8221;A&#8221;, 2:&#8221;B&#8221;, 3:&#8221;C&#8221;}」のような辞書を定義することで「if x in dict: print( dict[ x ] )」のようなシンプルな構文で記述することができます。ここでの「in」は<strong>in演算子</strong>といい「<em>変数</em> in <em>イテラブルオブジェクト</em>」のフォーマットで記述することで、リストやタプルなどの<strong>イテラブルオブジェクト</strong>（要素を順番に取り出すことのできるオブジェクト）から順に要素を取り出して変数に代入します。</p>



<p>またif文は、条件式を<strong>ヘッダ（Header）</strong>、条件式にひもづく処理を<strong>スイート（Suite）</strong>とする二つの部分に分けられます。このようなヘッダとスイートの組合せからなる構文を<strong>複合文 </strong>といいます。</p>



<p>Pythonでは、複合文の<strong>ヘッダの行末のコロン「:」</strong>と<strong>スイートの各行の行頭のインデント（スペースまたはタブ）</strong>の記述が必須となります。また、同じ複合文内のインデント量は揃える必要があります。こういった記述ルールを守らないと実行時にエラーとなるわけですが、この厳格なルールがPythonの可読性を高める要因のひとつになっています。</p>



<h2><strong>繰り返しはfor文またはwhile文。</strong></h2>



<p><strong>繰り返し（Loop）</strong>は、同じ処理を自動的に複数回実行することをいい、<strong>for文</strong>または<strong>while文</strong>を用います。</p>



<p>for文は以下のフォーマットで記述し、リストやタプルなどのイテラブルオブジェクトから順に要素を取り出して変数に代入し、<strong>要素の数だけ処理を繰り返し実行</strong>します。ここでの「in」は前述のif文と同様のin演算子です。</p>



<pre class="wp-block-preformatted">for <em>変数</em> in <em>イテラブルオブジェクト</em>:<br><em>&nbsp; 処理</em></pre>



<p>while文は以下のフォーマットで記述し、<strong>条件式が真の場合に処理を繰り返し実行</strong>します。</p>



<pre class="wp-block-preformatted">while <em>条件式</em>:<br>  <em>条件式が真の場合の処理</em></pre>



<p>なお、for文もwhile文も複合文となるため、前述のヘッダとスイートの記述ルールを守る必要があります。サンプルコードは以下のとおりです。</p>



<script src="https://gist.github.com/crosshack/38672e62c0a26d1bde66e28e1ddd6eb1.js"></script>



<p>また、Python特有の記述方法に<strong>リスト内包表記</strong>があり、for文を以下のフォーマットで記述します。</p>



<pre class="wp-block-preformatted"><em>変数Y</em> = [ <em>処理</em> for <em>変数X</em> in <em>イテラブルオブジェクト</em> ]</pre>



<p>リスト内包表記でのfor文のサンプルコードは以下のとおりです。</p>



<script src="https://gist.github.com/crosshack/86c922eb8c4733267ab5ae1c8ca88248.js"></script>



<p>リスト内包表記を使うことで、for文で繰り返し処理をした出力をそのままリスト型の変数に代入することが可能となります。また、記述が非常にシンプルになるため、Pythonの可読性を高める要因のひとつになっています。</p>



<h2><strong>強力な拡張モジュール。</strong></h2>



<p>さて、ここまではPythonの基本機能の説明でしたが、Pythonには<strong>NumPy</strong>・<strong>Pandas</strong>・<strong>scikit-learn</strong>など数多くの<strong>強力なデータサイエンス向け拡張モジュール</strong>があり、それらの機能を利用することで生産性は飛躍的に向上します。</p>



<p>利用するには、モジュールの読み込みが必要で、以下のフォーマットで記述します。なお、モジュール名には任意の別名をつけることができます。また、モジュール内の特定のクラスのみをインポートすることも可能です。</p>



<pre class="wp-block-preformatted">import <em>モジュール名</em> as <em>別名</em><br>from <em>モジュール名</em> import <em>クラス名</em></pre>



<p>試しにNumPyとPandasを使ってみます。以下の例のように、NumPyは「np」、Pandasは「pd」という別名をつけることが一般的です。</p>



<script src="https://gist.github.com/crosshack/a3b7c1c0b3f71c5edb727d6b830378f9.js"></script>



<p>最後に、データサイエンスでよく利用する拡張モジュールをいくつかご紹介しておきます。いろいろなウェブサイトやGitHubでサンプルコードが提供されているので、それに倣えばある程度は実装できるかと思います。ただ、これまでに説明した基本機能をしっかりと把握していないと、細かいところで必ずつまづきます。何事も基礎が大切ということですね。</p>



<table>
<tr style="color: #fff; background-color: #000;">
<td style="width: 100px;">モジュール名</td>
<td style="width: 200px;">概要</td>
</tr>
<tr>
<td style="background-color: #eee;">NumPy</td>
<td style="text-align:left;"><ul>
  <li>数値計算用</li>
  <li>配列や行列の演算を高速に実行可能</li>
  <li>高速なC言語で実装</li>
</ul></td>
</tr>
<tr>
<td style="background-color: #eee;">Pandas</td>
<td style="text-align:left;"><ul>
  <li>データ解析用</li>
  <li>行列や時系列データの扱いに優れるデータフレームを提供</li>
  <li>速度が必要な部分はC言語などで実装</li>
</ul></td>
</tr>
<tr>
<td style="background-color: #eee;">scikit-learn</td>
<td style="text-align:left;"><ul>
  <li>機械学習用</li>
  <li>SVMやK平均法など回帰・分類に関するあらゆるアルゴリズムを提供</li>
  <li>いくつかのコアアルゴリズムは高速なCythonで実装</li>
</ul></td>
</tr>
<tr>
<td style="background-color: #eee;">matplotlib</td>
<td style="text-align:left;"><ul>
  <li>グラフ描画用</li>
  <li>散布図や箱ひげ図などあらゆるグラフを描画可能</li>
</ul></td>
</tr>
<tr>
<td style="background-color: #eee;">Seaborn</td>
<td style="text-align:left;"><ul>
  <li>グラフ描画用</li>
  <li>matplotlibをさらに拡張したモジュールで、より簡単に美しいグラフを描画可能</li>
</ul></td>
</tr>
</table>
]]></content:encoded>
										</item>
	<item>
		<title>ColabではじめるPython #03</title>
		<link>https://uxmeetsdata.com/colab-python-03/</link>
				<pubDate>Sat, 16 Feb 2019 06:52:24 +0000</pubDate>
		<dc:creator><![CDATA[Atsushi Sugawa]]></dc:creator>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Colab]]></category>
		<category><![CDATA[Data Science]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">https://uxmeetsdata.com/?p=1945</guid>
				<description><![CDATA[リストは配列。 Pythonには基本的なデータ構造として、リスト・タプル・辞書があります。他のプログラミング言...<p class="more-link"><a href="https://uxmeetsdata.com/colab-python-03/" class="themebutton3">Read More</a></p>]]></description>
								<content:encoded><![CDATA[<div class="wp-block-image"><figure class="aligncenter is-resized"><img src="https://uxmeetsdata.com/wp-content/uploads/2019/03/xmd_colab_python.png" alt="" class="wp-image-3468" width="480" height="240" srcset="https://uxmeetsdata.com/wp-content/uploads/2019/03/xmd_colab_python.png 640w, https://uxmeetsdata.com/wp-content/uploads/2019/03/xmd_colab_python-300x150.png 300w" sizes="(max-width: 480px) 100vw, 480px" /></figure></div>



<h2><strong>リストは配列。</strong></h2>



<p>Pythonには基本的なデータ構造として、<strong>リスト</strong>・<strong>タプル</strong>・<strong>辞書</strong>があります。他のプログラミング言語でいうと、リストとタプルは配列、辞書は連想配列にあたります。配列は、<strong>同じ型の複数の値（Value）を、添字（Key）と一つの変数により管理する仕組み</strong>のことで、<strong>添字が0から始まる連続する整数</strong>の場合を<strong>配列（Array）</strong>、<strong>添字が任意の数値や文字列</strong>の場合を<strong>連想配列（Associative Array）</strong>といいます。</p>



<p><strong>リスト（List）</strong>は、添字に0から始まる連続する整数をもつ配列です。以下の例の「list = [ 1, 3, 5, 7 ]」ように、<strong>括弧「[]」で括られた中にカンマ「,」区切りで値を指定し、変数に代入する</strong>ことで作成します。値は数値と文字列のいずれも許容されます。ちなみに「u&#8217;東京都&#8217;」のように、文字列の前に「u」とありますが、これはマルチバイト文字をユニコード指定する場合に用います。</p>



<script src="https://gist.github.com/crosshack/2caf4e27670910b64c7e21a204f252fe.js"></script>



<p>なお、添字は0からの連続する整数が自動で割り振られるため指定はしません。また、ほとんどのプログラム言語では、配列の添字は0から開始しますが、例外としてR言語の配列の添字は1から開始するため注意が必要です。</p>



<p>リストの中の値を参照するには「list[0]」のように<strong>変数[添字]</strong>の形で指定します。ここでは「list[0], list[1]&#8230;」のように列記していますが、添字が連続する整数であるという特性を活かして、for文やwhile文などの繰り返し文を使って自動化できます。こちらについては次回の記事で説明します。</p>



<p>また「list[1:3]」のように、連続する添字の一部をスライス（切り出し）することもできます。この場合は、添字の1から3の直前（つまり2）までを切り出すという意味になります。</p>



<h2><strong>タプルはイミュータブルな配列。</strong></h2>



<p><strong>タプル（Tuple）</strong>は、リストと同じく添字に0から始まる連続する整数をもつ配列です。以下の例の「tuple = ( 1, 3, 5, 7 )」ように、<strong>括弧「()」で括られた中にカンマ「,」区切りで値を指定し、変数に代入する</strong>ことで作成します。タプルの中の値を参照するには「tuple[0]」のように<strong>変数[添字]</strong>の形で指定します。また「tuple[1:3]」のように、連続する添字の一部をスライス（切り出し）することもできます。</p>



<script src="https://gist.github.com/crosshack/24df515b5215d01dc0d2e2552c8a0c5a.js"></script>



<p>これだけみると、リストとの違いはありませんが、タプルには以下のような特徴があります。</p>



<ul><li>要素が追加・削除・変更ができない。</li><li>要素をくくる括弧は「()」を使用する。</li><li>使用メモリがリストに比べて小さい。</li><li>多くの場合でリストよりタプルの方が早く演算できる。</li></ul>



<p>ちなみに、要素の追加・削除・変更ができないことを<strong>イミュータブル（Immutable）</strong>といい、プログラムを共同開発する際に、変数の値を勝手に変えられないようにしたい場合に有用です。対して、リストは要素の追加・変更・削除が可能であり、<strong>ミュータブル（Mutable）</strong>といいます。また、リストとタプルはlist()関数とtuple()関数を使って相互に変換できます。</p>



<h2><strong>辞書はキーバリュー型データベース。</strong></h2>



<p><strong>辞書（Dictionary）</strong>は、添字に任意の数値または文字列を指定する連想配列です。以下の例の「dict = { 13:u&#8217;東京都&#8217;, 27:u&#8217;大阪府&#8217;, &#8230; }」のように、<strong>括弧「{}」で括られた中にカンマ「,」区切りでコロン「:」をはさむ形で添字と値を指定し、変数に代入する</strong>ことで作成します。添字と値ともに数値と文字列のいずれも許容されます。辞書の中の値を参照するには「dict[0]、dict[u&#8217;東京都&#8217;]」のように<strong>変数[添字]</strong>の形で指定します。添字に任意の数値や文字列を利用できるため、キーバリュー型のデータベースのような使い方ができます。</p>



<script src="https://gist.github.com/crosshack/61410b380c078b3b50e0c82763685f28.js"></script>



<p>このように、リスト・タプル・辞書にはそれぞれの特徴があるため、それらを理解した上で、用途に合わせて使い分けていく必要があります。</p>



<p>次回は「ColabではじめるPython」最終回、<strong>条件分岐</strong>と<strong>繰り返し</strong>について簡単に触れていきます。</p>
]]></content:encoded>
										</item>
	<item>
		<title>ColabではじめるPython #02</title>
		<link>https://uxmeetsdata.com/colab-python-02/</link>
				<pubDate>Thu, 14 Feb 2019 07:51:10 +0000</pubDate>
		<dc:creator><![CDATA[Atsushi Sugawa]]></dc:creator>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Colab]]></category>
		<category><![CDATA[Data Science]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">https://uxmeetsdata.com/?p=1922</guid>
				<description><![CDATA[四則演算は算数と同じ。 簡単なPythonプログラミングをやってみます。まずはColabにアクセスしましょう。...<p class="more-link"><a href="https://uxmeetsdata.com/colab-python-02/" class="themebutton3">Read More</a></p>]]></description>
								<content:encoded><![CDATA[<div class="wp-block-image"><figure class="aligncenter is-resized"><img src="https://uxmeetsdata.com/wp-content/uploads/2019/03/xmd_colab_python.png" alt="" class="wp-image-3468" width="480" height="242"/></figure></div>



<h2><strong>四則演算は算数と同じ。</strong></h2>



<p>簡単なPythonプログラミングをやってみます。まずはColabにアクセスしましょう。なお、Colabの使い方は「<a href="https://uxmeetsdata.com/colab-python-01/">ColabではじめるPython #01</a>」を参照してください。ログインして、メインメニューの［ファイル］から［Python 3 の新しいノートブック］を選びます。</p>



<p>以下のように、加算・減算などの<strong>四則演算</strong>ができることがわかります。「+, -」などを<strong>代数演算子</strong>といいます。なお、除算は「/」を使いますが、小数点以下を切り捨てたい場合は「//」、剰余（あまり）を出したい場合は「%」を使います。</p>



<script src="https://gist.github.com/crosshack/77c1230151ab0b1ac4a4592f8d823ed5.js"></script>



<p>四則演算の計算の優先順位を確認しておきます。といいつつ、算数と同じです。加算・減算よりも乗算・除算が優先され、下記の「四則演算の優先順位１」のような計算結果になります。また、括弧でくくられた部分が優先され、下記の「四則演算の優先順位２」のような計算結果になります。</p>



<script src="https://gist.github.com/crosshack/26eef041f6f51b0364e7b4e7f5e37336.js"></script>



<h2><strong>変数と関数。</strong></h2>



<p>これまでの四則演算で記述していた「10」や「3」などは<strong>静的（Static）</strong>な値であり、これを<strong>定数（constant）</strong>といます。一方で、プログラミングでは<strong>動的（Dynamic）</strong>な値を計算することができ、その値を<strong>変数（Variable）</strong>といいます。</p>



<p>以下の例でいうと、xやyが変数です。また「x = 10、x = &#8216;Hello, &#8216;」のように変数に値を入れることを<strong>代入</strong>といい、「=」を<strong>代入演算子</strong>といいます。変数に数値を代入して加算すると数値を加算した結果が、変数に文字列を代入して加算すると文字列を連結した結果が、それぞれ得られます。</p>



<script src="https://gist.github.com/crosshack/2d45171f931f17e8421237558863cdc9.js"></script>



<p>ちなみに print (<em>X</em>)は、入力値<em>X</em>の内容を出力するという<strong>関数</strong>です。関数とは、<strong>与えられた入力値で固有の処理を行い、その結果の出力値を返すプログラム</strong>のことです。与えられた入力値を<strong>引数</strong>、返された出力値を<strong>戻り値</strong>といいます。この場合の引数は「x + y」で、戻り値は「13」や「Hello, World!」です。また、print()関数のようにあらかじめ用意されているものもありますが、自分で任意に作ることもできます。あらかじめ用意された関数を集めたものを<strong>関数ライブラリ</strong>といいます。</p>



<h2><strong>オブジェクトとクラス。</strong></h2>



<p>Pythonはオブジェクト指向のプログラミング言語です。<strong>オブジェクト指向プログラミング</strong>は、プログラムを<strong>処理手順</strong>＝<strong>手続き（Procedure）</strong>ではなく、<strong>モノ</strong>＝<strong>オブジェクト（Object）</strong>とみなし、それぞれのオブジェクトに役割をもたせて分業するスタイルのプログラミング手法です。一方で、処理手順をもとにしたプログラミング手法を<strong>手続き型プログラミング</strong>といいます。</p>



<p>オブジェクトは、変数と関数から構成されます。クルマでたとえると、「エンジン・ハンドル・タイヤ」などが変数で、「エンジンを起動する・ハンドルの操作に合わせてタイヤを動かす」などが関数にあたります。</p>



<p>また、同じクルマを量産するためには設計図が必要ですが、オブジェクト指向プログラミングではその設計図を<strong>クラス（Class）</strong>といいます。そのクラスをもとに生成された各オブジェクトを<strong>インスタンス（Instance）</strong>といいます。また、クラスで定義された関数を<strong>メソッド（Method）</strong>といいます。</p>



<p>これらの概念や言葉はピンとこないかもしれません。また「Colab ではじめるPython」では深くは扱いません。しかしながら、Pythonプログラミングを進める上では必須のものになりますので、頭の片隅に入れておいてもらえればと思います。</p>



<p>次回は、<strong>リスト・タプル・辞書</strong>というデータ構造の概念について簡単に触れていきます。</p>
]]></content:encoded>
										</item>
	<item>
		<title>ColabではじめるPython #01</title>
		<link>https://uxmeetsdata.com/colab-python-01/</link>
				<pubDate>Wed, 13 Feb 2019 14:25:27 +0000</pubDate>
		<dc:creator><![CDATA[Atsushi Sugawa]]></dc:creator>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Colab]]></category>
		<category><![CDATA[Data Science]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">https://uxmeetsdata.com/?p=1815</guid>
				<description><![CDATA[インストールなしで、そのまま。 Pythonでデータサイエンスに入門したいけど敷居が高い、そう感じている方も多...<p class="more-link"><a href="https://uxmeetsdata.com/colab-python-01/" class="themebutton3">Read More</a></p>]]></description>
								<content:encoded><![CDATA[<div class="wp-block-image"><figure class="aligncenter is-resized"><img src="https://uxmeetsdata.com/wp-content/uploads/2019/03/xmd_colab_python.png" alt="" class="wp-image-3468" width="480" height="242"/></figure></div>



<h2><strong>インストールなしで、そのまま。</strong></h2>



<p>Pythonでデータサイエンスに入門したいけど敷居が高い、そう感じている方も多いと思います。実は、<strong>Pythonは他のプログラミング言語と比べて学習コストが低い</strong>と言われています。文法がシンプルで、汎用性と可読性が高いことがその理由です。また、C/C++のような変数宣言やコンパイルも必要ありません。実際に使えばわかります。</p>



<p>とはいえ最初に立ちはだかる壁は環境準備です。本格的なプログラム開発を行う場合はPyCharmなどの<strong>統合開発環境（Integrated Development Environment：IDE）</strong>が便利ですが、手軽ではありません。Jupyter Notebookは<strong>ブラウザUIの対話式プログラム実行環境</strong>で、手軽に扱えるもののインストールが面倒です。Google Cloud Datalabは<strong>Jupyter NotebookベースのPython実行環境のクラウドサービス</strong>で、インストールなしで使うことができますが、利用料がかかるためトレーニングには向いていません。</p>



<p>そこでおすすめしたいのが <strong>Google Colab</strong>です。Google Colabは、Jupyter NotebookベースのフルマネージドなPython実行環境で、Googleが<strong>機械学習の教育や研究のために無償提供</strong>しているものです。利用するには、Google ColabのURLにアクセスし、<strong>Googleアカウントでログインする</strong>だけです。Googleアカウントをすでにお持ちであれば、すぐに始められます。</p>



<h2><strong>まずはお約束の「Hello, World!」</strong></h2>



<p>では、さっそくGoogle ColabでPythonをはじめてみましょう。<a href="https://colab.research.google.com/notebooks/welcome.ipynb">Google Colab</a>にアクセスしてみてください。検索エンジンで「Google Colab」と検索してもらっても結構です。すると、以下の画面が表示されるので、あとはご自身のGoogleアカウントでログインするだけです。</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img src="http://uxmeetsdata.com/wp-content/uploads/2019/03/xmd_colab_1a.jpg" alt="" class="wp-image-3469" width="560" height="313"/></figure></div>



<p>ログインできたら、メインメニューの［ファイル］から［Python 3 の新しいノートブック］を選びます。表示される画面に、以下のような入力エリアがあるかと思います。ここにソースコードを記述して左端の［▶︎］ボタンをクリックするか、Macであれば［⌘+Enter］キー、Windowであれば［Ctrl+Enter］キーでプログラムを実行できます。</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img src="http://uxmeetsdata.com/wp-content/uploads/2019/03/xmd_colab_1b-1024x86.jpg" alt="" class="wp-image-3470" width="560" height="34"/></figure></div>



<p>ひとまず、お約束の「Hello, World!」を表示するプログラムを書いてみましょう。入力エリアに「print (&#8216;Hello, World!&#8217;)」と記述し、実行してみてください。以下のように「Hello, World!」が出力エリアに表示されるかと思います。</p>



<script src="https://gist.github.com/crosshack/1834293071d82fc3df64f285d474b5a6.js"></script>



<p>続けて、簡単な計算をしてみましょう。入力エリアに「1 + 1」と記述し、実行してみてください。以下のように「2」が出力エリアに表示されるかと思います。こんな具合に、とても手軽にPythonプログラミングを楽しむことができるわけです。</p>



<script src="https://gist.github.com/crosshack/43a7d6fc070ec4f4feddaf8fc3fc6f4b.js"></script>



<h2><strong>あくまでトレーニング用。</strong></h2>



<p>Pythonプログラミングの実践については次回以降にするとして、この記事の最後にGoogle Colabの特長と制約をまとめておきます。まず特長は以下のとおりです。</p>



<ul><li>インストール不要で、無料で利用可能。</li><li>ブラウザUIの対話式プログラム実行環境で非常に手軽。</li><li>クラウドの高性能なCPU・GPU・TPUを利用可能。</li><li>メジャーな機械学習系ライブラリがインストール済み。</li><li>GitHubおよびGistとの連携が簡単。</li></ul>



<p>一方で、いくつかの制約事項や欠点があります。あくまで教育・研究用の無償サービスであると考えたほうがよいでしょう。</p>



<ul><li>プログラム実行やデータ保存がパブリック領域でなされるため、秘匿性の高いデータを扱うことができない。</li><li>ノートブックのセッション切れが90分続くとインスタンスがシャットダウンされる。また、新しいインスタンスを起動してから12時間経過するとインスタンスがシャットダウンされる。</li><li>機械学習向け以外のライブラリが少ない。（ただし、追加インストールは可能）</li></ul>



<p>では次回以降で、Pythonプログラミングの実践に踏み込んで行きたいと思います。</p>
]]></content:encoded>
										</item>
	<item>
		<title>Forecast Flow ハンズオン報告</title>
		<link>https://uxmeetsdata.com/forecast-flow-event-20190125/</link>
				<pubDate>Sun, 27 Jan 2019 23:00:30 +0000</pubDate>
		<dc:creator><![CDATA[Atsushi Sugawa]]></dc:creator>
		<category><![CDATA[Topics]]></category>
		<category><![CDATA[Report]]></category>
		<category><![CDATA[Colab]]></category>
		<category><![CDATA[Machine Learning]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">https://uxmeetsdata.com/?p=268</guid>
				<description><![CDATA[特徴量エンジニアリングのしやすさ。 1月25日に開催された、株式会社GRI主催の「顧客行動を理解するための機械...<p class="more-link"><a href="https://uxmeetsdata.com/forecast-flow-event-20190125/" class="themebutton3">Read More</a></p>]]></description>
								<content:encoded><![CDATA[<h2><strong>特徴量エンジニアリングのしやすさ。</strong></h2>



<p>1月25日に開催された、<a rel="noreferrer noopener" aria-label="株式会社GRI (新しいタブで開く)" href="http://gri.jp" target="_blank">株式会社GRI</a>主催の「<a rel="noreferrer noopener" aria-label="顧客行動を理解するための機械学習 “Forecast Flow”ハンズオン・セミナー (新しいタブで開く)" href="http://gri.jp/news/11413" target="_blank">顧客行動を理解するための機械学習 “Forecast Flow”ハンズオン・セミナー</a>」に参加してきたのでレポートします。</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img src="https://uxmeetsdata.com/wp-content/uploads/2019/04/xmd_ff_a-e1555128472475-1024x512.jpg" alt="" class="wp-image-6152" width="480" height="241" srcset="https://uxmeetsdata.com/wp-content/uploads/2019/04/xmd_ff_a-e1555128472475-1024x512.jpg 1024w, https://uxmeetsdata.com/wp-content/uploads/2019/04/xmd_ff_a-e1555128472475-300x150.jpg 300w, https://uxmeetsdata.com/wp-content/uploads/2019/04/xmd_ff_a-e1555128472475-768x384.jpg 768w" sizes="(max-width: 480px) 100vw, 480px" /><figcaption>出典：GRI</figcaption></figure></div>



<p>Forecast FlowはGRIが開発した機械学習エンジンで、<strong>ノンプログラミングで予測モデルの導出ができる</strong>点と、導出した予測モデルの解釈に役立つ情報を可視化することで、<strong>変数選択や予測モデルの説明をサポートしている</strong>点が特長です。</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img src="https://uxmeetsdata.com/wp-content/uploads/2019/04/xmd_ff_b.jpg" alt="" class="wp-image-6153" width="480" height="179" srcset="https://uxmeetsdata.com/wp-content/uploads/2019/04/xmd_ff_b.jpg 790w, https://uxmeetsdata.com/wp-content/uploads/2019/04/xmd_ff_b-300x111.jpg 300w, https://uxmeetsdata.com/wp-content/uploads/2019/04/xmd_ff_b-768x285.jpg 768w" sizes="(max-width: 480px) 100vw, 480px" /><figcaption>出典：GRI</figcaption></figure></div>



<p>「<a href="https://uxmeetsdata.com/ux-modeling/">UXモデリングって？</a>」でも触れたように、ビッグデータによる機械学習には、変数選択と導出された予測モデルの説明の難しさに課題があります。それをTableauによる可視化でモデル解釈と変数選択を支援し、いわゆる<strong>特徴量エンジニアリング</strong>をやりやすくすることで、少ない変数による高精度な予測モデルを見つけ出すことに主眼を置いているようです。</p>



<p>とはいえ変数選択については、たとえば「直近3ヶ月の購買金額」のような、新しい変数の生成が必要な場合は、つどPythonなりSQLなりでデータ処理しなければならず、すべてのプロセスをノンプログラミングでできるわけではありません。</p>



<p>機械学習のアルゴリズムについては「Kaggleランカーにおなじみのアルゴリズムをベースに最適化」とだけ資料に記載されているので、詳細は不明。またその予測精度についても、後述するハンズオンでもシナリオどおりに追体験しただけなので、実際に使い込んでみないとわかりません。機会があれば使ってみて、結果をレポートしようと思います。</p>



<h2><strong>Google Colabでハンズオン。</strong></h2>



<p>セミナーの後半はForecast Flowのハンズオンだったのですが、面白かったのは<strong>Google Colab</strong><sup id="footnote_plugin_tooltip_1" class="footnote_plugin_tooltip_text" onclick="footnote_moveToAnchor('footnote_plugin_reference_1');">1)</sup><span class="footnote_tooltip" id="footnote_plugin_tooltip_text_1"><a href="https://uxmeetsdata.com/colab-python-01/">ColabではじめるPython</a></span><script type="text/javascript">	jQuery("#footnote_plugin_tooltip_1").tooltip({		tip: "#footnote_plugin_tooltip_text_1",		tipClass: "footnote_tooltip",		effect: "fade",		fadeOutSpeed: 100,		predelay: 400,		position: "top right",		relative: true,		offset: [10, 10]	});</script>をベースに実施されたことです。Google Colabは、Jupyter Notebookベースのフルマネージドなクラウド型のPython実行環境で、Googleが<strong>機械学習の教育や研究のために無償提供</strong>しているものです。</p>



<p>Googleが提供するクラウド型のPython実行環境といえば、Cloud Datalabがあります。こちらもJupyter Notebookベースですが、実行するにはCompute Engineのインスタンスが必要で費用がかかります。一方、Google Colabは無償で利用できます。ただしパブリック領域でプログラム実行やデータ保存がなされるため、秘匿性の高いデータを扱うことはできません。あくまで教育や研究のためのものと考えたほうがよさそうです。</p>



<p>同じく無償かつパブリック領域にデータ保存される<strong>Tableau Public</strong><sup id="footnote_plugin_tooltip_2" class="footnote_plugin_tooltip_text" onclick="footnote_moveToAnchor('footnote_plugin_reference_2');">2)</sup><span class="footnote_tooltip" id="footnote_plugin_tooltip_text_2"><a href="https://uxmeetsdata.com/tableau-bi-01/">TableauではじめるBI</a></span><script type="text/javascript">	jQuery("#footnote_plugin_tooltip_2").tooltip({		tip: "#footnote_plugin_tooltip_text_2",		tipClass: "footnote_tooltip",		effect: "fade",		fadeOutSpeed: 100,		predelay: 400,		position: "top right",		relative: true,		offset: [10, 10]	});</script>と組み合わせれば、<strong>Google Colabで分析してTableau Publicで可視化する</strong>という流れを無償で構築できることになります。セミナーやトレーニングで使えそうですね。</p>



<p>Google ColabとTableau Publicの組み合わせについても、機会があれば試してみて、結果をレポートしたいと思います。</p>



<p>最後に、セミナー資料が公開されているのでこちらにシェアしておきます。</p>



<figure class="wp-block-embed-slideshare wp-block-embed is-type-rich is-provider-slideshare wp-embed-aspect-1-1 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe src="https://www.slideshare.net/slideshow/embed_code/key/1FvPYqkV18IaCM" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe>
</div></figure>
]]></content:encoded>
										</item>
	</channel>
</rss>
