ホームページ  >  記事  >  バックエンド開発  >  なぜ Python に代わるものを急いで探す必要があるのでしょうか?

なぜ Python に代わるものを急いで探す必要があるのでしょうか?

王林
王林転載
2023-04-11 21:10:09951ブラウズ

翻訳者|Liu Tao

査読者|Sun Shujuan

人工知能 (AI) と機械学習 (ML) は私たちの日常のパートナーであり、アルゴリズムと統計モデルなしでは想像するのが困難です。人生はどんなものになるだろう。機械学習という言葉を聞くと、最初に思い浮かぶのは Python です。 Python は長い間機械学習の代弁者であったため、機械学習の技術的側面の実装を支援する上で重要な役割を果たしてきました。

Python はおそらく最も美しい機械学習言語であり、開発者の 48.24% が使用しています。 Python には強力で便利な低レベル パッケージと高レベル API インターフェイスがあるため、科学技術コンピューティングのすべての分野で比類のない利点がありますが、特定のタスクに使用する場合にはいくつかの欠点もあります。したがって、Python に代わる言語の必要性がますます一般的になってきています。

現在、多くの新興言語は、パフォーマンスの点で Python と同等かそれ以上です。したがって、これは機械学習の唯一の選択肢ではなくなりました。 Scala、Julia、MQL5、および Python のスーパーセットではないその他の言語を使用して、機械学習アプリケーションを開発および提供できます。したがって、機械学習はもはや Python に限定されません。

この記事では、新しい機械学習言語の出現、それらが Python の市場シェアをどのように侵食しているか、機械学習が将来どのように変化するかについて探っていきます。

1.Python の欠点

Python の欠点のいくつかについて説明します。 、これらの欠点は、開発者やデータ サイエンティストによってよく直面します。

パフォーマンスと速度

Python の開発速度は速いですが、計算速度は非常に遅いです。コンパイラではなくインタプリタを使用します。シーケンシャルなコードを実行するため、他のデータ サイエンス プログラミング言語よりも遅くなります。 C には便利なツールやライブラリがたくさんあるため、Python は C よりも遅いです。ベクトル化されたコードをマスターしない限り、それがいかに遅いかに気づくでしょう。

Cython は Python のスーパーセットです。Python ソース コードを C 言語コードにコンパイルします。最も重要なことは、追加のコンピューティング リソースを必要とせずに C 言語レベルのコンピューティング速度を提供することです。多くのプログラマーは Cython を使用して、C 言語と同じくらい高速に実行され、さらにシンプルで読みやすい Python コードを作成します。

設計上の制限

Python には、動的型付けが原因で設計に大きな欠陥があります。一般に、プログラミング言語で動的に型指定される変数には特別な宣言は必要ありません。 Python はダックタイピングを使用するため、混乱を招く可能性があります。ダック タイピングでは、オブジェクトのクラスやプロパティは、その機能ほど重要ではありません。ダックタイピングでは型チェックは必要ありません。プロセスやプロパティを確認することもできます。

非効率的なメモリ消費

Python は構造が大きいため、大量のメモリを消費します。さらに、Python データ型はメモリ消費に関して柔軟性があります。メモリを大量に消費するタスクには適していません。データ型が柔軟なため、メモリも消費されます。したがって、大規模で長時間実行される Python システムを作成する場合、Python でのメモリ管理は困難になります。

スレッドが不足しています

他の言語と比較して、Python スレッドは効率が低くなります。 Python はマルチスレッドですが、一度に実行できるスレッドは 1 つだけです。したがって、マルチスレッド Python はシングルスレッドの処理効率を提供します。 Python には、一度に 1 つのスレッドのみが使用できるグローバル インタープリター ロック (GIL) があります。 Python がネイティブ ライブラリを使用する場合にのみ、複数のスレッドを同時に実行できます。さらに、Python のスーパーセットである Jython はマルチスレッドを実装できますが、Python はマルチスレッドを実装できません。

#2. データ サイエンティストはなぜ Python の代替手段を探しているのでしょうか?

#Python は本当に素晴らしいです。ただし、フラッシュとインクレディブル・ハルクの両方を同時に行うことはできません。フラッシュを必要とする人もいるかもしれないし、ハルクを必要とする人もいるかもしれない。ユーザーのニーズは多様です。同様に、Python は数学やデータ サイエンスのアプリケーション向けに設計されていません。これには、深層学習アルゴリズムに特化した NumPy や Tensorflow などのサードパーティ ライブラリが必要です。したがって、データ固有のプログラミング言語は Python よりも優れています。

たとえば、ビジネスの世界では、機械学習には実行時間を短縮するための速度と拡張性が必要です。顧客をあまり長く待たせることはできません。したがって、実行するにはより高速な ML 言語 (汎用関数型プログラミング言語) が必要です。速ければ速いほど良いです。

さて、Python は速いですが、Python より速いものは他にあるでしょうか?そう、Julia、つまり Scala です。

この場合、データ サイエンティストは Python とは異なるプログラミング言語を使用することを好みます。

3. データ サイエンスのための Python の代替案

さまざまなアプリケーション環境では、次のようなものがあります。 Python と同等かそれ以上のパフォーマンスを発揮する Python の代替手段がいくつかあります。 Python データ サイエンスの代替案をいくつか紹介します。

(1)Julia

Julia は、革新的で高速かつ快適な新しい高レベル動的プログラミング言語です。さまざまなアプリケーションを作成できる汎用言語です。パッケージのエコシステムと機能の大部分が高度な数値計算を対象としており、機械学習に最適であることは言及する価値があります。

Julia は、C や、Python、R、MATLAB などの高レベルの動的クラス言語を含む複数の言語で構築されています。 Julia は、これらの言語のオプションの型、構文、機能を利用します。Julia の目標は、それぞれの長所を組み合わせて短所を解消することであるためです。

なぜ Python に代わるものを急いで探す必要があるのでしょうか?

Julia の作成者は、科学技術コンピューティング、機械学習、データ マイニング、大規模な線形代数を C と同じくらい速く、分散並列で処理できる言語を開発したいと考えていました。コンピューティング。しかし、最終的にはより高速な言語を開発しました。 Python の速度は向上していますが、Julia のパフォーマンスは依然としてそれを上回っています。

Julia は、機械学習で使用される多くの数学表記を簡素化します。 ArrayFire などの多様な GPU プログラミング パッケージを提供し、GPU が汎用コードを実行できるようにします。各パッケージには独自のプログラミング モデルがあり、たとえば、NVIDIA には CUDA.Jl、AMD には AMDGPU.jl および oneAPI があります。

機械学習エンジニアは、MLBase.jl、Flux.jl (深層学習)、MLJ.j (一般的な機械学習)、Knet.jl (ディープラーニング)。 Flux は、Julia の機能を最大限に活用するための追加ツールがプリロードされた高速深層機械学習ライブラリです。同様に、ML アプリケーション用の ScikitLearn.jl、TensorFlow.jl、および MXNet.jl が含まれています。

ジュリアは複雑な計算問題を解くのが得意です。そのため、スタンフォード大学や首都大学東京など、多くの有名大学がJuliaコースを提供しています。パフォーマンスもPythonに比べて非常にしっかりしています。

(2)Scala

Logan Kilpatrick のような多くの業界幹部は、Julia が機械学習とデータ サイエンスの未来であると信じています。

Julia の主な機能:

  • Julia のコア機能のいくつかにより、効率的なデータ サイエンス計算が可能になります:
  • Julia の計算は高速です。 Python より 2 ~ 20 倍高速;
  • 柔軟で豊富なライブラリ関数;
  • 組み込みのパッケージ マネージャー;
  • PyCall および CCall パッケージは Python を直接呼び出します;
  • シェルのような機能を使用して他のプロセスを管理;
  • 並列および分散コンピューティング用に開発;
  • さまざまなパラメーター タイプに対して効率的なコードを自動的に生成;
  • MIT を搭載ライセンスを取得したフリーのオープンソース ソフトウェア。

Scala は、オブジェクト指向と関数型プログラミングの両方の手法をサポートする高水準プログラミング言語です。 Martin Odersky が作成し、2004 年 6 月に正式に発売されました。 Scala は開発者の間で人気が高まっており、今日のテクノロジーを飛び越えています。

Scala は、Java アプリケーションおよびライブラリと互換性のある Java 仮想マシン (JVM) 言語です。基本データの概念がないため、多くの場合静的言語とみなされます。そのマルチパラダイム、マルチコア アーキテクチャは複雑です。

ApacheSpark は、強力かつ高速なリアルタイム データ ストリーミングおよびデータ処理ツールです。 Scala Spark は、複雑なマッピング、ETL、および大規模なデータ処理タスクを容易にします。 Scala を使用すると、ユーザーはコードを理解することで新しい Spark 機能を実装できます。 Scala は Java と互換性があるため、プログラマはオブジェクト指向の概念を迅速に習得できます。

SparkMLlib には、Spark の高品質なアルゴリズムと優れたパフォーマンスが含まれており、スケーラブルな機械学習ライブラリとなっています。分類、回帰、クラスタリング、協調フィルタリング、次元削減はすべて、Spark の MLlib 機械学習ライブラリに含まれています。さらに、Breeze、Spire、Saddle、Scalalab などの ML ライブラリは、強力なデータ処理アプリケーションの作成に役立ちます。

ApacheKafka は、オープンソースの分散イベント ストリーミング プラットフォームであり、Python の人気に伴い、Spark も人気が高まっています。 Scala Spark で実行速度が遅いものは、必ず PySpark でクラッシュします。さらに、TensorFlow Scala ライブラリを使用して、機械学習モデル用の適応性のある高性能の提供システムを作成できます。

Scala の静的型付けにより、複雑なアプリケーションが容易になります。 JVM および JavaScript ランタイムにより、高性能システムがライブラリに簡単にアクセスできるようになります。さらに、そのパフォーマンスは Python よりも優れています。 Python と比較しても同様です。

Scala の主な機能

Scala のいくつかのコア機能により、効率的なデータ サイエンス計算が可能になります。

  • Scala は Python より 10 倍高速です。
  • 高度な型推論メカニズムを備えています;
  • ケース クラスとパターン マッチングを備えています;
  • 簡潔でありながら読みやすい表現力豊かな構文を備えています;
  • より高度な型推論メカニズムを備えています。順序関数;
  • 静的変数の代わりにシングルトン オブジェクトを使用する;
  • OOP、FP、または混合スタイル コードを使用する;
  • Scala ソース コードは「.class」ファイルにコンパイルされます。 JVM上で実行されます。

(3) MQL5

MQL5 は、高度なデータ分析と機械学習機能を提供する高度なオブジェクト指向プログラミング言語です。これは広く使用されているよく知られたプログラミング言語 C に基づいており、その速度と多用途性で知られています。

MQL5 は、Python、Julia、Scala のような日常的に使用される ML 言語ではありません。これは、金融商品を監視するために金融市場向けに特別に作成されました。この言語は本質的には他の言語に似ていますが、独自の機能を備えています。 MQL5 は、整数、ブール値、リテラル、文字列、日付、時刻、および列挙をサポートします。構造体とクラスの両方を複合データ型として定義します。

MQL5 言語ドキュメントには、関数、演算、予約語などがリストされています。さらに、整数、ブール値、リテラル、文字列、日付と時刻などのデータ型も提供します。複雑な構造とクラスがあります。さらに、ドキュメントには、取引戦略、コントロール パネル、カスタム視覚効果、ファイル アクセスなどのための標準ライブラリ クラス定義が含まれています。

さらに、MQL5 には、新しいアプリケーション開発用に 1,500 以上のソース コード ライブラリがあります。多数の数値解析関数を含む ALGLIB ライブラリを使用できます。同様に、時系列を処理するための TimeSeries ライブラリや、ファジィ モデルを開発するための Fuzzy ライブラリやその他のさまざまなライブラリがあります。

MQL5 は、リアルタイム システムの構築に役立ち、視覚的な意思決定支援を提供できる強力なプログラミング言語です。 MQL5 は列挙、構造、クラス、イベントをサポートします。主要な組み込み関数の数を増やすことにより、MQL5 プログラムは DLL と通信できるようになります。

MQL5 は C に似た構文を備えているため、さまざまなプログラミング言語で書かれたプログラムを MQL5 プログラムに簡単に変換できます。したがって、データ分析、人工知能、または金融ツールを取引ロボットとして使用すると、C と同じ効率を達成できます。

MQL5 の主な機能

MQL5 のいくつかのコア機能により、効率的なデータ サイエンス計算が可能になります。

  • MQL5 は、C に基づいています。したがって、C と同等、Python よりも高速です;
  • 金融市場のツールと分析のために特別に作成されました;
  • 完全なイベント駆動型;
  • 1500 を超えるソースコードライブラリ;
  • 標準定数と列挙を事前定義できます。情報を保存するサービス アーキテクチャ;
  • 配色の変更、コントロール パネルの作成、カスタム シンボルの追加、MQL5 プログラムからの価格チャートのエクスポート;
  • 12 個の新しい描画スタイル、512 個のバッファ、およびインデックス値の直接計算過去から未来へ;
  • チャートと複数通貨テスターで Forex Expert Advisor をデバッグします

4.あなた どの Python ML の代替案を選択すべきですか?

プログラミング言語はレーシングカーを運転するようなもので、ドライバーはもちろん、それに適した車が不可欠です。同様に、データ サイエンティストであるあなたは、これらのユニークなスポーツ カーのドライバーです。

すべてのデータ サイエンティストや開発者は、特定のテクノロジに対して独自の要件と仕様を持っています。最適なテクノロジーの選択は、必要な視野角と機能によって異なります。したがって、最終的な選択をするのは困難です。

マルチプロセス コンピューティングを実装し、非常に高いコンピューティング速度を必要とする場合は、Julia を選択できます。 3 つの中では最も速いです。一方、大規模なプロジェクトを実行している場合は、その仕事をこなす Scala の方が良い選択となるはずです。金融商品に興味がある場合は、MQL5 が最適な選択です。

同様に、各プログラミング言語には独自の特徴と専門分野があります。したがって、要件と仕様を満たす言語を選択することが最善です。

5.要約

機械学習は継続的かつ進化するプロセスです。時間が経つにつれて、標準化 ML (SML) 言語とともに登場し、Python で人気が高まりました。現在、機械学習言語はさまざまなニーズに合わせて多様に開発されています。

つまり、Python は優れた機械学習言語です。ただし、Python はデータ サイエンスに特化した言語ではなく、特定のタスクをより効率的に実行できる最新のプログラミング言語が存在します。

その結果、新興プログラミング言語が市場シェアを獲得し、機械学習の分野で成長しています。うまくいけば、これらも今後数年でさらに一般的になるでしょう。

元のリンク: https://hackernoon.com/not-only-python-problems-errors-and-alternatives

翻訳者の紹介

51CTO コミュニティ編集者である Liu Tao は、大規模な中央企業のシステムのオンライン検査と制御を担当しています。彼の主な責任は、オンラインでのシステムのスキャン漏れ、侵入テスト、ベースライン検査、その他の検査作業を厳密にレビューすることです。彼はネットワーク セキュリティ管理に長年の経験を持ち、PHP と Web の開発と防御、Linux の使用と管理の経験、コード監査、ネットワーク セキュリティ テスト、脅威マイニングの豊富な経験を持っています。 SQL 監査、SQLMAP 自動検出、XSS 監査、Metasploit 監査、CSRF 監査、Webshel​​l 監査、maltego 監査、および Kali に基づくその他のテクノロジーに精通しています。

以上がなぜ Python に代わるものを急いで探す必要があるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。