R so với Python: Ngôn ngữ lập trình nào tốt hơn cho khoa học dữ liệu?

0
254

            Cuộc tranh luận giữa Python và R gây phẫn nộ trong cộng đồng nhà khoa học dữ liệu, đây là cách hai ngôn ngữ mã hóa khớp với nhau.
        

            
                                                                             
            
            

                 ] ]
    

     Bằng cấp khoa học dữ liệu có đáng không?
     Các nhà khoa học dữ liệu đang có nhu cầu, nhưng bằng thạc sĩ trong lĩnh vực này có thể không mở ra nhiều cánh cửa như bạn nghĩ.
    

    

Python vs R là một cuộc tranh luận phổ biến giữa các nhà khoa học dữ liệu, vì cả hai ngôn ngữ đều hữu ích cho công việc dữ liệu và trong số các kỹ năng được đề cập thường xuyên nhất trong các bài đăng công việc cho các vị trí khoa học dữ liệu. Mỗi ngôn ngữ cung cấp những lợi thế và bất lợi khác nhau cho công việc khoa học dữ liệu và nên được chọn tùy thuộc vào công việc bạn đang làm.

    
        

Để giúp các nhà khoa học dữ liệu chọn ngôn ngữ phù hợp, Norm Matloff, giáo sư khoa học máy tính tại Đại học California Davis đã viết một bài đăng trên Github nhằm làm sáng tỏ cuộc tranh luận.

XEM: Bắt đầu với Python: Danh sách các tài nguyên miễn phí (TechRepublic)

Matloff so với R trong 10 lĩnh vực sau đây để xác định ngôn ngữ lập trình nào là lựa chọn tốt hơn:

Elegance

Mặc dù điều này là chủ quan, Python làm giảm đáng kể việc sử dụng dấu ngoặc đơn và dấu ngoặc khi mã hóa , làm cho nó bóng bẩy hơn, Matloff đã viết trong bài đăng.

Đường cong học tập

Trong khi các nhà khoa học dữ liệu làm việc với Python phải học nhiều tài liệu để bắt đầu, bao gồm NumPy, Pandas và matplotlib, các loại ma trận và đồ họa cơ bản đã được tích hợp vào cơ sở R, Matloff đã viết.

Với R, "người mới có thể thực hiện các phân tích dữ liệu đơn giản trong vòng vài phút," ông nói thêm. "Các thư viện Python có thể khó cấu hình, ngay cả đối với những người am hiểu hệ thống, trong khi hầu hết các gói R chạy ngay ra khỏi hộp."

Các thư viện có sẵn

Python Gói chỉ số (PyPI) có hơn 183.000 gói, trong khi Mạng lưu trữ toàn diện R (CRAN) có hơn 12.000 gói. Tuy nhiên, PyPI khá mỏng về khoa học dữ liệu, Matloff viết.

"Ví dụ, tôi đã từng cần mã để tính toán nhanh các hàng xóm gần nhất của một điểm dữ liệu nhất định. (KHÔNG sử dụng mã đó để thực hiện phân loại.)" Matloff viết. "Tôi đã có thể ngay lập tức tìm thấy không phải một mà là hai gói để làm điều này. Ngược lại, vừa nãy tôi đã cố gắng tìm mã hàng xóm gần nhất cho Python và ít nhất là với tìm kiếm chữ thảo của tôi, đã ra về tay không, chỉ có một triển khai tự mô tả là đơn giản và dễ hiểu, không có gì nhanh cả. "

Khi bạn tìm kiếm các thuật ngữ sau trên PyPI, không có gì xuất hiện, Matloff đã thêm: mô hình log-linear; Hồi quy Poisson; biến công cụ; dữ liệu không gian; tỷ lệ lỗi gia đình.

XEM: Sáu ngôn ngữ lập trình theo yêu cầu: bắt đầu (PDF miễn phí) (TechRepublic)

Sự phát triển ồ ạt của Python trong những năm gần đây được thúc đẩy một phần nhờ sự phát triển của máy học và trí tuệ nhân tạo (AI). Trong khi Python cung cấp một số thư viện được tinh chỉnh để nhận dạng hình ảnh, chẳng hạn như AlexNet, các phiên bản R cũng có thể dễ dàng được phát triển, Matloff viết.

"Sức mạnh của các thư viện Python đến từ việc thiết lập các ops làm mịn hình ảnh nhất định, có thể dễ dàng thực hiện trong trình bao bọc R của Keras, và về vấn đề đó, có thể phát triển một phiên bản R thuần túy của TensorFlow", Matloff viết . "Trong khi đó, tôi sẽ khẳng định rằng tính sẵn có của gói R cho các khu rừng ngẫu nhiên và tăng cường độ dốc là rất nổi bật."

Tính chính xác về mặt thống kê

Các chuyên gia làm việc trong máy học, những người ủng hộ Python đôi khi hiểu biết kém về vấn đề thống kê liên quan, Matloff đã viết. R, mặt khác, được viết bởi các nhà thống kê, cho các nhà thống kê, ông nói thêm.

Tính toán song song

Các phiên bản cơ sở của R và Python không hỗ trợ mạnh mẽ cho tính toán đa lõi, Matloff viết. Gói đa xử lý của Python không phải là giải pháp tốt cho các vấn đề khác của nó và gói song song của R cũng không phải, ông nói thêm.

"Các thư viện bên ngoài hỗ trợ tính toán cụm đều ổn ở cả hai ngôn ngữ", Matloff viết. "Hiện tại Python có giao diện tốt hơn với GPU."

Giao diện C / C ++

R's Rcpp là một công cụ mạnh mẽ để kết nối R với C / C ++, Matloff viết. Mặc dù Python có các công cụ như swig để làm tương tự, nhưng nó không mạnh bằng và gói Pybind11 vẫn đang được phát triển. Ý tưởng ALTREP mới của R cũng có tiềm năng để tăng cường hiệu suất và khả năng sử dụng, Matloff viết; tuy nhiên, đôi khi các biến thể Cython và PyPy của Python có thể loại bỏ nhu cầu về giao diện C / C ++ rõ ràng, ông nói thêm.

Định hướng đối tượng, siêu lập trình

Mặc dù các chức năng là đối tượng trong cả R và Python, R nghiêm túc hơn, Matloff đã viết.

"Bất cứ khi nào tôi làm việc với Python, tôi cảm thấy khó chịu vì thực tế là tôi không thể in một chức năng đến thiết bị đầu cuối, điều mà tôi làm rất nhiều trong R", ông viết. Python chỉ có một mô hình OOP. Trong R, bạn có nhiều lựa chọn, mặc dù một số người có thể tranh luận rằng đây là một điều tốt. Với các tính năng siêu lập trình ma thuật của R (mã tạo mã), các nhà khoa học máy tính phải chảy nước bọt lên R. "

Sự thống nhất ngôn ngữ

Trong khi Python đang chuyển từ phiên bản 2.7 sang 3.x, thì điều này sẽ Tuy nhiên, R đang thay đổi thành hai phương ngữ khác nhau do tác động của RStudio: R và Tidyverse, Matloff đã viết.

"Có thể dễ chấp nhận hơn nếu Tidyverse vượt trội hơn R thông thường , nhưng theo ý kiến ​​của tôi thì không, "Matloff đã viết." Nó làm cho mọi thứ trở nên khó khăn hơn cho người mới bắt đầu. "

Cấu trúc dữ liệu được liên kết

Cây nhị phân, rất dễ thực hiện trong Python, "Matloff đã viết." Trong khi điều này có thể được thực hiện trong R bằng cách sử dụng lớp 'danh sách' của nó, tôi đoán rằng nó chậm. "

Khi bắt đầu công việc Theo các báo cáo năm 2018, gần 66% các bài đăng công việc của kỹ sư dữ liệu đã đề cập đến Python, so với chỉ 18% các bài đăng có đề cập đến R.

Ngoài R và Python, các kỹ năng theo yêu cầu khác dành cho kỹ sư dữ liệu bao gồm SQL, Spark, Hadoop, Java, Amazon Web Services (AWS), Scala và Kafka, theo Cloud Academy.

Để biết thêm, hãy xem Làm thế nào để trở thành một nhà khoa học dữ liệu: Một mánh gian lận trên TechRepublic.

                                                                                

                                                

Cũng xem

 Các lập trình viên và nhóm phát triển đang mã hóa và phát triển phần mềm "width =" 770 "/> </span><figcaption>
<p>
                                            Hình ảnh: iStockphoto / ijables<br />
                                        </p>
</figcaption></figure>
<div class=