Trong số Matlab và Python, ngôn ngữ nào tốt cho phân tích dữ liệu thống kê chung? Những ưu và nhược điểm, ngoài khả năng tiếp cận, đối với mỗi là gì?
Trong số Matlab và Python, ngôn ngữ nào tốt cho phân tích dữ liệu thống kê chung? Những ưu và nhược điểm, ngoài khả năng tiếp cận, đối với mỗi là gì?
Câu trả lời:
Là người dùng Matlab cực kỳ nguy hiểm trong hơn 10 năm qua, tôi khuyên bạn nên tìm hiểu Python. Khi bạn đã đủ thành thạo ngôn ngữ, khi bạn làm việc với ngôn ngữ bạn đang học, có vẻ như bạn không đủ năng suất và bạn sẽ quay lại sử dụng ngôn ngữ tốt nhất mặc định của mình. Ít nhất, tôi sẽ đề nghị bạn cố gắng thành thạo như nhau trong một số ngôn ngữ (tôi cũng sẽ đề xuất R).
Những gì tôi thích về Matlab:
Những gì tôi không thích về Matlab:
median
hàm Matlab , thực hiện một loại dữ liệu, sau đó lấy giá trị trung bình . Đây là thuật toán sai từ những năm 70.-nojvm
dường như để giúp ...
shuffle
có thể trong hộp công cụ, không phải là chứng khoán matlab. khó có thể tệ hơn dựng sẵn randperm
, trả về chỉ số sắp xếp của một vectơ ngẫu nhiên. Một lần nữa, đây có lẽ là thuật toán sai (tôi mới tìm hiểu về việc xáo trộn Knuth-Fisher-Yates ở đây trên thống kê.SE) ..
randperm
là nó bị ảnh hưởng bởi việc gieo hạt randn
, trong khi phiên bản Knuth-Fisher-Yates có lẽ không thể truy cập vào hạt giống randn 'bên trong', và một phiên bản thuần túy quá chậm
Hãy chia nó thành ba khu vực (ngoài đỉnh đầu của tôi) nơi lập trình đáp ứng các số liệu thống kê: khủng hoảng dữ liệu, thói quen số (tối ưu hóa và như vậy) và thư viện thống kê (mô hình hóa, v.v.).
Đầu tiên, sự khác biệt lớn nhất là Python là ngôn ngữ lập trình có mục đích chung. Matlab là tuyệt vời miễn là thế giới của bạn gần như là đẳng cấu với một mảng số fortran. Khi bạn bắt đầu xử lý các vấn đề liên quan đến dữ liệu và các vấn đề liên quan, Python sẽ vượt qua Matlab. Ví dụ: xem cuốn sách của Greg Wilson: Data Crunching: Giải quyết các vấn đề hàng ngày bằng cách sử dụng Java, Python và hơn thế nữa .
Lần thứ hai, Matlab thực sự tỏa sáng với công việc số. Rất nhiều cộng đồng nghiên cứu sử dụng nó và nếu bạn đang tìm kiếm tiếng nói, một số thuật toán liên quan đến một bài báo trong cảm biến nén, bạn xa hơn khả năng tìm thấy một thực hiện trong Matlab. Mặt khác, Matlab là một loại PHP của máy tính khoa học - nó cố gắng để có một chức năng cho mọi thứ dưới ánh mặt trời. Kết quả thẩm mỹ và kiến trúc thật điên rồ nếu bạn là một người đam mê ngôn ngữ lập trình, nhưng về mặt thực dụng, nó hoàn thành công việc. Rất nhiều thứ đã trở nên ít phụ thuộc hơn với sự gia tăng của Numpy / Scipy, bạn cũng có khả năng tìm thấy các thư viện tối ưu hóa và học máy có sẵn cho Python. Giao diện với C là dễ dàng trong cả hai ngôn ngữ.
Về sự sẵn có của các thư viện thống kê để lập mô hình và như vậy, cả hai đều hơi thiếu khi so sánh với một cái gì đó như R. (Mặc dù tôi nghi ngờ cả hai sẽ đáp ứng nhu cầu cho 80% số người làm công việc thống kê.) : Python như một bàn làm việc thống kê . Đối với phía Matlab, tôi biết có một hộp công cụ thống kê, nhưng tôi sẽ để ai đó hiểu rõ hơn về chỗ trống (kinh nghiệm của tôi với Matlab bị giới hạn trong công việc số không liên quan đến thống kê).
Tôi cũng là một người dùng Matlab cuồng nhiệt trong hơn 10 năm. Trong nhiều năm, tôi không có lý do gì để làm việc ngoài hộp công cụ tôi đã tạo cho công việc của mình. Mặc dù nhiều hàm được tạo cho hộp công cụ, tôi thường cần tạo thuật toán để phân tích quay vòng nhanh. Vì các thuật toán này thường sử dụng toán ma trận, Matlab là một ứng cử viên lý tưởng cho công việc của tôi. Ngoài hộp công cụ mã Matlab của tôi, những người khác trong nhóm của tôi đã làm việc nhiều về Java vì có khả năng tương tác rõ ràng giữa các ngôn ngữ. Trong nhiều năm, tôi hoàn toàn hài lòng với Matlab, nhưng khoảng 3 năm trước tôi đã quyết định bắt đầu quá trình chuyển đổi chậm chạp khỏi Matlab và vui mừng nói rằng tôi đã không mở nó trong khoảng một năm nay. Đây là lý do cho động thái của tôi:
-nodesktop
tùy chọn hầu hết thời gian, nhưng có vấn đề.Đây chỉ là một vài trong số rất nhiều sự kìm kẹp của tôi với Matlab. Đây là một thuộc tính sáng chói: thật dễ dàng, thực sự dễ dàng để viết mã nhanh chóng (nếu không xấu xí). Mặc dù vậy, tôi đã bỏ nó và nhiệm vụ của tôi đã đưa tôi qua Clojure-> JavaScript-> Python <-> Julia; Vâng, tôi đã ở khắp mọi nơi.