ど~も!データサイエンティストのえいせいです。
データサイエンスを勉強したい人におススメされるプログラミング言語と言えばpythonかRですよね?
でもどっちを学んでいったら良いのか分からない。そんな人も多いと思います。
そんな方に声を大にして言いたいのが、
データサイエンティストを目指すのならpythonです。
一番の理由としては、深層学習までやるならpython一強になりますし、データサイエンスを学ぶなら深層学習までは学習して欲しいという思いからです。
他にも、転職で有利だったり、文法のメリット、汎用性などもありますので、詳しく見ていきましょう。
pythonとRの概要
ではまずそれぞれの概要を見ていきましょう。
python概要
- 1991年に登場した汎用プログラミング言語
- 機械学習・深層学習に強い
- シンプルで読みやすい文法が特徴
- 豊富なライブラリがある
- Jupyter Notebookなどの開発環境が人気
こんな感じですね。
jupyter Notebookが出来てからはグッと使い勝手が上がった印象です。
R概要
- 1993年に登場した統計解析向けプログラミング言語
- 統計解析に特化しており、豊富な統計関数が利用可能
- データの可視化が容易である
- RStudioなどの開発環境が人気
pythonよりも2年遅れで登場しました。
どちらかと言うと、サクッと統計結果を見たい時や可視化に強いです。
pythonの方が機械学習・深層学習に強い
やはり個人的に一番の押しポイントがここです!
Rでも機械学習までは何とか出来ますが、深層学習で使えるライブラリが無いので、そこで圧倒的な差が出来てしまっています。
それぞれのライブラリ一覧です。
pythonの機械学習ライブラリ
- scikit-learn: Pythonの最も人気のある機械学習ライブラリの一つで、様々な機械学習タスクをサポートしています。
- TensorFlow: Googleが開発したオープンソースの機械学習フレームワークで、ニューラルネットワークを中心にした機械学習タスクをサポートしています。
- PyTorch: Facebookが開発したオープンソースの機械学習フレームワークで、TensorFlowと同様にニューラルネットワークを中心にした機械学習タスクをサポートしています。
- Keras: TensorFlowと統合された高レベルのニューラルネットワークライブラリで、深層学習の実装を簡単に行うことができます。
この様な物がありますね、ただTensorFlowは年々利用者が減ってきているので、今から勉強するならPyTorchの方がおススメですね。
また個人的に良く使っており、サクッと画像処理系が出来るOpenCVなどもあります。
Rの機械学習ライブラリ
- caret: Rの最も人気のある機械学習ライブラリの一つで、様々な機械学習タスクをサポートしています。
- mlr: caretと同様に様々な機械学習タスクをサポートしていますが、より柔軟なワークフローを提供しています。
- randomForest: ランダムフォレストアルゴリズムを実装したライブラリで、分類や回帰の問題に適用されます。
- xgboost: Gradient Boostingアルゴリズムを実装したライブラリで、高い精度を得ることができます。
機械学習用のライブラリはありますが、深層学習だと皆無なのが現状です。
pythonだとweb開発も出来る
pythonを進める理由として忘れられない点ですね。
Rは基本的には統計解析のみの用途ですが、pythonだとより幅広い事もできます。
PythonはWeb開発にも利用でき、多数のフレームワークがあります。
フレームワークを使用することで、より簡単にWebアプリケーションの開発を行うことができます
pythonの代表的なフレームワーク
代表的なものとして、以下の2つがあります。
- Flask
- Django
Flaskは、シンプルで軽量なWebフレームワークであり、柔軟に開発ができます。
また、Djangoは、豊富な機能を備えたWebフレームワークで、大規模なWebアプリケーションの開発に適しています。
このように、データサイエンスから発展して、web開発をやってみたくなった時に移行しやすいです。
またデータ分析のアルゴリズムを開発して、ユーザーに使ってもらう際にwebでのインターフェイスを作りやすいってのも大きな魅力です。
pythonの方が処理が早い
比較的pythonの方がデータの処理が早いです。
少ないデータ量だとあまり関係ありませんが、データサイエンティストとして、何十万ものレコードがあるデータを扱ったりする場合には早い方が有利です。
例えば、1から10000までの整数を順に足し合わせる処理を行い、どれくらい時間が掛かったのかを取得してみましょう。
pythonでの処理時間
以下のコードを実行してみます。
1 2 3 4 5 6 7 8 9 10 11 |
import time start_time = time.time() sum = 0 for i in range(1, 10001): sum += i end_time = time.time() print("処理時間:{:.3f}秒".format(end_time - start_time)) |
->処理時間:0.002秒
Rでの処理時間
1 2 3 4 5 6 7 8 9 10 |
start_time <- Sys.time() for (i in 1:10000) { # 処理したいコードをここに書く } end_time <- Sys.time() elapsed_time <- end_time - start_time print(paste0("処理時間: ", as.numeric(elapsed_time, units = "secs"), " seconds")) |
->“処理時間: 0.00759172439575195 seconds”
この様な結果になりました。
pythonですと、0.002秒のところRでは0.007秒掛かっています。
約3倍以上違うのでなかなか無視できない結果ですね。
もちろん使用ライブラリによっても変わってきますが、基本的にはpythonの方が早く動く事が多いのもメリットですね。
pythonの方が転職で有利
この点を一番気にしている人も多いでしょう。
正直なところ、、
圧倒的にpythonの方が人気です。
求人要項などを見ても、pythonの方が多く、Rを可としている所は正直少ないです。
また企業から見ると以下の様なメリットがあります。
- 利用者が多いのでチームで統一性がとれる
- pythonはデータ分析、機械学習、Web開発だけでなく、自然言語処理やIoT、クラウドコンピューティングなどの分野でも使用される
- 比較的学習コストが低いので、社内教育もやりやすい
- 発展性がある
この様な理由から転職する際にもpythonの方が有利です。
特に大企業でもpythonが使われている事が多いです。
Google、Netflix、Instagram、Spotify、Uberなどの企業は、Pythonを採用しており、大企業で使われれば中小企業にもより波及していくでしょう。
このように、利用者もどんどん増加傾向にあるpythonですので、将来的にも安心でしょう。
pythonの将来性
Pythonの将来性は非常に高いと言われています。以下はその理由の一部です。
- コミュニティの拡大: Pythonは世界中の開発者から愛され、巨大なオープンソースコミュニティを持っています。このコミュニティは、新しいライブラリやフレームワークを作成し、Pythonの機能を拡張するために重要な役割を果たしています。
- データサイエンスと人工知能分野での使用拡大: Pythonはデータサイエンス、機械学習、人工知能分野で広く使用されています。またChat GptなどのAIの開発でも使われています。
- 教育での使用拡大: Pythonは、コードが読みやすく理解しやすいという特徴があります。そのため、多くの教育機関で授業に使用されるようになってきています。
ちょっと前までだと大学時代はRを学んでいたという人もいましたが、最近はあまり聞かなくなりました。
まとめ
データサイエンティストを目指すならpythonとRのどちらが良いのか?と言うテーマでしたが、終始python押しでしたね!(R民から石が飛んできそうですww)
主なメリットとしては、
- 機械学習・深層学習に強い
- web開発も出来る
- 処理が高速
- 転職に有利
- 将来性がある
このようなメリットがあります。
是非、あなたもpythonを学んでみてください。
初心者の方には下記の講義がわかりやすく解説してあるのでおススメです。
「Pythonで始めるデータ分析:初心者のための完全ガイド」