学術目的で機械学習アプリケーションを開発し始めたところです。私は現在Rを使用しており、Rで自分を訓練しています。しかし、多くの場所で、Pythonを使用している人を見てきました。
学界や産業界で人々は何を使用していますか?また、推奨事項は何ですか?
学術目的で機械学習アプリケーションを開発し始めたところです。私は現在Rを使用しており、Rで自分を訓練しています。しかし、多くの場所で、Pythonを使用している人を見てきました。
学界や産業界で人々は何を使用していますか?また、推奨事項は何ですか?
回答:
RまたはPythonを相互に選択する場合に考慮すべきいくつかの実際に重要な違い:
したがって、どちらの言語も同等に優れています。したがって、ドメインと作業場所に応じて、適切な言語を賢く選択する必要があります。テクノロジーの世界では通常、単一の言語を使用することを好みます。ビジネスユーザー(マーケティング分析、小売分析)は通常、Rのような統計プログラミング言語を使用します。なぜなら、彼らは頻繁に迅速なプロトタイピングを行い、視覚化を構築するからです(PythonよりもRの方が高速です)。
「pythonの方が優れている」または「Rはxよりもはるかに優れている」というようなものはありません。
私が知っている唯一の事実は、それが彼らが大学で学んだことであるので、人々の多くがPythonに固執するということです。Pythonコミュニティは本当に活発で、MLやデータマイニングなどのための優れたフレームワークがいくつかあります。
しかし、正直に言うと、優れたCプログラマーが得られれば、Pythonやrで人々がやるのと同じことができ、優れたJavaプログラマーが得られれば、Javaですべてを(ほぼ)行うことができます。
だからあなたが慣れている言語に固執するだけです。
いくつかの追加の考え。
プログラミング言語「それ自体」は単なるツールです。すべての言語は、ある種の構造を他の構造よりも簡単に構築できるように設計されています。また、プログラミング言語の知識と習熟は、他の言語に比べてその言語の機能よりも重要かつ効果的です。
私が見る限り、この質問には2つの側面があります。最初の次元は、概念またはモデルの検証を迅速に探索し、構築し、最終的には何が起こっているかを調査するのに十分なツール(統計テスト、グラフィックス、測定ツールなど)を手に入れる能力です。この種の活動は、通常、研究者やデータ科学者に好まれています(それが何を意味するのか、私はいつも疑問に思っていますが、私はこの用語をその緩い定義に使用しています)。彼らは、証明または議論に使用できる、よく知られ検証された機器に依存する傾向があります。
2番目の次元は、ツール、アルゴリズム、モデルを拡張、変更、改善、さらには作成する能力です。それを実現するには、適切なプログラミング言語が必要です。ほぼすべてが同じです。会社で働く場合、会社のインフラストラクチャ、内部文化に大きく依存するよりも、選択肢が大幅に少なくなります。また、本番用のアルゴリズムを実装する場合は、実装を信頼する必要があります。そして、あなたが習得していない別の言語で実装しても、あまり役に立ちません。
私は最初のタイプの活動であるRエコシステムを好む傾向があります。素晴らしいコミュニティ、膨大なツールセット、これらのツールが期待どおりに機能することの証明があります。また、信頼できる候補であるPython、Octave(数例を挙げると)を検討することもできます。
2番目のタスクでは、あなたが本当に欲しいものを前に考えなければなりません。堅牢な製品対応ツールが必要な場合は、C / C ++、Java、C#が最適な候補です。Pythonは、Scalaや友人とともに、このカテゴリの2番目の市民と考えています。私は炎戦争を始めたくありません、それは私の意見です。しかし、開発者として17年以上経った後、私はあなたが考えるあらゆることをする自由よりも、厳密な契約と私の知識を好む傾向があります(多くの動的言語で起こるように)。
個人的に、私はできるだけ多くを学びたいです。私はハードな方法を選択する必要があると決めました。つまり、すべてをゼロから実装するということです。Rをモデルおよびインスピレーションとして使用します。図書館には大きな宝があり、多くの経験が蓄積されています。しかし、プログラミング言語としてのRは私にとって悪夢です。そこで、Javaを使用し、追加のライブラリを使用しないことにしました。それは私の経験のためだけで、他には何もありません。
時間がある場合、できることは、これらすべてのことに時間を費やすことです。このようにして、あなたは自分に合った可能な限り最高の答えを自分で獲得するでしょう。ダイクストラはかつて、ツールがあなたの考え方に影響を与えると言ったので、あなたがあなたのツールを知ってから、彼らがあなたの考え方をモデル化することをお勧めします。それについては、The Humble Programmerという有名な論文で詳しく読むことができます。
私は他の人が今まで言ったことに追加します。1つの言語が他の言語より優れているという単一の答えはありません。
そうは言っても、Rにはデータ探索と学習のためのより良いコミュニティがあります。広範な視覚化機能を備えています。一方、Pythonは、パンダの導入以来、データ処理が向上しています。Pythonは、R(Rは低レベル言語)と比較して、学習および開発時間は非常に短くなっています。
最終的には、あなたがいるエコシステムと個人的な好みに帰着すると思います。詳細については、こちらの比較をご覧ください。
すべてのデータ関連の問題を解決するために使用できる特効薬の言語はありません。言語の選択は、問題のコンテキスト、データのサイズに依存し、職場で作業している場合は、使用するものに固執する必要があります。
個人的には、視覚化ライブラリとインタラクティブなスタイルのため、PythonよりもRを頻繁に使用しています。しかし、より多くのパフォーマンスや構造化コードが必要な場合は、SciKit-Learn、numpy、scipyなどの最高のライブラリがあるので、間違いなくPythonを使用します。プロジェクトではRとPythonの両方を交換可能に使用します。
したがって、データサイエンスの仕事に取り掛かる場合は、両方を学ぶことをお勧めします。PythonもRと同様のインターフェースをPandasで提供しているため、難しくありません。
より大きなデータセットを扱う必要がある場合、Javaで構築されたエコシステム(Hadoop、Pig、Hbaseなど)をエスケープすることはできません。
他のすべての回答が対処できない問題は、ライセンスです。
前述の素晴らしいRライブラリのほとんどはGPL(例えばggplot2、data.table)です。これにより、独自の形式でソフトウェアを配布できなくなります。
これらのライブラリの多くの使用法はソフトウェアの配布を意味しませんが(たとえば、モデルをオフラインでトレーニングするため)、GPL自体はそれらを使用することから企業を誘います。少なくとも私の経験では。
一方、Python領域では、ほとんどのライブラリには、BSDやMITなどのビジネス向けの配布ライセンスがあります。
学界では、ライセンスの問題は通常、問題ではありません。
提供されたコメントに追加することはあまりありません。唯一のことは、データサイエンスの目的でRとPythonを比較するこのインフォグラフィックhttp://blog.datacamp.com/r-or-python-for-data-analysis/
Rに直面した本当の課題の1つは、さまざまなバージョンと互換性のあるさまざまなパッケージです。.Rの最新バージョンでは、かなり多くのRパッケージを利用できません。版..
私はRを試していません(まあ、少しですが、良い比較をするのに十分ではありません)。ただし、Pythonの長所のいくつかを次に示します。
element in a_list
、for element in sequence
、matrix_a * matrix_b
(行列の乗算用)、...R:Rは対応するオープンソースです。これは伝統的に学者や研究で使用されてきました。オープンソースの性質のため、最新の技術はすぐにリリースされます。インターネットを介して利用可能な多くのドキュメントがあり、それは非常に費用対効果の高いオプションです。Python:オープンソースのスクリプト言語としての起源により、Pythonの使用は時間とともに増加しました。今日では、ライブラリ(numpy、scipy、matplotlib)と、実行したいほぼすべての統計演算/モデル構築のための機能を備えています。パンダの導入以来、構造化データの操作で非常に強力になりました。
Pythonコード
sklearn import linear_modelから
x_train = input_variables_values_training_datasets y_train = target_variables_values_training_datasets x_test = input_variables_values_test_datasets
linear = linear_model.LinearRegression()
linear.fit(x_train、y_train)linear.score(x_train、y_train)
print( 'Coefficient:\ n'、linear.coef_)print( 'Intercept:\ n'、linear.intercept_)
predicted = linear.predict(x_test)Rコード
x_train <-input_variables_values_training_datasets y_train <-target_variables_values_training_datasets x_test <-input_variables_values_test_datasets x <-cbind(x_train、y_train)
線形<-lm(y_train〜。、data = x)summary(linear)
予測= predict(linear、x_test)
Pythonには、SPSSとSASに変換するポイントクリックGUIがありません。それらをいじるのは本当に楽しいです。