オープンソースツール | データサイエンスのための 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は社会変革を極限まで推し進める

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

Java プログラミング スキル - データ構造とアルゴリズム「スレッド バイナリ ツリー」

[[388829]]まず質問を見てみましょうシーケンス{1,3,6,8,10,14}を二分木に構築...

Python による顔認識 (ソースコード付き)

Python は画像やビデオから顔を検出して認識できます。顔の検出と認識は、コンピューター ビジョ...

...

紙画像の不正使用? AI: この道は私が塞いでいる

[[441681]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

1つの命令を使用してGPT-3.5またはLlama 2を微調整する方法

ChatGPT や Llama 2 などの大規模言語モデル (LLM) は、さまざまなタスクでの汎用...

...

人工知能は石油・ガス生産者の業務改善と温室効果ガス排出削減に貢献

[[437362]]石油・ガス生産者の操業実績を測る指標は数多くあり、効率性の向上、コストの削減、油...

...

OpenAIの創設者サム・アルトマンが解雇されてから24時間後

ChatGPTを開発するOpenAIは金曜日、CEO兼創設者のサム・アルトマン氏を解雇したが、彼の突...

...

Baidu Create 2019 Baidu AI 開発者カンファレンス Li Yanhong の素晴らしい名言

7月3日に開催されたBaidu Create 2019 Baidu AI Developer Con...

スマート物流は進化し、AIは「独自のスキル」を発揮し続ける

データによると、わが国のスマート物流市場規模は2019年に5074億元で、前年比23.10%増加しま...

レノボ、HPC+AI によるアルゴリズムの世界を構築する初のハイブリッド インテリジェンス アカデミック カンファレンスに初参加

8月25日〜26日、第1回中国認知コンピューティングおよびハイブリッドインテリジェンス学術会議が西安...

5Gは医療業界に革命を起こす

[[377987]]画像ソース: https://pixabay.com/images/id-149...

スマートシティ開発:廃棄物管理と大気質監視

廃棄物管理と空気質監視におけるスマートシティの進歩を通じて、都市生活の未来を探ります。 「スマート ...