機械学習と旅行と私

機械学習、旅行、語学と雑記(GCI講座参考)

Pythonの基礎2

Pythonのif文、for文、while文

今日も引き続きpythonの基礎を学習していきたいと思います。

 

前回の前提も使いますので、こちらも参照してください。

 

machinetraveler.hatenablog.com

 

 

今日も手を動かして勉強してください。以下の本を参考にしています。より詳しく学びたい方は参考にしてください。

 

 

 

初めてのPython 第3版

初めてのPython 第3版

 

 

入門 Python 3

入門 Python 3

 

 

 

もしも上の参考書が難しいと感じるようであれば、以下の参考書がおすすめです。まだ一度もプログラミングをやったことのない方や以下の説明が難しいと感じる方にはおすすめです。

 

Pythonスタートブック

Pythonスタートブック

 

 

 

では早速、本題の条件分岐に入っていきましょう。

if文

ifの横にある条件式を満たしている場合(true)に、該当の文(はじめにある:からelse:の手前まで)を実行し、そうでない場合はelse:以下を実行します。以下の処理は、数字の5がリストの中に入っているかどうかを判定しています。入ってなければ、elseに飛びます。また、Pythonのコーディングにおける注意点ですが、if文などを使うとき、次の行は半角スペース4つ分をおいてコードを始める必要があります。このJupyter上では、改行をしたときに自動で空白ができますが、開発環境によっては注意しましょう。

f:id:machinetraveler:20170608230756p:plain

 

<補足説明>「print(" %d は入っています。" %(sample_int))」では、変数(sample_int)を文字列の中に表示させるために、%dと%(sample_int)を使っています。%d は整数、%s は文字列、%f は浮動小数点数の場合に設定します。文字列フォーマットといい、「print("{0} は入っていません。".format(sample_int))」のようにして表示することも可能です(変数を複数設定することもできます)。

 

for文

次は、繰り返し文のforです。先ほど作成した辞書型のデータを1つ1つ取り出して、それぞれのキーと値を出力しています。

f:id:machinetraveler:20170608231254p:plain

 

 

なお、以下のような方法でキーと値を取り出すこともできます。これは、あとで説明するオブジェクト指向型プログラミングの特徴で、データ(ここではsample_dic_data)とそれを処理するためのメソッド(以下のitems())がセットになっており、それを活用しています。メソッドとはあとで説明する関数みたいなもので、それを使って処理(ここでは、キーと値を返す)をします。

f:id:machinetraveler:20170608231632p:plain

 

次もfor文を使っています。前回紹介したリストの要素をそれぞれ2倍する処理です。内包表記と言います。

f:id:machinetraveler:20170608232013p:plain

さらにこれに条件を設定して作成することもできます。例えば偶数の数だけsample_data_listから取り出したい場合は、以下のようにします。「if i %2 ==0」を後につけており、i%2は、iを2で割ったあまりを意味しています。

f:id:machinetraveler:20170608232310p:plain

なお、連続した整数を作る時にはrange()との併用が便利です。

f:id:machinetraveler:20170608232457p:plain

 

while文

次の処理は、条件を満たしている限り、計算を続けるwhile文です。数字が90より大きくなった時点で、処理は終わります。

 

f:id:machinetraveler:20170608233150p:plainおそらくここの説明だけでは不十分だと思うので、以下の本を参照してください。

入門 Python 3

Pythonチュートリアル 第3版

 

 

Pythonの関数とクラス

関数

defを使って、関数を作成しています。関数を作成すると、同じような処理を実行したいときに、便利です。1つ目のcalc_multi関数は、2つの数字を引数として、その掛け算を返しています。この引数がinput dataとなって、returnで結果を返し(返り値といいます)、これがoutput dataになります。

その次の関数calc_fibは、再帰と言って、自分の関数を中で呼び出しており、フィボナッチ数(1,1,2,3,5...と前と前々の数字を足して、その数を並べたもの)を作成しています。

なお、コードが長くなって行数をつけたい場合には、該当をセルを選択し、escキーを押した後に「l(エル)」キーを押すと、行数が表示されます。

f:id:machinetraveler:20170608234236p:plain

 

クラス

最後にクラスです。先ほど少し出てきましたが、Pythonオブジェクト指向型のプログラミング言語で、クラスはオブジェクトのひな型みたいなものです。初めて聞いた方は、すぐに理解するのは難しいと思いますので、実際に以下の実装例を見て、雰囲気だけつかんでください。直近はすぐに必要はありませんが、今後、機械学習のライブラリーsklearnなどを使う時に必要な概念(インスタンスなど)です。よく例えられる例が「たい焼き」で、以下のclassのPrintClassはたい焼き機の型で、実際のたい焼きが出来上がったのがインスタンスp1というイメージです。インスタンスとは、クラスからできあがる実体です。

f:id:machinetraveler:20170608235302p:plain

 

このオブジェクト指向とクラスの概念は少し難しいので、もう少し具体的な例を見てみましょう。以下はMyCalcClassを作成しており、3つのメソッドを持っています。

 

f:id:machinetraveler:20170608235449p:plain

 

次に、このクラス(MyCalcClass)からインスタンスを生成します。なお、instance_1とinstance_2は別物として扱われます。

f:id:machinetraveler:20170608235913p:plain

 

instance_1からです。

f:id:machinetraveler:20170609000315p:plain

 

これで、クラスとオブジェクトの説明は終わりますが、以下の参考文献等を見て、まずはイメージだけでも掴めるようになりましょう。

 

Pythonチュートリアル 第3版

Pythonチュートリアル 第3版

 

 

 

入門 Python 3

入門 Python 3

 

 

今日はこれで終わります。頑張っていきましょう。

 

Pythonの基礎1

今日から本格的にPythonを学習していきます。今日も手を動かして勉強してください。これから紹介するPythonの基本的な学習は、以下の本を参考にしています。より詳しく学びたい方は参考にしてください。

 

 

 

初めてのPython 第3版

初めてのPython 第3版

 

 

入門 Python 3

入門 Python 3

 

 

 

もしも上の参考書が難しいと感じるようであれば、以下の参考書がおすすめです。まだ一度もプログラミングをやったことのない方や以下の説明が難しいと感じる方にはおすすめです。

 

Pythonスタートブック

Pythonスタートブック

 

 

Pyrthonの文字列

変数に文字列を代入してprintで変数の値を表示させています。なお、一般的なCやJavaといったプログラミング言語では、変数を扱う際には型を指定する必要がありますが、Pythonはその必要がないためコードがより簡単になります。

f:id:machinetraveler:20170605225536p:plain

 

 

変数に数字を代入

f:id:machinetraveler:20170605225651p:plain

 

 

なお、何か変数を作成するときは、可能な限り変数名は考えて作成しましょう。ただ、単なる数字のチェック等をするのみであれば a = などでも良いです。

大規模な開発になってくるほど変数名は大事です。もちろん、第3者のためにという意味でメリットになりますが、将来の自分のためにもなります。変数を書いた直後はどんな変数を代入したのか覚えていますが、1週間、1ヶ月後そのxを見たときに、どうでしょうか。何の数字だったのか忘れてしまうことは多々あります。さらにコードが長くなってくると、変数も増えてきて、わからなくなります。

コーディングについては、絶対的なルールはないですが、ある程度は規定されているので、ぜひ以下のサイトなど見て参考にしてください。

http://pep8-ja.readthedocs.io/ja/latest/

 

 

リスト

f:id:machinetraveler:20170605230442p:plain

なお、リストにあるそれぞれの要素を2倍したい場合、2をかけても、リスト自体が2倍になるだけです。それぞれの要素を2倍したければ、for文を書くか後で説明するnumpyを使います。

f:id:machinetraveler:20170605231002p:plain

 

 

辞書型

辞書型を使うことで、キーと値をペアにして複数の要素を管理することができます。キーは整数だけでなく、文字で設定可能です。また、配列のように順番は関係ありません。

f:id:machinetraveler:20170605231359p:plain

 

 

今日のところは、この辺で。

明日は、条件分岐を扱いたいと思います。

これからミーティングだ。あー、忙しい、忙しい。

Pythonの基礎のキとJupyterの使い方

Pythonの基礎

今日から実際に手を動かしてコードを書いていきましょう。使う言語はお分かりの通りPythonです。なぜPythonかというとPythonは他の言語よりも簡単にコーディングができるからです。プログラミングの経験がない人でも比較的扱いやすいのです。

 

 

プログラミング言語の学習でよく見かける「Hello, world!」の表示も以下のコードで、十分です。

f:id:machinetraveler:20170605232312p:plain

 

 

Shift+return(enter)で実行し結果を表示できます。上の「▶︎|」をクリックしても実行できます。

f:id:machinetraveler:20170604203730p:plain

こんな感じになっていれば、大丈夫です。

 

 

 

次に簡単な演算をしていきましょう。

以下は演算例です。printを使って出力していますが、printなしでも電卓みたいに使えます。また、#はコメントアウトで、それ以降は無視されます。分かりやすいコードを書くため、後々のためにコメントを残すことも大切です。

f:id:machinetraveler:20170604204550p:plain

 

 

 

ここで一度Jupyterの使い方についてまとめたいと思います。

Jupyterの基礎

画面の左上にある+をクリックすると、セルを追加できます。またセルを削除したい場合は、ハサミのマークをクリックすることで、セルの位置を変えたい場合は、上下の矢印をクリックすることで可能です。さらにコードを書くときはデフォルトで「Code」になっていますが、「Markdown」を選択すれば文章等を記述することが可能です。

f:id:machinetraveler:20170604205636p:plain

 

 

 

ショートカットキーを使うことでより作業効率を高めることが可能です。ショートカットキーは。escボタンを押し編集モードでない状態でnを押すと以下のような画面が表示されます。

f:id:machinetraveler:20170604210137p:plain

 

慣れるまでは時間がかかりますが、慣れれば作業効率が大幅に上がるので、是非使いこなしてください。まずは、「b」を押して新しいセルを追加することと「Shift+return」で出力をすることを覚えれば大丈夫です。

 

 

以下、参考になるサイトです。詳しく知りたい方は参考にして見るといいと思います。

 

http:// http://pythondatascience.plavox.info/pythonの開発環境/jupyter-notebookを使ってみよう/

 

 

今日はこの辺で終わりにします。

 

 

データ分析、機械学習

データ分析、機械学習について

 

データサイエンティストとは

で最近、データ分析やデータサイエンティスト、AI、機械学習等に注目が集まっていkます。データサイエンティストとはそもそも何でしょうか。一言で言い表すと、データサイエンティストとはビジネスの課題に対して、統計や機械学習(数学)とプログラミングのスキルを用いて解決方法を見出していく人でしょう。

 

f:id:machinetraveler:20170603223708j:plain

 

 

このデータサイエンティストは、数学や統計ができる人と思われがちですが、それを実行する力(プログラミングスキル)やマーケティングの能力も必要です。ここの一つが欠けてもデータサイエンティストではありません。ただ、これらのスキルが全てエキスパートという人はほとんどいません。従って、それぞれの強みを持っている人たちがグループで問題を解決することが多々あります。詳しいことは様々なデータサイエンティストに関する本を読んでいただければと思います。

 

データ分析の流れ

 

データ分析の流れを簡単に見ていきたいと思います。データ分析では、該当ビジネスの理解、データの理解、データの加工、処理、モデリング、検証、運用、の流れを作ることが大事になります。特に、大事なのが、ビジネス理解です。目的を明確にしてください。ここではマーケティングの能力やコンサルタントとしての力が重要になっていきます。

 

 

これから学んでいくことは主に機械学習ですが、それを最大限活用するためには、マーケティングコンサルタントとしての能力も大事であることは心に留めといてください。

 

 

f:id:machinetraveler:20170603225116p:plain

 

 

あ、待ち合わせがあるんだった!ということで、今日はこの辺でー

あー、忙しい、忙しい。

 

 

 

 

 

 

 

 

機械学習始めました。

機械学習の学習スタート!

 

早速、機械学習の勉強始めました。

 

 このブログは学習のノートです。参考になるところも多いと思いますし、かなりまとまっていると思うので、というかかなりまとめるので、参考にしていただけたら幸いです。

 

 

とは言ったものの、機械学習の学習を始める前提について、少々。

・パソコンで勉強します。

・手を動かして、実際にコードを書いて計算等を実行しましょう。(これ一番大事)

・分からなければ、ググりましょう。大抵のことはネット上に書いてあります。それでも分からない場合は、質問サイト等を利用するのも良いでしょう。

・諦めたら試合終了です。

f:id:machinetraveler:20170602211655j:plain

 

 

 

では、勉強に入りましょう!!

 

 

 

まずは、学習のための環境です。学習に利用するのは、基本的にPythonです。SQLも少々利用します。(PythonSQLというのはプログラミング言語の名前です。)

 

Pythonの環境構築の方法は多々あると思うので、ご自身で可能な方はその方法が良いと思います。ですが、一応環境の一例を上げておきます。

 

Jupyter Notebookを僕は利用しています。Jupyter Notebookとは、コードを書き、その結果を表示しながらデータ分析を行っていくデータ分析作業用のツールです。(詳しいことはネット上にあるのでそちらを参照してください。)

 

f:id:machinetraveler:20170602211228p:plain

 

 

Jupyter Notebookの起動の方法ですが、Anacondaというアプリをインストールすると、Jupyter NotebookとPythonが同時にインストールされます。

 

 

Anacondaのダウンロードはここから↓

Download Anaconda Now! | Continuum

 

その後の起動の仕方については分かりやすいサイトを見つけたので、ここを参照してください。↓

Jupyter Notebook を使ってみよう – Python でデータサイエンス

 

 

本題に入りたかったのですが、僕は忙しいので、今日はこの辺で。

 

あー、忙しい。忙しい。

 

 

夏だな〜

空が夏です!

 

朝晩はまだヒンヤリしますが、日中は夏ですね。

 

というわけで勉強ばかりやっていると、人生損してる感じがひどいので、今日は自転車で突っ走ってきました。

 

天気が良くて最高でした。特に何もなくともふらーっと自転車に乗って何処かにいくのは最高ですね。とはいうものの数時間で帰宅したので特にめぼしいものもなく、軽いリフレッシュ程度でしたね。

 

何も考えずに走っていると路面電車のを見つけたので、とりあえずパシャり!

 

f:id:machinetraveler:20170603230937j:plain

 

 

都電荒川線です。最近の都電はだいぶモダンになりましたね。なんかヨーロッパの路面電車みたいでかっこいいです。それにしても空が綺麗!

 

 

最近は都電をもう一度みたいな話もあるそうで、僕個人としては賛成です。電車が単位好きなのもありますが、笑。他には、都電の方がバスよりも時間は正確だろうし、地下鉄よりも乗り降りは楽ですよね〜。都営大江戸線なんてホームが深すぎて、駅の入り口からどんだけ降るんじゃーって、そろ地獄かななんて。そんなとこにいくのは僕だけですね、

 

 

ブダペストに旅行に行ったのですが、路面電車が何路線も走っていて、路面電車は24時間動いていたので、とても便利でした。都心の交通渋滞の緩和や二酸化炭素排出量の削減とかいうメリットもあるみたいだし。

 

 

 

とか言いつつ、自転車が公道をもっと走りやすくすれば、費用を抑えて、その両方を実現で来るんじゃないかなとも思います。(だって、この前都電と競争したけど圧勝だったし。)

 

 

 

自転車は、一応法律上は、車道を走ることになっていますが、車からしたら邪魔だろうし、自転車からしたら怖くて無理です。しかも歩道の端の植木が車道に飛び出していて、体に刺さるようなことも多々あるし、ロードバイクのようなスタンドのついていない自転車を停めるための場所もないので日本の自転車の立場はまだまだ弱いです。

 

 

とか何とか。

あ、映画見る時間だ。今日はこの辺で。

あー、忙しい、忙しい。

 

ブログ始めまーす。

ブログ始めまーす。

f:id:machinetraveler:20170606131802j:plain

 

<自己紹介>

このブログの書き手、機械トラベラーです。勘が鋭い方、分かっちゃいました〜?

 

 

機械学習と旅行を酸素にしていきています。僕にとっての水は旅行です。食料も水です。だったら、旅行のblog書けよ!というツッコミが聞こえてきそうですが、大学に通っているので、普段は機械学習について書いてます。

 

 

現在大学3年生で経済学部にいます。工学部だと思った方、残念でしたー。経済とかまぢむり。。。 今は、本を読んだり、パソコンをいじったり、たまに大学に行ったりして(単位を犠牲に)悠々自適な生活を送っています。趣味は海外旅行、自転車、野球など、なんか動いてることが好きです。

 

 

このブログには、最近興味を持っている機械学習の勉強 200g、趣味の旅行 2t、海外旅行で興味を持った語学学習を少々、あと小さじ一杯の雑記を書きたいのですが、99.9999999%機械学習について書いていくことになりそうです。日本の鉄鋼の精度並です。 

今日のところはこの辺で。

あー、バンコク行きたい。