機械学習という概念は、人工知能の分野で最近開発されたものです。
この分野の専門家の多くは、AIは人類の未来であり、様々な面で役立つと述べています。
この用語は、1950年代に最も有名な数学者であるアラン・チューリングに由来しています。
チューリングは、最初のデジタル・コンピュータの発明者です。
まず、チューリングをはじめとするコンピュータ科学者に敬意を表します。
機械学習とは何か?
機械学習とは、明示的にプログラムされることなく学習し、機能するコンピュータの能力です。
これは、今日、すべての初心者が学び、適用する最も有名な定義です。
では、このフローチャートを見て、それが人工知能の別の分野とどのようにリンクしているかを確認しましょう。
import pandas as pd
data = pd.read_csv( 'salary.csv' )
data.head() |
人工知能は、コンピュータサイエンスを中核とする学問です。
人工知能は、データサイエンスと呼ばれる1つの主要なサブブランチがあります。
データサイエンスは4つの分野に分かれる。
- データマイニング
- データ解析
- ビッグデータ
- 機械学習(ML)
このグラフを見ると、データがAIの主な依存要素であることがわかります。
データや情報がなければ、私たちは何もできません。
データや情報は、分析・処理のために生の状態で存在する必要があります。
他のすべての要因を考慮すると、データサイエンスの4つのサブフィールドには、それぞれ中核となる依存関係があることがわかります。
このことから、データサイエンスの分野でキャリアを積むには、他の分野の基礎知識を身につける必要があることがわかります。
このような理由から、A.は学生にとって今後の異なるキャリアを歩む機会となっています。
Pythonで機械学習を学ぶためのロードマップ
このセクションでは、私たちが機械学習を学び始め、それを良いキャリアにするための方法を紹介します。
これは完全に道筋を示すものです。
-
- 確率と統計 まず、数学の基礎から始めましょう。平均値、中央値、最頻値などの統計の基本を学び、回帰、カーブフィッティングなどのトピックも重要です。
-
- グラフで可視化する データの可視化には、棒グラフ、散布図、折れ線グラフ、折れ線グラフなど、さまざまなグラフが重要。
- プログラミング言語 MLを学ぶには,プログラミング言語が必要です.なぜなら、複雑な数学的演算はコンピュータに頼ることができますが、データを取得し、表現し、分析するためには、プログラミング言語が最も有用であることが証明されているからです。PythonとRは、データサイエンス愛好家やMLエンジニアの間で最も有名な言語です。
- 4.ライブラリ データ解析のための様々な開発ライブラリについて、MLで使用するプログラミング言語を強く理解する必要があります。数値計算、データの前処理、簡単なアルゴリズム実装、データの可視化などに役立ちます。
-
- アルゴリズム 様々な予測には様々なアルゴリズムが重要である.Naive Bayse , Linear Regression, Decision Trees, Random Forests, XGBosst などとその理論が重要です。
-
- データ処理技術 生データを有用で管理しやすいものに変換するために、データの前処理を行う技術が必要です。One Hat EncodingやLabel Encodingなど、様々な符号化技術が重要です。
これらの点について詳しく見ていこう。
機械学習にPythonを選ぶ理由とは?
学びやすく、理解しやすいプログラミング言語といえば、Pythonが開発者に選ばれています。
一般的に、Pythonは、私たちのアイデアを実装し、プロフェッショナルなワークフローを維持するためのツールです。
コードは、人々が特定の構造で知識を共有し理解するのに役立ちます。
Pythonは、軽量の汎用プログラミング言語です。
Pythonはオープンソースのプロジェクトです。
ですから、私たちはその開発に貢献することができます。
詳しくは https://www.python.org/ をご覧ください。
Pythonの主な特徴は、オブジェクト指向(OOP)であることです。
他のOOP言語と異なり、クラスのインスタンス化、継承、多重継承、カプセル化技術などはすべてPythonで非常に簡単に実装することができます。
また、Web開発、GUI開発、ソフトウェア開発、データサイエンス、機械学習など、様々な用途に対応した豊富なライブラリーを備えています。
機械学習のためにPythonは以下のライブラリを提供しています。
-
- Pandas :
- Numpy
- matplotlib
- Seaborn
- Scipy
- Scikit Learn
これら6つのライブラリを通して,様々なML操作を行うことができます.高度なMLを行うためには,この5つの主要ライブラリの他に,以下のようなセット があります.
-
- Tensorflow.
- OpenCV
- Pytorch
- Keras
- Statsmodels
この記事もチェック:Pythonとsklearnを使って機械学習パイプラインを実装する方法
上記ライブラリの概要
パンダ
まずは、適切なデータクリーニングや前処理を行うために使用する、最も重要なライブラリからご紹介します。
Pandas ライブラリです。
主にpythonのNumpyとmatplotlibのパッケージをベースに構築されています.データの前処理はMLモデルを作る上で最も必要な作業です。
そこで、それを少しでも楽にするのがこのライブラリです。
私たちは、機械がデータを理解し、モデル学習のためのテストデータを準備するためにダミー変数を作成することができます。
そのドキュメントとチュートリアルはリンク先をご覧ください。
Numpy
完全な形は数値計算用パイソン。
MLエンジニアが作成するモデルの訓練に最適なライブラリであることが証明されています.ITは強力で,データ型はndarrayです.最新版はNumpy-1.21が使用されています。
詳しくは公式サイトhttps://numpy.org/doc/。
matplotlib
データの可視化やプレゼンテーションのためにグラフを描画するためのライブラリです。
データサイエンスや機械学習の目的に非常に適した、使いやすい API です。
以下のようなグラフを描画することができます。
2次元プロットと3次元プロットの2つのカテゴリがあります。
2次元プロットには以下のものがある。
- 散布図
- 棒グラフ
- 折れ線グラフ
- 円グラフ
- 箱形プロット
- 度数分布
- ヒストグラム
- カーブ など多数
3次元プロットには
- 3次元折れ線グラフ
- ワイヤーフレームプロット
- サーフェスプロット
- 三次元曲面プロット
matplotlib の中の特別なサブモジュールを使って、画像を解析することもできます。
それは、image モジュールです。
高度なスケーリング機能には、画像プロットや擬似カラースキームが含まれます。
詳しくはこのリンクをご覧ください。
以下は、いくつかのサンプル画像です。
data.dtypes data.shape |
シーボーン
このライブラリは、統計的なプロットを行うために使用されます。
matplotlib のように、様々なデータフレームの魅力的なプロットを描画することができます。
また、異なる回帰モデルや関数を可視化することもできますし、同じデータフレームの異なる変数に対してマルチプロットを描くという特別な機能も持っています。
以下は、いくつかのプロット例です。
data.isna(). sum ()
|
Scipy
Scipy とは科学的な Python の意味です。
このライブラリはほとんど NumPy に似ている。
しかし、核心的な違いは、物理学と高度な数学のための特別な関数を提供することです。
超幾何学、放物円柱などのようなトピックは、この API で利用できます。
また、複雑な計算をサポートするために、指数関数や三角関数のセットを持っています。
NumPyに対するScipyの主なプラス点は、積分や微分のような微積分問題の計算に役立つことです。
このパッケージについてもっと知るには、user_guideのリンクをご覧ください。
さまざまな機械学習アルゴリズムの概要
それでは早速、様々な機械学習アルゴリズムについて、その挙動を解説していきます。
このセクションでは、必要性に応じて、どのタイプの機械学習技術が特定の目的に適しているかを理解するのに役立ちます。
この記事もチェック:知っておきたいPythonの機械学習アルゴリズムTOP5
機械学習技術
機械は2つの異なる手法で学習します。
- 教師あり学習。教師あり学習:ラベル付けされたデータのもとで学習する概念。データにラベルを付け、必要なモデルを学習させる。
-
- 教師なし学習。ラベル付けされていないデータを用いて、モデルが自ら学習する概念。ラベル付けされていないデータを用いて、モデルが自ら学習する概念。
機械学習アルゴリズム
アルゴリズムがなければ、機械学習は一夜の夢に過ぎない。
したがって、すべての基本的なアルゴリズムについて適切な知識を持つ必要がある。
機械学習は、ユーザーの仕様に合った適切な出力を提供します。
これらは、コアとなる統計解析に依存します。
主に2つのタイプがある。
- 分類。1.分類:離散的なデータ、または大きな値差で変化するデータの場合。
- 回帰。連続的なデータや、値が微妙に変化するデータ。
どちらもアルゴリズムは同じですが、作り方が異なります。
以下に、AI/ML実務者が知っておくべき最も必要かつ重要な7つのアルゴリズムを列挙します。
- 線形回帰。グラフ上のデータ点の流れの中から、最も適合する直線を求める。
- ロジスティック回帰。ある条件下での確率を曲線で求める。
- 意思決定ツリー 木のノードの条件の違いに基づいて意思決定を行う。
- ランダムフォレスト 大量のデータに対して意思決定の予測に取り組む様々な決定木の集合体。
- サポートベクターマシン。データ点をクラス分けして分析する
6.k-meansクラスタリングアルゴリズム。異なるデータ点のクラスタを作成し、その中から奇数のデータ点を検出します。 - k-nearest neighbors: 特定のテストケース上でデータポイントの最近傍を見つける。
Pythonで機械学習を行う方法 – 簡単な例
初心者の場合、ビジネス上の問題やテストケースを解決するように求められます。
これはPredictive Analysisとも呼ばれます。
今、私たちは機械学習のための主要なツールや技術を持っていますし、何が機械学習なのかも知っています。
それでは,MLを始めるにあたって,いくつかの概念を適用してみましょう.MLは機械に学習させるための段階的なパターンです。
そこで、手始めに python で線形回帰のアルゴリズムとプロットを実装してみましょう。
Anacondaの詳細については、 https://www.anaconda.com/products/individual を参照してください。
Googleの役職別社員給与のデータから、決定木分類アルゴリズムを実装します。
>
を実装します。
- 環境 Anaconda
- IDE: Jupyter Notebook
- オペレーティングシステム Windows 10+
- Pythonのバージョン。Python 3.8.5 (Anacondaにプリインストールされています)
- データセット: salary.csv
1. データセットの読み込み
Pandasモジュールはデータセットの読み込みを支援します。
データセットの形式はテキスト、CSV、エクセルなど様々です。
Pandasモジュールはそれぞれのファイル形式を読み込むための様々なメソッドを持っています。
また、データAPIが終了するリンクから読み込むこともできます。
コード
inputs = data.drop( 'salary more than 10,000rs' , axis = 'columns' )
target = data[ 'salary more than 10,000rs' ]
|
from sklearn.preprocessing import LabelEncoder
le_company = LabelEncoder()
le_job = LabelEncoder()
le_degree = LabelEncoder()
inputs[ 'company_n' ] = le_company.fit_transform(inputs[ 'company' ])
inputs[ 'job_n' ] = le_job.fit_transform(inputs[ 'job' ])
inputs[ 'degree_n' ] = le_degree.fit_transform(inputs[ 'degree' ])
|
CSVファイルなので、read_csv()メソッドを使用します。
そして、それを変数「data」に格納します。
データセットの最初の5行を表示するには、head()メソッドを使用します。
2. データセットのデータ型と形状を確認する
データセットにどのような変数があるのかを知るには、そのデータ型をすべて記録しておく必要があります。
それを確認するために、pandasのシンプルな属性型がいつでも使えるようになっています。
そして、行と列の数を数えるために、shape属性があります。
これは行と列のタプルを返します。
inputs_n = inputs.drop([ 'company' , 'job' , 'degree' ],axis = 'columns' )
inputs_n |
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
model.fit(inputs_n, target) model.score(inputs_n,target) model.predict([[ 2 , 1 , 0 ]])
model.predict([[ 2 , 1 , 1 ]])
|
3. すべての欠損値をチェックする
データセットは、いくつかの理由で不完全になることがある。
その差は非常に大きく、間違った予測につながる可能性があります。
しかし、isna()関数はすべての値をスキャンし、値がない列があればその数を返します。
合計値を確認するには、sum()関数とisna()を使用します。
コード
4. ターゲット変数の選択
予測値は、ターゲット変数と一緒に動く連続変数に依存します。
この変数は、テストケース分析に不可欠です。
名目データセットがあれば、それを簡単に識別できます。
与えられた問題文は、Salaryが我々の主要なターゲット変数であることを示しています。
ですから、salary of more than 10,000rs という列がそれに適しています。
コード
5. データセットのラベリング
教師あり学習モデルには,ラベル付けされたデータが必要です.なぜならそれはこの種のMLアルゴリズムの中核となる性質だからです.
これはsci-kit-learnライブラリのpreprocessingモジュールを使って行うことができる.
そこから LabalEncoder() クラスをインポートします。
fit_transform()関数は、機械が理解できるように、関連するデータをラベル付けします。
このクラスのインスタンスを各カラムに3つ作成します。
こうして、3つの新しい列がデータセットに追加されます。
そして、ラベル付けされたデータを取得した後、必要でないカラムを削除します。
そして、データセットの新しい名前をinputs_nとします。
コード
この記事もチェック:Pythonでデータセットから別のデータセットへピボットテーブルを作成する
6. アルゴリズムの実装
利用できるデータが離散形式であるため、ClassifierタイプのDecision Treeアルゴリズムを実装します。
scikit-learnのtreeモジュールからインポートします。
そのコードを以下に示す。
コードは以下の通りです。
説明
- DecisionTreeClassifier クラスのインスタンスを作成します。そして、予測を行うために、fit 関数を使用します。この関数は、2つのパラメータをとります。 ターゲット変数と連続変数です。これにより、パラメータに関するアルゴリズムが実装されます。
-
- 次に score() 関数で学習スコアを確認します。スコアは0から1まであり、1であれば100%正確なモデルです。パーセンテージは小数点以下の数字で決まります。例えば,スコアが0.78の場合,学習率は78%となります.
- predict関数は、入力の配列をパラメータとして受け取ります。これにより結果が得られます。その配列に3つの入力を与えています。なぜなら、3つのテスト変数 1) company_n, 2) job_n, 3) degree_n があるからです。
- アルゴリズムは、各入力のターゲット変数を比較し、給与がRs.10,000以上になるかどうかを判断します。もし答えが1なら、その人は1万ルピー以上稼ぐが、答えが0ならその人は1万ルピー以上稼がない。
実世界での機械学習
機械学習は膨大な数のアプリケーションを持ち、また様々な分野で利用されている。
その主な分野は以下の6つです。
- 技術分野
- 産業分野
- 金融
- 電子商取引
- モノのインターネット(IoT)
- 天気予報
まとめ
以上、Pythonで機械学習を行う方法について学びました。
また、様々なライブラリとその使用方法についても学びました。
この記事を通して、あなたの機械学習の旅をスタートさせてください。
多くのことをカバーしなければならず、さらに多くのことをカバーすることになります。
そのため、Pythonでの機械学習の最も主要な側面から始めるために、この記事ですでに述べたことにすべて目を通すようにしてください。
この記事もチェック:Pythonで使える機械学習ライブラリのランキング7つを解説する