現代ではAIや機械学習といった技術に注目が集まっています。
なかには機械学習を勉強してみたけど、ムズかしく諦めた経験がある方もいるかと思います。
この記事では機械学習のスキルを身につける上で、最初に学ぶ必要がある「NumPy」について説明します。
以下に当てはまる項目がある方は是非参考にして、機械学習を学んでください。
・Pythonの強みを知りたい
・機械学習を勉強したいけどなにからしたらよいかわからない
・NumPyって何ができるの?
・NumPyの使い方を知りたい
最初にNumPyとは何ができるものなのか説明した後、必要な環境について解説します。
すでにご存知の方は飛ばして読んでください。
次に実際にコードを交えてどういったことができるのか紹介します。
紹介する内容は計算方法、配列の作り方、配列の変形があります。
「NumPy」の関数全てを紹介することはできませんが、この記事で紹介した関数さえ知っていれば、都度調べると対応できるくらいの基本は習得することができます。
最後にぼくがどのように機械学習を学んだのか紹介します。
ぼくの知る限り、もっとも安く、かつ効率的に学ぶことができたので参考にしてみてください。
機械学習ってどういうものかは『意外と知らない機械学習の基礎知識・種類|データサイエンティストのスキルを身につける』を参考にしてください。
NumPyって?
「ナムパイ」と呼ばれています。
大量のデータ(多次元配列、行列)の演算など高性能な操作が可能なツールです。
簡単にいうと、ムズかしい大量のデータの計算を一瞬でやってくれる便利なものです!
公式ページはこちらです。
機械学習では大量のデータを効率的に処理する必要があり、「NumPy」の利用は必須です。
具体的な利用方法、使い方については後ほど説明します。
必要環境の準備
「NumPy」はPythonで使用します。
Pythonには2系と3系の2種類が存在します。
「NumPy」を使用するにはPython3系が必要です。
Python3.○.○を取得してください。
anacondaでPythonをインストールした場合はデフォルトで入っています。
pipをインストールしていれば、以下のコマンドでインストール可能です。
$ pip install numpy
まずはnumpyをインストールしてください。
【コード含む】関数紹介 – 理解が進む –
ここでは関数を使用して、どういったことができるのか具体的に紹介していきます。
pyファイル、コマンドライン、Jupyter Notebookより実際に実行しながら読み進めてみてください。
値を変えたり、データ構造を変えたりしながら進めるとより理解が深まると思います。
上から順番に実行していった場合のコードになっています。
import numpy as np
これで「NumPy」のモジュールを読み込み使用できる状態にします。
ここでエラーがでる場合はインストールできていないので、再度インストールしてください。as np
の部分は毎回 numpy
と入力するのが手間になる場合に、好きな名前をつけることができます。np
は好きな名前をつけてください。
まず以下を実行して簡単な配列を作ってみましょう。
a = np.array([1, 2, 3])
[1 2 3]
という配列を作成して、a
という変数に入れています。
配列の計算もできる
配列に対して、加減乗除などの計算も可能です。
先ほど作成したa
にたいして実施してみます。
print(a + 5)
ーーーーーーーーーーーーーーーーーー
【以下、出力】
[6 7 8]
このように配列の全ての項目に加減乗除等が可能です。
print(a * 3)
ーーーーーーーーーーーーーーーーーー
【以下、出力】
[3 6 9]
次は配列同士で計算してみましょう。
b = np.array([5, 6, 7])
print(a + b)
ーーーーーーーーーーーーーーーーーー
【以下、出力】
[ 6 8 10]
同じ位置の要素を加減乗除します。
ではこの場合はどうなるでしょうか。
print(a * b)
ーーーーーーーーーーーーーーーーーー
【以下、出力】
[ 5 12 21]
“dot”関数を利用すれば、行列の内積を出すことも可能です。
print(np.dot(a,b)))
ーーーーーーーーーーーーーーーーーー
【以下、出力】
38
裏では「(1×5) + (2×6) + (3×7) = 38」の計算が行われています。
ちなみに、以下のように要素数の違う配列で行ったらどうなるのでしょうか。
c = np.array([5, 6, 7, 8])
print(a + c)
ValueError: operands could not be broadcast together with shapes (3,) (4,)
といったエラーが出力されます。
さまざまな配列の作り方
先ほどは直接していして配列を作りましたが、その他にもいろいろな作成方法があるので紹介します。
d = np.arange(10)
print(d)
ーーーーーーーーーーーーーーーーーー
【以下、出力】
[0 1 2 3 4 5 6 7 8 9]
“arange”関数を使用すると0から指定した数、1ずつ増えていく配列を作成することができます。
以下のような使い方をすることもできます。
e = np.arange(0, 10, 3)
print(e)
ーーーーーーーーーーーーーーーーーー
【以下、出力】
[0 3 6 9]
「引数(開始値, 終了値, 増加値)」を使っています。
0から10個、3ずつ増やした配列になります。
逆に分割したい場合は“linspace”関数を使用します。
f = np.linspace(0, 30, 11)
print(f)
ーーーーーーーーーーーーーーーーーー
【以下、出力】
[ 0. 3. 6. 9. 12. 15. 18. 21. 24. 27. 30.]
「.」は小数点です。
「(開始値, 終了値, 分割数)」を使っています。
0から30までを11個に分割してできた配列を作成しています。
“zero”関数を使用すると、すべて「0」の配列を作成することができます。
fz = np.zeros(5)
print(fz)
ーーーーーーーーーーーーーーーーーー
【以下、出力】
[0. 0. 0. 0. 0.]
引数が配列の要素の個数になります。
多次元配列
これまでは表でいうと、1列だけの配列でした。
「NumPy」の本当の力は多次元、つまり複数行・複数列、さらにはその表を複数利用することで発揮されます。
2次配列を作成してみましょう。
g = np.array([[1, 2, 3],
[4, 5, 6]])
print(g)
ーーーーーーーーーーーーーーーーーー
【以下、出力】
[[1 2 3]
[4 5 6]]
2行3列の配列(行列)を作成することができました。
配列の形を確認するには以下を実行します。
print(g.shape)
ーーーーーーーーーーーーーーーーーー
【以下、出力】
(2, 3)
2行3列の配列(行列)が作成されていることがわかります。
配列の変形
機械学習では配列をいろいろと変形させて分析することがあります。
実際に変形させていきましょう。
変形には“reshape”関数を使用します。
配列ndarrayも「NumPy」と同じ”reshape”関数を持っているので、どちらを利用しても問題ありません(少し書き方は変わります)。
まず0から14までの配列を3行5列に変換してみます。
h = np.arange(15)
i = np.reshape(h, (3, 5))
print(i)
ーーーーーーーーーーーーーーーーーー
【以下、出力】
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
「0から14までの1列の配列」がh
です。
それを3行5列に変換したものがi
です。
今度は先ほど作成したi
を1列に戻してみましょう。
j = i.reshape(-1)
print(j)
ーーーーーーーーーーーーーーーーーー
【以下、出力】
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
ちなみに「NumPy」を使用した場合は以下のようになります。
k = np.reshape(i,(-1,5))
また、以下のように2つ目の引数の列数に合わせて変形させることもできます
k = i.reshape(-1,3)
print(k)
print(j)
ーーーーーーーーーーーーーーーーーー
【以下、出力】
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]
[12 13 14]]
ぼくが機械学習を学んだ方法
最初は独学でやっていこうと思い、様々な書籍を買っていました。
しかし、どれも難しく、諦めてばかりでした。。。
10万以上もオンライン講座がある『Udemy 』が安く配信されいることを知り、試しに購入してみました。
本来1万円以上の講座が1,000円代で受講できるので、軽い気持ちで試してみたら、長時間しっかりと解説してくれるので一貫した流れがあり、スラスラ進めることができました。
たとえば、以下のような講座があります。
・【NumPy・Python3で】ゼロから作るニューラルネットワーク ・みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2020年最新版】 ・Pythonで機械学習:scikit-learnで学ぶ識別入門 ・【まだ間に合う!】AI開発・機械学習を理解するための数学講座 ・【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門
現在、どの講座も2,000円あれば受講することができ、受講時間が20時間を超える対策もあります!
講座は一度購入すれば視聴期限なく受講でき、30日返金保証もついているので安心して始めることができます。
最初は独学でやってみて、ムズかしいと感じたところだけ、ピックアップしてオンライン講座で学習してみてください!
最後に
紹介したこと以外にも「NumPy」は数多くの関数があります。
この記事で「NumPy」がどういったものか理解しておけば、都度どういったことができそうか、必要になった際に調べることで対応できると思います。
ネット上の情報だけでも学んでいくことはできるかと思いますが、一貫した情報があることで、効率的に学ぶことができると思います。
自分にあった形で学習を続けていってください。
最後まで読んでくださり、ありがとうございました!!!
コメント