Python機械学習入門と基礎知識予備

パート 1 機械学習の概要


機械学習はデータから知識を抽出することであり、統計、人工知能、コンピューター サイエンスが交わる研究分野であり、予測分析または統計学習としても知られています。

1.1 なぜ機械学習を使うのか

「スマート」アプリケーションの初期の頃、多くのシステムは人間が作成した「if」と「else」の決定ルールを使用してデータを処理したり、ユーザー入力に基づいて調整したりしていました。

たとえば、スパムの識別と駆除は、「インテリジェント アプリケーション」を設計するために専門家によって設計されたルール システムの一例です。特にユーザーがそのプロセスに精通している場合、人が作成した決定ルールは一部のアプリケーションでは実現可能です。モデル、アプリケーション

ただし、意思決定ルールを人為的に指定すると、次の 2 つの欠点があります。

  • 意思決定に必要なロジックは単一のドメインと単一のタスクにのみ適用可能であり、わずかな変更でもシステム全体の書き直しが必要になる場合があります。

  • ルールを作成するには、人間の専門家の意思決定プロセスを深く理解する必要があります

この人為的なルール作成アプローチが機能しない例としては、画像内の顔検出が挙げられます。この場合の主な問題は、コンピューターがピクセル (コンピューター内で画像を構成するピクセル) を「認識」する方法が大きく異なることです。人間の顔の認識方法とは大きな違いがあります。まさにこの表現の違いのため、人間がデジタル画像内の顔の構成を記述するための適切な規則を策定することは基本的に不可能です。

しかし、機械学習を使用すると、アルゴリズムが顔を認識するために必要な特徴を決定するには、プログラムに大量の顔画像を入力するだけで十分です。

1.1.1 機械学習が解決できる問題

最も成功した機械学習アルゴリズムは、既知の例から一般化することで意思決定プロセスを自動化するアルゴリズムであり、これが教師あり学習です。

教師あり学習: 入力/出力ペアから学習する機械学習アルゴリズム

ユーザーがアルゴリズムに入力と期待される出力のペアを与えると、アルゴリズムは、入力が与えられた場合、特に人間の助けなしにこれまでに見たことのない入力が与えられた場合に、期待される出力を与える方法を見つけます。対応する出力を与える (これが意思決定プロセスの自動化です) )

教師あり学習で解決できる問題: 封筒に書かれた手書きの郵便番号の認識、医療画像に基づいた腫瘍の良性判断、クレジットカード取引における不正行為の検出

これらの例で注目すべき興味深い観察は、入力と出力は非常に単純であるように見えますが、データ収集プロセスが 3 つの例でかなり異なっていることです。

教師なし学習: 入力データのみがわかっており、出力データはアルゴリズムに提供されません。

教師なし学習で解決できる問題: 一連のブログ投稿のトピックの特定、顧客を同様の好みを持つグループに分類、Web サイトへの異常なアクセス パターンの検出

教師あり学習タスクであっても教師なし学習タスクであっても、入力データをコンピューターが理解できる形式で表現することが非常に重要です。多くの場合、データをテーブルとして考えると便利です。

処理する各データ ポイント (各電子メール、各顧客、各トランザクション) はテーブル内の行に対応し、データ ポイントの各属性 (顧客の年齢、取引金額、取引場所など) がテーブルの列に対応します。テーブル

機械学習では、各エンティティまたは各行はサンプル(サンプル) またはデータ ポイントと呼ばれ、各列 (これらのエンティティの属性を説明するために使用されます) は特徴と呼ばれます。

1.1.2 タスクとデータに精通している

おそらく、機械学習プロセスで最も重要な部分は、扱っているデータと、そのデータが解決したいタスクにどのように関連しているかを理解することです。

モデルの構築を開始する前に、データセットの内容を理解する必要があります。各アルゴリズムは、入力データのタイプと、解決に最適な問題が異なります。

より大きな観点から見ると、機械学習のアルゴリズムと手法は特定の問題を解決するプロセスの一部にすぎず、プロジェクト全体の全体像を常に念頭に置くことが重要です (問題解決に焦点を当てる)

1.2 Python を選ぶ理由

機械学習では Python を使用する主な理由が 3 つあります。

1. Python は、汎用プログラミング言語の能力、MATLAB や R などのドメイン固有のスクリプト言語の使いやすさを組み合わせた、多くのデータ サイエンス アプリケーションの共通言語となっています。

2. Python には、データの読み込み、可視化、統計、自然言語処理、画像処理など、さまざまな機能のライブラリがあります。

3. ターミナルまたは Jupyter Notebook などの他のツールを使用してコードを直接操作します

1.3 scikit-learn

scikit-learn は、無料で使用および配布できるオープンソース プロジェクトです。誰でも簡単にソース コードを入手してその背後にある原理を確認できます。非常に人気のあるツールであり、最も有名な Python 機械学習ライブラリです。

scikit-learn は、他の多数の Python 科学計算ツールでも使用できます。

scikit-learn ユーザーガイド (http://scikit-learn.org/stable/user_guide.html)

scikit-learn は、他の 2 つの Python パッケージ、NumPy と SciPy に依存しています。

プロットやインタラクティブな開発を行うには、matplotlib、IPython、Jupyter Notebook もインストールする必要があります。

すでに Python がインストールされている場合は、pip を使用して上記のパッケージをすべてインストールできます。

pip install numpy scipy matplotlib ipython scikit-learn pandas

: pip コマンドの入力位置に注意してください。Python スクリプト パスの下で pip コマンドを使用し、ダウンロードが完了するまで待ちます。

ここに画像の説明を挿入

1.4 必要なライブラリとツール

scikit-learn とその使用方法について知ることは重要ですが、プログラミングの経験を向上させることができる他のライブラリもあります。scikit-learn は、NumPy および SciPy 科学計算ライブラリに基づいています。NumPy と SciPy に加えて、pandas と matplotlib も使用し、ブラウザベースの対話型プログラミング環境である Jupyter Notebook を紹介します。

1.4.1 ジュピターノートブック

Jupyter Notebook は、ブラウザーでコードを実行できる対話型環境です。このツールは、探索的なデータ分析に非常に役立ちます。Jupyter Notebook は複数のプログラミング言語をサポートしていますが、サポートする必要があるのは Python だけです。コード、ファイル、グラフィックスを統合するために使用すると、非常に便利です。便利

1.4.2 ナンピー

NumPy は、Python の科学計算用の基本パッケージの 1 つです。その機能には、多次元配列、高度な数学関数 (線形代数演算やフーリエ変換など)、擬似乱数ジェネレーターが含まれます

: scikit-learn では、NumPy 配列が基本的なデータ構造です

scikit-learn は、NumPy 配列形式のデータを受け入れます。使用するすべてのデータは、NumPy 配列に変換する必要があります。NumPy のコア機能は、多次元 (n 次元)配列である ndarray クラスです。配列内のすべての要素同じタイプである必要があります

NumPy ndarray クラスのオブジェクトについては、単に「NumPy 配列」または「配列」と呼びます。

#输入
import numpy as np 
x = np.array([[1, 2, 3], [4, 5, 6]])
print("x:\n{}".format(x))
---
#输出
x:
    [[1 2 3] 
     [4 5 6]]

1.4.3 SciPy

SciPy は Python で科学計算を行うための関数のコレクションです。線形代数の高度なプログラム、数学関数の最適化、信号処理、特殊な数学関数、統計分布などの複数の関数があります。scikit-learn は SciPy の関数のコレクションを使用して実装しますアルゴリズム

私たちにとって、SciPy で最も重要なことは scipy.sparse です。これはスパース行列 (スパース行列) を与えることができます。スパース行列は、scikit-learn でデータを表現するもう 1 つの方法です。

一般に、スパース データの密な表現 (密な表現) を作成することは不可能です (メモリの無駄が多すぎるため)。そのため、そのスパースな表現 (スパースな表現) を直接作成する必要があります。

#输入
from scipy import sparse
# 创建一个二维NumPy数组,对角线为1,其余都为0 
eye = np.eye(4) 
print("NumPy array:\n{}".format(eye))
---
#输出
NumPy array: [[ 1. 0. 0. 0.] [ 0. 1. 0. 0.] [ 0. 0. 1. 0.] [ 0. 0. 0. 1.]]

1.4.4 マットプロットライブラリ

matplotlib は Python の主要な科学描画ライブラリです。その機能は、折れ線グラフ、ヒストグラム、散布図など、公開できるビジュアル コンテンツを生成することです。データの視覚化とさまざまな分析により、深い理解が得られます。視覚化は matplotlib を使用して行われます。Jupyter Notebook では、%matplotlib ノートブックおよび %matplotlib インライン コマンドを使用して、ブラウザに画像を直接表示できます。

対話型環境を提供できる %matplotlib ノートブック コマンドを使用することをお勧めします。

1.4.5 パンダ

Pandas は、データを処理および分析するための Python ライブラリです。DataFrame と呼ばれるデータ構造に基づいています。簡単に言うと、pandas DataFrame は Excel テーブルに似たテーブルです。Pandas には、フォーム メソッドを変更および操作するための多数のテーブルが含まれています

配列内の要素が同じ型である必要がある NumPy とは異なり、pandas の各列は異なる型にすることができ、その強みの 1 つは、多くのファイル形式やデータベースからデータを抽出できることです。

著作権表記: 上記内容は「Python 機械学習基礎チュートリアル」 - O'Reilly Media, Inc.より一部抜粋したものです。

この記事が役に立った場合は、ワンクリックと 3 つのリンクでサポートしてください~

おすすめ

転載: blog.csdn.net/qq_50587771/article/details/123223992