オープンソースツール | データサイエンスのための Python 入門

オープンソースツール | データサイエンスのための Python 入門

[[248716]]

データ サイエンスの力を活用するために高価なツールは必要ありません。これらのオープン ソース ツールを使い始めましょう。

数学やコンピューター サイエンスのバックグラウンドを持つ熟練したデータ サイエンス愛好家であっても、別の分野の専門家であっても、データ サイエンスが提供する可能性は手の届くところにあり、高価で高度に専門化されたエンタープライズ レベルのソフトウェアは必要ありません。この記事で説明するオープンソース ツールは、開始するために必要なものすべてです。

Python、その機械学習およびデータサイエンス ライブラリ (pandas、Keras、TensorFlow、scikit-learn、SciPy、NumPy など)、および多数の視覚化ライブラリ (Matplotlib、pyplot、Plotly など) は、初心者にも専門家にも同様に優れた無料のオープン ソース ソフトウェア ツールです。これらは習得が簡単で、人気があり、コミュニティによってサポートされており、データ サイエンス向けに開発された最新のテクノロジーとアルゴリズムを備えています。これらは、学習を始めるときに入手できる最高のツール セットの 1 つです。

多くの Python ライブラリは互いの上に構築されており (依存関係と呼ばれます)、その基礎となるのが NumPy ライブラリです。 NumPy はデータ サイエンス専用に設計されており、データセットの関連部分を ndarray データ型で保存するためによく使用されます。 ndarray は、リレーショナル テーブルのレコードをcvsファイルまたはその他の形式で保存したり、その逆を行ったりするのに便利なデータ型です。 scikit 関数を多次元配列に適用する場合に特に便利です。 SQL はデータベースのクエリには最適ですが、複雑でリソースを大量に消費するデータ サイエンス操作を実行する場合は、ndarray にデータを保存する方が効率的で高速です (ただし、大規模なデータセットを操作する場合は十分な RAM があることを確認してください)。知識の抽出と分析に pandas を使用する場合、pandas の DataFrame データ型と NumPy の ndarray 間のシームレスな変換により、それぞれ抽出と計算集約型の操作のための強力な組み合わせが作成されます。

簡単なデモンストレーションとして、Python シェルを起動し、ボルチモアの犯罪統計のオープン データセットを pandas DataFrame 変数に読み込み、読み込まれた DataFrame の一部を見てみましょう。

  1. >>>   import pandas as pd
  2. >>> crime_stats = pd . read_csv ( 'BPD_Arrests.csv' )
  3. >>> crime_stats . head ()

これで、SQL を使用してデータベースで実行するのと同じように、この pandas DataFrame に対してほとんどのクエリを実行できるようになりました。たとえば、 Description属性のすべての一意の値を取得するには、SQL クエリは次のようになります。

  1. $ SELECT unique (“ Description ”) from crime_stats ;

pandas DataFrame を使用して記述された同じクエリは次のようになります。

  1. >>> crime_stats [ 'Description' ]. unique ()
  2. [ 'COMMON ASSAULT' 'LARCENY' 'ROBBERY - STREET' 'AGG. ASSAULT'
  3. 'LARCENY FROM AUTO' 'HOMICIDE' 'BURGLARY' 'AUTO THEFT'
  4. 'ROBBERY - RESIDENCE' 'ROBBERY - COMMERCIAL' 'ROBBERY - CARJACKING'
  5. 'ASSAULT BY THREAT' 'SHOOTING' 'RAPE' 'ARSON' ]

NumPy 配列 (ndarray 型) を返します。

  1. >>> type ( crime_stats [ 'Description' ]. unique ())
  2. < class 'numpy.ndarray' >

次に、このデータをニューラル ネットワークに入力し、犯罪のデータ、犯罪の種類、発生場所に基づいて、使用された武器の種類をどの程度正確に予測できるかを確認しましょう。

  1. >>> from sklearn . neural_network import MLPClassifier
  2. >>> import numpy as np
  3. >>>
  4. >>> prediction = crime_stats [[' Weapon ']]
  5. >>> predictors = crime_stats [ 'CrimeTime' , ' CrimeCode ', ' Neighborhood ']
  6. >>>
  7. >>> nn_model = MLPClassifier ( solver = 'lbfgs' , alpha = 1e-5 , hidden_layer_sizes =( 5 ,
  8. 2 ), random_state = 1 )
  9. >>>
  10. >>> predict_weapon = nn_model . fit ( prediction , predictors )

学習したモデルの準備ができたので、その品質と信頼性を判断するためにいくつかのテストを行うことができます。まず、トレーニング データ セット (モデルのトレーニングに使用された元のデータセットの一部で、モデルの作成には含まれていないもの) を入力しましょう。

  1. >>> predict_weapon . predict ( training_set_weapons )
  2. array ([ 4 , 4 , 4 , ..., 0 , 4 , 4 ])

ご覧のとおり、トレーニング セット内の各レコードに対して予測された武器ごとに 1 つの数値を含むリストが返されます。武器名の代わりに数字が表示されるのは、ほとんどの分類アルゴリズムが数字で最適化されているためです。カテゴリデータの場合、属性を数値表現に変換する手法があります。この場合、使用される手法は、sklearn 前処理ライブラリのLabelEncoder関数 ( preprocessing.LabelEncoder()を使用したラベル エンコードです。データとそれに対応する数値表現を変換したり、逆変換したりできます。この例では、 LabelEncoder()inverse_transform関数を使用して、武器 0 と 4 が何であるかを確認できます。

  1. >>> preprocessing . LabelEncoder (). inverse_transform ( encoded_weapons )
  2. array ([ 'HANDS' , 'FIREARM' , 'HANDS' , ..., 'FIREARM' , 'FIREARM' , 'FIREARM' ]

これは興味深いですが、このモデルがどれだけ正確であるかを知るために、いくつかのスコアをパーセンテージで計算してみましょう。

  1. >>> nn_model . score ( X , y )
  2. 0.81999999999999995

これは、ニューラル ネットワーク モデルの精度が約 82% であることを示しています。この結果は印象的に思えるかもしれませんが、別の犯罪データセットに適用した場合の妥当性を確認することが重要です。相関、混同、マトリックスなど、これを行うための他のテストもあります。私たちのモデルは精度が高いのですが、この特定のデータセットには使用された武器としてFIREARMリストする行が不釣り合いなほど多く含まれているため、一般的な犯罪データセットにはあまり役立ちません。再トレーニングしない限り、入力データセットの分布が異なっていても、分類器はFIREARMを予測する可能性が高くなります。

データを分類する前に、データをクリーンアップし、外れ値や不正なデータを削除することが非常に重要です。前処理が適切であればあるほど、洞察はより正確になります。また、精度を高めるためにモデルや分類器に過剰なデータ (通常は 90% 以上) を入力するのは、過剰適合により正確であるように見えても効果的ではないため、お勧めできません。

Jupyter ノートブックは、コマンドラインに代わる優れたインタラクティブな代替手段です。 CLI はほとんどの用途に最適ですが、視覚化を生成するためにコード スニペットを実行する場合は、Jupyter が最適です。ターミナルよりもはるかに適切にデータをフォーマットします。

この投稿では機械学習に関する最高の無料リソースをいくつか紹介しますが、他にもガイドやチュートリアルは数多くあります。あなたの興味や趣味に応じて、利用できるオープンデータセットも多数見つかります。出発点としては、Kaggle が管理するデータセットや州政府の Web サイトで入手できるデータセットが優れたリソースとなります。

<<:  Pythonで簡単な顔認識を実装すると、私はこの星にとても似ていることが判明しました

>>:  マイクロソフトのグローバル副社長ハリー・シャム氏:AIは社会変革を極限まで推し進める

ブログ    
ブログ    

推薦する

...

人工知能は「新たな生産要素」である

[[186158]]何人かの経済学者に話を聞いてみれば、彼らはほぼ間違いなく、生産性の伸びの弱さが現...

クラウド コンピューティングにおいて人工知能はどのような役割を果たすのでしょうか?

今日のデジタル世界では、人工知能とクラウド コンピューティングが毎日多くの人々の仕事と生活に影響を与...

人工知能は「大きい」と「小さい」に分けられる

大規模な多国籍産業企業は、進行中のデジタル産業革命で効果的に競争できるように、機械をよりスマートにす...

ChatGPTをよりスムーズに使用するためのツール「Pandora」

背景ChatGPTを日常的に使用する際に、ネットワーク制限、アカウント制限、公式フロー制限など、次の...

Ctrip における Flutter マップのベスト プラクティス

著者についてCtrip のシニア モバイル開発エンジニアである Leo は、クロスエンド テクノロジ...

AIのリスクと安全性をどのように管理するのか?

AI モデルのトレーニングには、大規模で機密性の高いデータセットが使用されることが多く、プライバシ...

...

CESの半導体大手:自動運転のオープンな競争と5Gの秘密の競争

[[255293]]明らかに、自動運転と5Gはチップビジネスそのものよりもはるかに魅力的です。 AI...

AIコンピューティングパワーギャップを越えて、人工知能コンピューティングセンターの産業的価値が強調される

「第14次5カ年計画」の骨子には「デジタル化の加速とデジタル中国の構築」という独立した章が設けられ、...

人工知能はいつか本当に人間の教師に取って代わることができるのでしょうか?

中国は教育における人工知能の応用において徐々に優位に立っています。顔認識からスタートアップ、医療教育...

機械にあなたのことをもっと理解させるにはどうすればいいでしょうか? NLPについて学ぶ時が来ました

音声とテキストの両方における自然言語処理 (NLP) の改善は、主流のテクノロジーの進歩に役立ちます...

...