Là một chuyển đổi từ R sang Python có giá trị nó? [đóng cửa]


31

Tôi vừa hoàn thành chương trình thạc sĩ Khoa học dữ liệu 1 năm nơi chúng tôi được dạy R. Tôi thấy rằng Python phổ biến hơn và có cộng đồng lớn hơn trong AI.

Có đáng để ai đó ở vị trí của tôi chuyển sang Python và nếu có, tại sao không? Python có bất kỳ tính năng thay đổi trò chơi nào không có sẵn trong R hay đó chỉ là vấn đề của cộng đồng?


2
Đó có phải là một khóa học tại một trường cao đẳng công lập, một trường đại học tư nhân hoặc trong hệ thống giáo dục của công ty?
Manuel Rodriguez

12
Bạn không thể tự chuyển sang Python. Bạn không nói về một dự án bạn đã viết trong R và muốn chuyển nó sang Python, bạn chỉ đơn giản là hỏi về việc học Python (không quên R). Có đáng để học Python không? Nowdays nó là hầu như không thể không tìm hiểu Python nếu bạn làm việc với bất cứ điều gì liên quan đến dữ liệu xử lý với một máy tính ...
lvella

1
Tôi không chắc tại sao điều này không đóng cửa như ý kiến, nhưng tôi rất vui.
Evorlor

1
@Evorlor Xem câu trả lời của tôi, trong đó thực sự nêu câu hỏi này cũng sẽ dẫn đến câu trả lời chủ yếu dựa trên ý kiến. Hơn nữa, tôi đã bỏ phiếu để đóng câu hỏi này với tư cách chủ yếu dựa trên ý kiến, mặc dù tôi cũng đã đưa ra câu trả lời. Trong trang web này, có rất nhiều câu hỏi thuộc loại này. Tôi không chắc chắn nữa liệu đây có phải là một điều tốt hay không, nhưng câu trả lời hiện tại cho câu hỏi này đã hữu ích cho rất nhiều người.
nbro

2
Làm thế nào là điều này không đóng cửa ?? Đây là một câu hỏi dựa trên ý kiến ​​kinh điển.
spacetyper

Câu trả lời:


60

Tôi muốn điều chỉnh lại câu hỏi của bạn.

Đừng nghĩ về việc chuyển đổi, hãy nghĩ về việc thêm.

Trong khoa học dữ liệu, bạn sẽ có thể đi rất xa với cả trăn hoặc r nhưng bạn sẽ đi xa nhất với cả hai.

Python và r tích hợp rất tốt, nhờ reticulategói. Tôi thường dọn dẹp dữ liệu trong r vì nó dễ dàng hơn cho tôi, huấn luyện một mô hình về trăn để hưởng lợi từ tốc độ vượt trội và hình dung ra kết quả trong r đẹpggplot trong một cuốn sổ tay!

Nếu bạn đã biết r không có ý nghĩa gì trong việc từ bỏ nó, hãy sử dụng nó ở nơi hợp lý và dễ dàng với bạn. Nhưng đó là một ý tưởng tốt để thêm python cho nhiều mục đích sử dụng.

Một khi bạn cảm thấy thoải mái trong cả hai bạn sẽ có một quy trình làm việc phù hợp với bạn nhất bằng ngôn ngữ yêu thích của bạn.


Tôi hoàn toàn đồng ý về quan điểm của bạn. Chỉ cần thêm nó và cố gắng không từ bỏ bộ kỹ năng R của bạn.
Jens Kohl

3
upvote cho reticulate. rstudio thậm chí còn có một số hỗ trợ để kiểm tra trăn và đang trong quá trình bổ sung thêm
blues

Vấn đề duy nhất với việc sử dụng cả hai là bạn khiến mọi người khác xuôi dòng phụ thuộc vào việc có R và Python nữa. Mặc dù tôi đồng ý về việc "thêm" vào bộ kỹ năng của bạn - tôi vẫn sẽ giữ mọi thứ thuần túy khi viết kịch bản!
PascalVKooten

reticulatecho phép R sử dụng Python; tương tự, rpy2cho phép Python sử dụng R. Nó phổ biến cho các ngôn ngữ lập trình có mục đích tương tự để có một số cách để nói chuyện với nhau.
JG

Chính xác. Đừng giao dịch trong công cụ của bạn, nhưng thêm một công cụ vào vành đai của bạn. Bây giờ bạn có nhiều công cụ hơn, cho phép bạn giải quyết nhiều vấn đề hơn một cách tốt hơn.
Cột

28

Tất nhiên, loại câu hỏi này cũng sẽ dẫn đến câu trả lời chủ yếu dựa trên ý kiến. Tuy nhiên, có thể liệt kê các điểm mạnh và điểm yếu của từng ngôn ngữ, liên quan đến học máy, thống kê và các nhiệm vụ phân tích dữ liệu, mà tôi sẽ cố gắng liệt kê dưới đây.

R

Điểm mạnh

  • R được thiết kế và phát triển cho các nhà thống kê và phân tích dữ liệu, do đó, nó cung cấp, ngoài luồng (nghĩa là chúng là một phần của ngôn ngữ), các tính năng và phương tiện cho các nhà thống kê, không có sẵn trong Python, trừ khi bạn cài đặt một gói liên quan. Ví dụ: khung dữ liệu mà Python không cung cấp, trừ khi bạn cài đặt pandasgói Python nổi tiếng . Có các ví dụ khác như ma trận, vectơ, v.v. Trong Python, cũng có các cấu trúc dữ liệu tương tự, nhưng chúng chung chung hơn, do đó không được nhắm mục tiêu cụ thể cho các nhà thống kê.

  • Có rất nhiều thư viện thống kê.

Yếu đuối

Con trăn

Điểm mạnh

  • Rất nhiều người và công ty, bao gồm Google và Facebook, đầu tư rất nhiều vào Python. Ví dụ, ngôn ngữ lập trình chính của TensorFlow và PyTorch (hai khung công tác máy học được sử dụng rộng rãi) là Python. Vì vậy, rất khó có khả năng Python sẽ không tiếp tục được sử dụng rộng rãi trong học máy trong ít nhất 5-10 năm nữa.

  • Cộng đồng Python có khả năng lớn hơn nhiều so với cộng đồng R. Trong thực tế, ví dụ, nếu bạn nhìn vào chỉ mục của Tiobe , Python được đặt thứ 3, trong khi R được đặt thứ 20.

  • Python cũng được sử dụng rộng rãi ngoài các cộng đồng thống kê hoặc máy học. Ví dụ, nó được sử dụng để phát triển web (xem ví dụ khung Python Django hoặc Flask).

  • Có rất nhiều thư viện máy học (ví dụ: TensorFlow và PyTorch).

Yếu đuối

  • Nó không cung cấp các chức năng phân tích dữ liệu và thống kê mà R cung cấp, trừ khi bạn cài đặt một gói thích hợp. Đây có thể là một điểm yếu hoặc một điểm mạnh, tùy thuộc vào quan điểm triết học của bạn.

Có những lợi thế và bất lợi khác của các ngôn ngữ này. Ví dụ, cả hai ngôn ngữ là động. Tuy nhiên, tính năng này có thể vừa là ưu điểm vừa là nhược điểm (và nó không liên quan chặt chẽ đến học máy hoặc thống kê), vì vậy tôi không liệt kê nó ở trên. Tôi tránh đề cập đến các tính năng ngôn ngữ gây tranh cãi, chẳng hạn như khả năng đọc mã và đường cong học tập, vì những lý do rõ ràng (ví dụ: không phải tất cả mọi người đều có cùng trải nghiệm lập trình).

Phần kết luận

Python chắc chắn đáng để học nếu bạn đang học máy hoặc thống kê. Tuy nhiên, điều đó không có nghĩa là bạn sẽ không sử dụng R nữa. R vẫn có thể xử lý một số nhiệm vụ nhất định.


3
Có vẻ như bộ tính năng "ngoài luồng" không liên quan. Điều liên quan là sự sẵn có của các gói làm những gì bạn muốn, phải không?
Dean MacGregor

1
@DeanMacGregor Nếu bạn không có quyền truy cập internet, tính năng này có liên quan! Hơn nữa, nếu một ngôn ngữ lập trình đã cung cấp một tính năng vượt trội, bạn không phải mất thời gian tìm kiếm nó.
nbro

Xem xét Python bị ảnh hưởng nặng nề vì 'bao gồm pin', điểm yếu của nó không phải là vấn đề bạn thường gặp. Đặc biệt kể từ khi có cài đặt Python sử dụng mà làm đã phần mềm thống kê bao gồm. Đối với khoa học dữ liệu nói riêng, Anaconda khá phổ biến và giải quyết mối quan tâm trước mắt của bạn.
Cột

6

Tôi không có lựa chọn này vì tôi buộc phải chuyển từ R sang Python:

Nó phụ thuộc vào môi trường của bạn : Khi bạn được nhúng vào một kỹ sư bộ phận , nhóm kỹ thuật làm việc hoặc một cái gì đó tương tự như Python là khả thi hơn.

Khi bạn được bao quanh bởi các nhà khoa học và đặc biệt là các nhà thống kê , hãy ở lại với R.

PS: R cũng cung cấp máy ảnh và dòng chảy căng thẳng mặc dù nó được thực hiện dưới vỏ bọc của con trăn. Chỉ những thứ rất tiên tiến mới khiến bạn cần Python. Mặc dù tôi ngày càng quen với Python hơn, nhưng synthax trong R thì dễ dàng hơn . Và mặc dù mỗi gói có một cái riêng, nhưng nó không nhất quán trong khi Python thì không .. Và ggplot rất mạnh. Python có một bản sao (cốt truyện) nhưng nó thiếu một số tính năng (quan trọng). Về nguyên tắc, bạn có thể làm gần như bằng R nhưng đặc biệt là trực quan hóa và sắp xếp dữ liệu dễ dàng hơn nhiều trong R. Do đó, thư viện Python nổi tiếng nhất, gấu trúc, là một bản sao của R.

PSS: Số liệu thống kê nâng cao nhắm mục tiêu chắc chắn vào R. Python cung cấp rất nhiều công cụ và phương pháp hàng ngày cho một nhà khoa học dữ liệu nhưng nó sẽ không bao giờ đạt được> 13.000 gói mà R cung cấp. Ví dụ, tôi đã phải thực hiện một hồi quy ngược và python không cung cấp điều này. Trong R, bạn có thể chọn giữa một số bài kiểm tra độ tin cậy và cho dù đó là tuyến tính hay phi tuyến. Điều tương tự cũng xảy ra với các mô hình hỗn hợp: Nó được triển khai trên python nhưng nó rất cơ bản ở đó tôi không thể nhận ra làm thế nào điều này có thể đủ cho một ai đó.


4

Tôi sẽ nói có. Python tốt hơn R cho hầu hết các tác vụ, nhưng R có sở trường của nó và bạn vẫn muốn sử dụng nó trong nhiều trường hợp.

Ngoài ra, học một ngôn ngữ thứ hai sẽ cải thiện kỹ năng lập trình của bạn.

Quan điểm của riêng tôi về những điểm mạnh của R vs Python là tôi thích R cho một chương trình nhỏ, đơn mục đích liên quan đến các bảng hoặc biểu đồ hoặc công việc khám phá trong cùng một hướng. Tôi thích Python hơn mọi thứ khác.

  • R thực sự tốt cho việc nghiền bảng. Nếu hầu hết những gì một chương trình cụ thể sẽ làm là đưa một số bảng thành các hình dạng khác nhau, thì R là thứ cần chọn. Python có các công cụ cho việc này, nhưng R được thiết kế cho nó và làm nó tốt hơn.
  • Thật đáng để chuyển sang R bất cứ khi nào bạn cần tạo biểu đồ, bởi vì ggplot2 là một kiệt tác về khả năng sử dụng API và matplotlib là một nỗi kinh hoàng thu thập dữ liệu.
  • Python được thiết kế tốt cho lập trình mục đích chung. Nó có một tập hợp được thiết kế rất tốt về cấu trúc dữ liệu tiêu chuẩn, thư viện chuẩn và các câu lệnh điều khiển.
  • R không phù hợp cho lập trình mục đích chung. Nó không xử lý tốt dữ liệu có cấu trúc cây hoặc cấu trúc đồ thị. Nó có một số quy tắc (như có thể xem xét và sửa đổi phạm vi cha mẹ của bạn) ngay lập tức thuận tiện, nhưng khi được sử dụng dẫn đến các chương trình khó phát triển, sửa đổi hoặc soạn thảo.
  • R cũng có một số điều xấu thẳng thắn trong đó. Đây hầu hết chỉ là phần còn lại trong lịch sử như ba hệ thống đối tượng khác nhau.

Để giải thích rõ hơn về điểm cuối cùng: lập trình máy tính được thực hiện tốt là lego nơi bạn tạo ra các viên gạch của riêng mình (các chức năng và mô-đun).

Các chương trình thường được sửa đổi và chuyển tiếp qua thiết kế ban đầu của chúng. Khi bạn xây dựng chúng, sẽ rất hữu ích khi nghĩ về phần nào có thể được sử dụng lại và xây dựng phần đó theo cách chung sẽ cho phép chúng cắm vào các viên gạch khác.

R khuyến khích bạn làm tan chảy tất cả các viên gạch với nhau.


1

Như những người khác đã nói, nó không phải là một "công tắc". Nhưng nó có đáng để thêm Python vào kho vũ khí của bạn không? Tôi chắc chắn sẽ nói. Trong khoa học dữ liệu, Python là phổ biến và trở nên phổ biến hơn bao giờ hết, trong khi R đang lùi dần. Và trong các lĩnh vực học máy và mạng lưới thần kinh, tôi muốn nói rằng Python là ngôn ngữ chính hiện nay - tôi không nghĩ R thực sự đến gần ở đây về mặt sử dụng. Lý do cho tất cả điều này là tổng quát. Python được dự định là ngôn ngữ lập trình chung và cho phép bạn dễ dàng viết kịch bản tất cả các loại tác vụ. Nếu bạn sống nghiêm túc trong một thế giới thống kê có cấu trúc gọn gàng, R rất tuyệt, nhưng với AI, bạn thường phải làm những điều mới lạ, linh tinh và tôi không nghĩ R có thể đánh bại Python ở đó. Và vì điều này,


0

Đây hoàn toàn là ý kiến ​​cá nhân của tôi.

Tôi đọc trong văn phòng của mình (tại một công trường xây dựng) rằng "Có một công cụ phù hợp cho mọi nhiệm vụ."

Tôi hy vọng tôi sẽ đối mặt với một loạt các nhiệm vụ, như một lập trình viên. Tôi muốn càng nhiều công cụ càng tốt để "mua hoặc đầu tư", càng tốt. Một ngày nào đó một công cụ sẽ giúp tôi giải quyết nó, một ngày khác một số công cụ khác. R (để thống kê) và Python (nói chung) là hai công cụ tôi chắc chắn muốn với tôi và tôi nghĩ rằng nó đáng để đầu tư cho tôi.

Theo như chuyển đổi, tôi sẽ sử dụng công cụ hiệu quả nhất mà tôi biết (trong đó hiệu quả được đo lường theo yêu cầu của khách hàng, đầu tư thời gian và chi phí và dễ dàng mã hóa). Càng biết nhiều công cụ, càng tốt! Tất nhiên có một giới hạn thực tế cho nó.

Tất cả điều này là ý kiến ​​cá nhân của tôi và không nhất thiết phải đúng.


0

Có vẻ như bạn đã đầu tư 1 năm cho khoa học dữ liệu với R và nhúng vào môi trường R, nhưng muốn khám phá python cho khoa học dữ liệu.

Trước tiên hãy tìm hiểu những điều cơ bản của con trăn như cách danh sách và bộ dữ liệu hoạt động và cách các lớp và đối tượng hoạt động.

Sau đó trở nên bẩn thỉu với một số thư viện như gấu trúc matplotlib. Tìm hiểu tenorflow hoặc máy ảnh và sau đó đi cho khoa học dữ liệu.


-1

Người đuổi theo hai con thỏ cũng không bắt được.

Và vâng, Python phổ biến hơn. Tôi làm việc trong cả hai nhưng, nói về kinh doanh, thật dễ dàng tìm được một công việc trên Python hơn ở R.

Vì vậy, bạn có thể:

  • Chọn Python vì nó phổ biến hơn. Tuy nhiên, bạn phải bắt đầu từ đầu.

Hoặc là

  • Ở lại với R, sau tất cả, bạn có một năm đào tạo với R. Nhưng nó không phổ biến.

Gợi ý ở đây rằng việc học một ngôn ngữ lập trình bổ sung bằng cách nào đó sẽ khiến bạn trở nên tồi tệ hơn là vô nghĩa. Học các ngôn ngữ lập trình bổ sung, đặc biệt là những ngôn ngữ không quen thuộc, sẽ luôn cải thiện kỹ năng của bạn như một lập trình viên trong bất kỳ ngôn ngữ nào.
Will Da Silva
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.