Khi quá trình phân tích của nhà khoa học dữ liệu hoàn tất, khía cạnh quan trọng nhất của công việc sẽ bắt đầu. bàn giao kết quả cho khách hàng. Ở bước này, ngay cả công việc vĩ đại nhất cũng có thể thất bại do trình bày kém hoặc giao hàng không kịp thời. Câu hỏi hóc búa này có lẽ được tóm tắt tốt nhất bởi Định luật thiết kế tàu vũ trụ thứ 20 của Akin, trong đó nêu rõ [1]
Một thiết kế tồi với một bản trình bày tốt cuối cùng sẽ bị tiêu diệt. Một thiết kế tốt với cách trình bày tồi sẽ bị tiêu diệt ngay lập tức
— Định luật thiết kế tàu vũ trụ của Akin
Theo truyền thống, phân phối sản phẩm có nghĩa là chuyển các đầu ra được mã hóa sang các phương tiện khác như PowerPoint. Nhưng nếu có một cách để cung cấp Python Jupyter Notebook, hoàn chỉnh với các biểu đồ tương tác, trực tiếp cho khách hàng thì sao?
Máy tính xách tay Jupyter như một sản phẩmKhái niệm về JNaaP rất đơn giản. cấu trúc sổ ghi chép Jupyter python điển hình [2] sao cho nó có thể xuất sang HTML theo cách rõ ràng, dễ hiểu đối với khách hàng ở các mức độ thành thạo kỹ thuật khác nhau
JNaaP có khả năng phân phối cao. Hầu hết mọi người trong lực lượng lao động hiện đại đều có quyền truy cập vào trình duyệt internet có khả năng mở các tệp HTML, cho phép phân phối rộng rãi và giảm thiểu các vấn đề về tương thích
Bài viết này sẽ hướng dẫn cách xây dựng JNaaP do tác giả tạo sẵn ở định dạng HTML, với đầy đủ kho lưu trữ và dữ liệu có sẵn tại đây. https. //github. com/kurtklingensmith/JNaaP. Nhấp vào “Mã” và “Tải xuống Zip” để truy cập các tệp
JNaaP được cung cấp tại kho lưu trữ GitHub ở trên sử dụng dữ liệu ẩn danh nhờ câu lạc bộ ô tô địa phương. Autocross là một sự kiện đua xe thể thao nghiệp dư được tính giờ, nơi người lái xe điều hướng một khóa học được xây dựng từ hình nón và nó tạo ra vô số dữ liệu. JNaaP và sổ ghi chép sẽ hoạt động tốt nhất khi được tải xuống và xem cục bộ so với xem trong GitHub
Cân nhắc rộng rãi cho JNaaP
Trước khi xây dựng JNaaP, các nhà khoa học dữ liệu phải giải quyết hai cân nhắc chính
- Yêu cầu của khách hàng. Các yêu cầu hoặc câu hỏi cấp cao mà khách hàng cần giải quyết thông qua các khả năng của khoa học dữ liệu là gì? . Các phần khác nhau sẽ giải quyết từng câu hỏi hoặc yêu cầu và sổ ghi chép sẽ cung cấp một bản tóm tắt
- Cân nhắc kỹ thuật của khách hàng. Khách hàng có muốn truy cập vào mã không? . Tạo một JNaaP yêu cầu mã sạch; . Đối với hầu hết khách hàng, ẩn mã khi xuất HTML là cách tiếp cận tốt nhất, nhưng đây không phải là cách tuyệt đối.
Yêu cầu
Việc xây dựng JNaaP hiệu quả đòi hỏi phải sử dụng nhiều nbextensions. Một bài viết để bắt đầu với nbextensions có sẵn tại đây. Phần mở rộng Máy tính xách tay Jupyter của Will Koehrsen [3]. Mẫu JNaaP được cung cấp sử dụng các khả năng sau của nbextensions
- Mục lục [2]
- viết mã
- Ẩn đầu vào
- Ẩn tất cả đầu vào
- plotlywidget/tiện ích mở rộng
Ảnh chụp màn hình của tác giả nbextensions
Mẫu JNaaP cũng sẽ yêu cầu
- nbconvert. Dùng để xuất [4]
- cốt truyện nhanh. Đối với trực quan hóa tương tác [5]
Thiết kế JNaaP
Về mặt cấu trúc, JNaaP nên đứng một mình. Tải xuống ví dụ được cung cấp tại đây để tham khảo trong khi đọc danh sách các phần tử JNaaP điển hình sau đây
- Tiêu đề. Tiêu đề nên tóm tắt ngắn gọn nội dung của sổ ghi chép. Cân nhắc thêm dấu ngày tháng, quyền tác giả và thông tin liên hệ. Sử dụng đánh dấu và tối đa hóa việc sử dụng các tính năng định dạng đánh dấu. Có thể tìm thấy danh sách các tính năng đánh dấu khác nhau tại đây [6]. Dưới đây là một ví dụ về đánh dấu cho một tiêu đề
**The JNaaP Title**
***
Prepared by: Data Scientist
- Lý lịch. Điều này sẽ tạo tiền đề bằng cách giải quyết mục đích của JNaaP, các mục tiêu phân tích chính và mọi thông tin hoặc câu chuyện cơ bản thích hợp cần thiết để hiểu JNaaP. Điều này cũng nên bao gồm các phát hiện và kết quả chính được hỗ trợ bởi phân tích sau này trong sổ ghi chép. Nếu bị giới hạn về thời gian, khách hàng chỉ cần đọc phần này, với niềm tin rằng phần phân tích sâu hơn trong sổ ghi chép sẽ chứng minh cho những phát hiện. Sử dụng đánh dấu để định dạng và hiển thị phần này
- Mục lục. Sử dụng nbextensions, tiện ích mở rộng Mục lục [2] [7] cho phép người đọc nhanh chóng chuyển đến các phần khác nhau của sổ ghi chép
- Tải dữ liệu và thiết lập. Đây là nơi sổ ghi chép tải dữ liệu và thư viện. Nói chung, điều này ít được khách hàng sử dụng, nhưng việc hiển thị phần đầu của khung dữ liệu và một số kích thước tóm tắt bằng cách sử dụng câu lệnh in có thể tăng thêm giá trị bằng cách hiển thị mô tả trực quan về dữ liệu
- Phần phân tích. Đây là nơi khoa học dữ liệu hoạt động, bao gồm cả trực quan hóa, cư trú. Cấu trúc bản phân tích để nó giải quyết các mục tiêu phân tích từ nền tảng và yêu cầu của khách hàng. Một cách hợp lý để tiếp cận điều này là sử dụng các tiêu đề là các câu hỏi phân tích của khách hàng. Lưu ý rằng mã sạch và các bảng, kết quả và đầu ra mã được hiển thị rõ ràng là cần thiết để có một JNaaP hiệu quả. Sử dụng các câu lệnh in, đánh dấu và các kỹ thuật trực quan hóa một cách khôn ngoan để mang lại vẻ ngoài chuyên nghiệp, rõ ràng
Đảm bảo biểu đồ tương tác trong HTML
Plotly Express cung cấp các biểu đồ tương tác đơn giản và hiệu quả với giao diện rõ ràng, chuyên nghiệp. Khía cạnh tương tác cho phép người dùng phóng to hoặc thu nhỏ biểu đồ và thậm chí tạo ảnh chụp màn hình. Điều quan trọng để đảm bảo các biểu đồ đó xuất và duy trì tính tương tác trong các tệp HTML là đoạn mã dưới đây bên dưới thẻ bắt đầu bằng #
import plotly.express as px
import plotly.graph_objects as go
import plotly.io as pio
# The below line ensures charts export to HTML
pio.renderers.default='notebook'
Với mã này, các biểu đồ tương tác có thể xuất được. Một ví dụ từ JNaaP được cung cấp có thể nhìn thấy bên dưới. Lưu ý rằng tất cả các trục đều được gắn nhãn, chú giải được cung cấp và người xem có thể di chuột qua các điểm dữ liệu để biết thêm thông tin. Trình bày sạch sẽ và rõ ràng là rất quan trọng để có một JNaaP thành công. Tài liệu khác về tùy chỉnh biểu đồ Plotly có sẵn tại đây [8]
Biểu đồ ví dụ từ JNaaP được cung cấpSức mạnh của Python Print
Hàm print[] của Python cung cấp một giải pháp thay thế mạnh mẽ cho markdown. Đáng chú ý, có thể phân tích lặp lại thông qua các chức năng in. Hãy xem xét những điều sau đây từ ví dụ JNaaP
mode = df['Car Make'].mode[]
print["\u2022 Most common manufacturer:", mode.to_string[index=False]]
Đoạn mã trên sẽ lấy khung dữ liệu và in một câu lệnh xác định nhà sản xuất ô tô phổ biến nhất trong tập dữ liệu. Bởi vì nó không phải là đánh dấu, mà thay vào đó là hàm print[] sử dụng python để xác định mục xuất hiện phổ biến nhất, nên mã có thể lặp lại với các bộ dữ liệu trong tương lai từ các sự kiện khác
Lưu ý văn bản “\u2022”, tạo dấu đầu dòng unicode. Tương tự như markdown, có nhiều khả năng định dạng với hàm print[] của Python sẽ cải thiện giao diện chuyên nghiệp của JNaaP. JNaaP mẫu cung cấp một ví dụ về thiết lập các lớp để in văn bản in đậm
Xuất bản sang tệp HTMLKhi JNaaP hoàn tất, có một số cách để xuất nó sang HTML. Có hai cân nhắc trước khi xuất khẩu
- Mã hoặc Không Mã. Một số khách hàng có thể muốn xem mã. Những người khác có thể không. Giữ tất cả mã sạch sẽ và được ghi chép đầy đủ trong trường hợp khách hàng muốn. Điều này sẽ tăng cường khả năng diễn giải và giảm sự lộn xộn trên tệp HTML
- Xem trước JNaaP. Thông thường, hầu hết khách hàng sẽ không muốn xem mã. Việc sử dụng rộng rãi tính năng sắp xếp mã của nbextension [9] và Ẩn đầu vào cho phép xem trước JNaaP sẽ trông như thế nào trước khi xuất [10]. Điều này có thể tiết kiệm thời gian bằng cách tránh xuất lặp lại
Sau khi hoàn tất việc xác định bao gồm mã, có một số cách để xuất JNaaP sang HTML
Khả năng tích hợp của Jupyter Notebook. Nếu bao gồm mã, đây là cách dễ nhất để tạo JNaaP. Phương pháp này đơn giản như nhấp vào Tệp, Tải xuống dưới dạng, HTML [. html]. Sau đó, Jupyter sẽ tải xuống sổ ghi chép dưới dạng tệp HTML tới bất kỳ nơi nào trình duyệt mặc định cho các tệp đã tải xuống
Sử dụng nbconvert để xuất. Nbconvert cung cấp nhiều tùy chọn hơn. Khối mã bên dưới thực hiện một số việc
%%capture
!jupyter nbconvert --to html --no-input --no-prompt Notebook.ipynb
- Dòng trên cùng [%%capture] đảm bảo đầu ra của dòng xuất HTML nbconvert sẽ không hiển thị
- Dòng dưới cùng xuất sổ ghi chép sang HTML. Để html chỉ định định dạng và không có đầu vào, không có dấu nhắc ẩn mã. Cuối dòng phải là tên tệp cho sổ ghi chép đang được chuyển đổi
Tệp HTML xuất sang thư mục chứa tệp ipynb của Jupyter Notebook. Các chủ đề tối cũng có sẵn bằng cách thêm đoạn mã sau vào dòng nbconvert
--HTMLExporter.theme=dark
Tuy nhiên, điều này sẽ yêu cầu định dạng lại bảng màu biểu đồ Plotly;
________5. Kết luậnCung cấp Máy tính xách tay Jupyter dưới dạng sản phẩm dựa trên HTML hợp lý hóa công việc khoa học dữ liệu bằng cách biến nỗ lực dựa trên mã, phân tích trở thành một phần của quá trình sản xuất sản phẩm cuối cùng. Nó cũng làm giảm lỗi và làm lại bằng cách loại bỏ nhu cầu dịch các nỗ lực từ một công cụ [Jupyter] sang các công cụ khác như PowerPoint hoặc Word. Cuối cùng, các tệp HTML có khả năng tương thích rộng rãi và dễ dàng truyền tải, giúp sản phẩm dễ dàng cung cấp cho khách hàng. Cuối cùng, các JNaaP có cấu trúc tốt có thể cung cấp một phương tiện để tạo báo cáo và phân tích tất cả trong một, có thể lặp lại. Trong những trường hợp như vậy, các nhà khoa học phi dữ liệu có thể lấy một sổ ghi chép JNaaP đã chuẩn bị sẵn, thực hiện nó và tạo ra một sản phẩm có thể phân phối được
Vui lòng tham khảo ví dụ được liên kết và tạo JNaaP của riêng bạn
Người giới thiệu
[1] D. Akin, Định luật thiết kế tàu vũ trụ của Akin [2021], Trang web của Dave Akin
[2] Dự án Jupyter, Dự án Jupyter [2021], https. // jupyter. tổ chức/
[3] W. Koehrsen, Jupyter Notebook Exensions [2018], Hướng tới Khoa học Dữ liệu
[4] Nbconvert, nbconvert. Chuyển đổi Notebook sang các định dạng khác [2021], nbconvert
[5] Âm Mưu Thể Hiện, Cốt Truyện Thể Hiện. con trăn. Âm Mưu [2021], Âm Mưu. Thư viện đồ thị
[6] M. Zaman, The Ultimate Markdown Cheat Sheet [2021], Hướng tới Khoa học Dữ liệu
[7] jupyter_contrib_nbextensions, Mục lục [2] [2021], Tiện ích mở rộng Notebook Jupyter không chính thức