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

ブログ    
ブログ    
ブログ    

推薦する

中国における産業用ロボットへの投資と発展の3つの効果

最近、工業情報化省は2020年の我が国のロボット産業の運営状況を発表しました。データによると、202...

ヘルスケアにおける人工知能

[[433316]] AI の恩恵を受けるすべての業界の中で、ヘルスケアはおそらく最も重要かつ関連性...

エッジAIはIoTのメリットを高める

今日のデジタル世界では、人工知能とモノのインターネットが私たちの生活のあらゆる側面に大きな変化をもた...

...

Googleの研究は数学の問題をコードに変換することで、機械証明の精度を大幅に向上させた。

コンピュータは以前から数学の証明を検証するために使用されてきましたが、特別に設計された証明言語を使用...

機械翻訳:人工知能分野の重要な中核技術

近年、機械翻訳 (MT) は大きな進歩を遂げ、満足のいく成果を達成しました。 MT は人工知能分野の...

人工知能: キャリア開発のための3つの戦略

ビジネスに AI を導入するには、テクノロジーとスキルだけでは不十分です。いくつかの戦略を導入するこ...

ベンチャー投資における機械学習の活用方法

過去 20 年間にわたり、Veronica Wu は多くの大きな技術的変化の始まりを目撃してきました...

Tofsee ボットネットは独自のドメイン名生成アルゴリズムを使用する

概要スイス政府コンピュータ緊急対応センター (GovCERT) は最近、Tofsee ボットネット ...

Soraはどのように機能しますか?

翻訳者 |ブガッティレビュー | Chonglou先週、 OpenAIチームは、物理世界の基本的な側...

50億のブルーオーシャンが呼び寄せる、電力検査ロボットが最前線に

[[398288]]近年、気温が高くなり、多くの地域で扇風機やエアコンが使用されるようになり、それに...

...

...

人工知能のもう一つの方向性:メモリスタに基づくストレージおよびコンピューティング技術

[[325184]]この記事はLeiphone.comから転載したものです。転載する場合は、Leip...