ถนนสายแรก

Nov 28 2022
มากกว่านักวิทยาศาสตร์คอมพิวเตอร์และวิศวกร ฉันเป็นมนุษย์ และในฐานะมนุษย์ การมองเห็นเป็นหนึ่งในประสบการณ์ทางประสาทสัมผัสที่สำคัญและคุ้มค่าที่สุดที่เราสามารถมีได้

มากกว่านักวิทยาศาสตร์คอมพิวเตอร์และวิศวกร ฉันเป็นมนุษย์ และในฐานะมนุษย์ การมองเห็นเป็นหนึ่งในประสบการณ์ทางประสาทสัมผัสที่สำคัญและคุ้มค่าที่สุดที่เราสามารถมีได้ ดังนั้น ในการเริ่มต้น ฉันจะแสดงแดชบอร์ดแรกของฉันที่สร้างขึ้นบน Streamlit framework (ด้วยความช่วยเหลือของ python, pandas และ Altair)

บทนำ

แดชบอร์ด? ฉาก? PowerBI? ทำไมไม่ใช้เพียงแค่แผ่นงาน Excel บางแผ่น?

คำว่า “แดชบอร์ด” เป็นคำยอดนิยมในแวดวงวิทยาศาสตร์ข้อมูล วิศวกรรมข้อมูล ระบบธุรกิจอัจฉริยะ และอื่นๆ อย่างแน่นอน แต่แดชบอร์ดคืออะไร? และฉันจะทำอย่างไรกับมัน

ประการแรก เมื่อเราได้ยินคำว่าแดชบอร์ด เรานึกถึงตำรวจที่ลากรถในภาพยนตร์ได้เร็วกว่าระบบคอมพิวเตอร์ที่เต็มไปด้วยแผนภูมิ “คุณไม่เห็นการเร่งความเร็วเกินกำหนดบนแผงหน้าปัดรถเหรอ” แดชบอร์ดเป็นเพียงกรอบภาพที่มีตัวบ่งชี้ประสิทธิภาพหลัก แผนภูมิและสถิติ สามารถตอบสนอง โต้ตอบ และอัปเดตแบบเรียลไทม์ โดยใช้วิธีการที่แตกต่างกัน เครื่องมือเหล่านี้เป็นเครื่องมือสำหรับการแสดงข้อมูลที่รวบรวมไว้ซึ่งสัมพันธ์กับสถานการณ์เฉพาะกรณี ทำไมต้องคัดสรร? เนื่องจากระบบมีการใช้งานบ่อยและข้อมูลจำเป็นต้องถูกเก็บไว้ในระดับที่จำเป็นเพื่อหลีกเลี่ยงการป้อนมากเกินไปของแอปพลิเคชัน เวลาเป็นสิ่งสำคัญและยิ่งย่อยข้อมูลได้เร็วเท่าไหร่ก็ยิ่งดีเท่านั้น

ดังนั้น... Tableau และ Power BI จึงเป็นเพียงเฟรมเวิร์กในการสร้างแดชบอร์ดและเรื่องราว นอกจากนี้ยังสามารถใช้ Excel เพื่อสร้างแดชบอร์ด ในความเป็นจริง Excel เป็นรุ่นใหญ่ของแดชบอร์ด… ในท้ายที่สุด คำนี้เป็นเพียงคำแฟนซีที่ใช้เพื่ออธิบายระบบข้อมูลที่มีสถิติ

ดังที่บางคนกล่าวว่า รูปภาพดีกว่าคำพูดนับพันคำ ดังนั้นเราจึงไปที่ส่วนที่ใช้งานได้จริง เราจบการแนะนำที่นี่และไปยังการเลือกเครื่องมือและเลือกชุดข้อมูลแบบสุ่มเพื่อดำเนินการ EDA จากนั้นค้นหาจุดเน้นที่สามารถแก้ไขหรือวิเคราะห์ได้โดยใช้แดชบอร์ดของเราและพยายามตอบคำถามเหล่านั้น ทั้งหมดในขณะที่แดชบอร์ดขนานกัน

เดอะสแต็ค

หากต้องการทำลายหินจำนวนมหาศาลอย่างมีประสิทธิภาพ เราอาจต้องใช้ชุดเครื่องมือที่ทรงพลังและเฉพาะเจาะจง รายการถัดไปจะอธิบายถึงเครื่องมือต่างๆ ที่ใช้ในมินิโปรเจ็กต์

สตรีมไลท์ กรอบงานโอเพ่นซอร์สที่เป็นไปตามหลักการสำคัญ 3 ประการ: การเขียนสคริปต์เป็นภาพ การโต้ตอบผ่านการใช้ส่วนประกอบเป็นตัวแปร และการปรับใช้อย่างรวดเร็ว กล่าวอีกนัยหนึ่ง ด้วย Streamlit คุณสามารถสร้างแดชบอร์ดที่ดึงดูดสายตาโดยไม่จำเป็นต้องรู้วิธีใช้ฟรอนต์เอนด์และกรอบการจัดรูปแบบ กระบวนทัศน์นี้ทำให้ระบบสามารถละเว้นการกำหนดสไตล์เฉพาะ และมุ่งความสนใจทั้งหมดไปที่การกำหนด KPI และวิธีการที่ดีกว่าในการนำเสนอ

อัลแตร์. เครื่องมือสร้างภาพข้อมูล Altair มีจุดมุ่งหมายคล้ายกับ Matplotlib แต่สร้างขึ้นจากหลักการที่แตกต่างกัน สไตล์การเขียนโค้ดเป็นไปตามกระบวนทัศน์เชิงประกาศ และไวยากรณ์คล้ายกับรูปแบบ JSON

หมีแพนด้า ไลบรารีที่สามารถใช้สำหรับการสำรวจ ทำความสะอาด และจัดการข้อมูลแบบตาราง อนุญาตให้รวมหลายตาราง เติมค่าที่ขาดหายไป แปลง ล้างข้อมูล กรอง และสอบถาม

Scikit-เรียนรู้ ห้องสมุดมีเครื่องมือมากมายสำหรับการวิเคราะห์ข้อมูล ตั้งแต่แมชชีนเลิร์นนิงและแบบจำลองทางสถิติ ตารางการฝึกอบรม เมตริกสำหรับการวัดปริมาณข้อผิดพลาด และการคาดคะเนข้อมูล เมื่อใช้ Scikit-Learn นี้ คุณจะสามารถวิเคราะห์ข้อมูลได้อย่างรวดเร็วและง่ายดาย แต่โปรดจำไว้ว่าโมเดลที่นำไปใช้นั้นไม่ใช่โมเดลที่ล้ำสมัย

อ้วน _ ปรับปรุงเวลาที่จำเป็นสำหรับการคำนวณเชิงตัวเลขภายในระบบนิเวศของ Python ข้อมูลดั้งเดิมของ Numpy ประกอบด้วยอาร์เรย์ N-Dimensional

ผักดอง เครื่องมือนี้ใช้ในการทำให้เป็นอนุกรมและดีซีเรียลไลซ์ของวัตถุ Python

ชุดข้อมูล

โครงการมุ่งเน้นไปที่การสำรวจสิ่งที่ Streamlit นำเสนอ ไม่ใช่การดำเนินโครงการวิทยาศาสตร์ข้อมูลที่ดูแลจัดการตั้งแต่ต้นจนจบ ดังนั้นชุดข้อมูลที่เรากำลังจะเลือกจึงเกือบจะเลือกด้วยโชคที่แท้จริง

การค้นพบของเราประกอบด้วยชุดข้อมูลตลาดที่อยู่อาศัยในซีแอตเทิล (สหรัฐอเมริกา) มีการรวบรวมอินสแตนซ์ระหว่างเดือนพฤษภาคม 14 ถึง 15 พฤษภาคม

ส่วนประกอบ

ตอนนี้ ได้เวลาตรวจสอบส่วนประกอบต่างๆ ที่รวมอยู่ในแดชบอร์ดขั้นสุดท้ายแล้ว ตรวจสอบการใช้งานเต็มรูปแบบในหน้า Github ของฉัน (https://github.com/LOCLuisPereira/streamlit_house_market).

ตัวชี้วัด KPI เริ่มต้น

เมตริก KPI นี้เป็นสิ่งแรกที่ผู้ใช้เห็น พวกเขาควรให้ข้อมูลที่สำคัญอย่างรัดกุม Streamlit นำเสนอองค์ประกอบที่เหมือนการ์ด (streamlit.metric) ซึ่งคุณสามารถกำหนดชื่อ KPI ค่า และเดลต้าได้ ใช้สำหรับการระบุ การหาปริมาณ และความผันผวนของค่าการวัด

ในกรณีของเรา เรามีจำนวนบ้านทั้งหมดและค่าเฉลี่ยอื่นๆ บางส่วนเกี่ยวกับตลาดที่อยู่อาศัยในซีแอตเทิล (เช่น ราคาบ้านเฉลี่ย จำนวนชั้นตามสภาพ และอื่นๆ)

เมตริก KPI เริ่มต้นของแดชบอร์ด

แผนที่ซีแอตเติลและการจัดจำหน่ายบ้าน

Streamlit มีองค์ประกอบแผนที่ที่ช่วยให้นักพัฒนาสามารถสร้างคำหรือแผนที่เมืองได้อย่างรวดเร็ว (streamlit.map) ส่วนประกอบนี้ค่อนข้างเรียบง่ายและไม่มีข้อกำหนดที่ซับซ้อน เนื่องจากระดับการปรับแต่งต่ำ

ใช้เป็นตัวอย่าง สำหรับการตรวจสอบการกระจายอินสแตนซ์ในเมืองที่กำหนด ส่วนประกอบก็เพียงพอแล้ว แต่เพื่อให้เห็นภาพการกระจายคลัสเตอร์และสีที่เกี่ยวข้อง จำเป็นต้องใช้เครื่องมืออื่น

ส่วนประกอบแผนที่

การใช้กราฟแผนที่ Altair สำหรับการสร้างภาพคลัสเตอร์

ส่วนประกอบแผนที่ดั้งเดิมของ Streamlit ใช้ Altair ภายใต้ประทุน ง่ายๆอย่างนั้น เราระบุไว้ก่อนหน้านี้ว่าส่วนประกอบนี้เป็นปลั๊กแอนด์เพลย์ แต่ไม่มีการปรับแต่งใด ๆ อีกทางเลือกหนึ่งนอกเหนือจากการใช้งานแบบดั้งเดิมคือการใช้แผนภูมิ Altair และเชื่อมโยงกับส่วนประกอบแผนภูมิ Streamlit-Altair

สถานที่ตั้งเป็นกุญแจสำคัญ โดยเฉพาะธุรกิจตลาดที่อยู่อาศัย บ้านหลังเดียวกันสามารถมีมูลค่าเพิ่มขึ้น 20 เท่า เพียงแค่ตั้งอยู่ใกล้ทะเลหรืออยู่ในเมืองใหญ่

เพื่อให้แน่ใจว่าเป็นจริง เราจึงทำการทดลอง การใช้ Scikit-Learn และการนำ K-Means ไปใช้ เราเรียกใช้อัลกอริทึมด้วยจำนวนคลัสเตอร์ที่แตกต่างกัน (ตั้งแต่ 2 ถึง 10) ใช้ลองจิจูดและละติจูดเป็นคุณลักษณะ จากการวิ่งทุกครั้ง เราตรวจสอบราคาที่อยู่อาศัยเฉลี่ย

ขั้นตอนสุดท้าย การสร้างภาพ ทำโดยการรวมสามองค์ประกอบเข้าด้วยกัน แถบเลื่อนสำหรับเลือกจำนวนคลัสเตอร์ที่ต้องการ แผนที่ Altair สำหรับแสดงตัวอย่างและตำแหน่งของแผนที่ และดาต้าเฟรมสำหรับแสดงราคาเฉลี่ยสำหรับแต่ละคลัสเตอร์

จำนวนคลัสเตอร์ = 3
จำนวนคลัสเตอร์ = 6

ท้ายที่สุดแล้ว สถานที่ก็มีความสำคัญจริงๆ เมื่อเราเดินทางจากใต้ขึ้นเหนือราคาบ้านก็สูงขึ้น บ้านทางด้านซ้ายของซีแอตเทิลมักจะถูกกว่า ในตลาดที่อยู่อาศัย มีหลายปัจจัยที่สามารถมีอิทธิพลต่อราคา ตัวอย่างเช่น บ้านทางด้านขวาจะอยู่ใกล้กับแผ่นดินใหญ่มากขึ้น และง่ายต่อการนำทางไปยังส่วนอื่นๆ ของซีแอตเทิลหรือเมืองใกล้เคียง เหตุผลนี้ไม่สำคัญ แต่สามารถถ่วงน้ำหนักกับราคาสุดท้ายของบ้านได้

เกรดและสภาพ

องค์ประกอบนี้เรียบง่ายและสั้น การใช้แผนภูมิแท่ง 2 แผนภูมิ `streamlit.bar_chart` เราวางแผนการแจกแจงเกรดและเงื่อนไข ด้วยการแสดงภาพกราฟิก เราสรุปได้ว่ากรณีส่วนใหญ่อยู่ตรงกลาง (สำหรับกราฟทั้งสอง)

การลงจุดแบบแท่งสำหรับการแสดงเงื่อนไขและเกรด

เราวางแผนคุณสมบัติทั้งสองนี้เข้าด้วยกัน หากเราพิจารณาว่าคะแนนเฉลี่ยเป็นกลาง บ้านส่วนใหญ่มักจะอยู่ด้านที่เป็นกลางของคะแนน ถ้าไม่เป็นกลาง พวกเขาจะตกอยู่ในคะแนนบวกขี้อาย

แผนภูมิฟองวางแผนเกรดและความสัมพันธ์เข้าด้วยกัน

วิธีการเกี่ยวกับการปรับปรุงบ้าน? KPI อีกชุดหนึ่ง

การใช้ streamlit.metric เราใช้เมตริก KPI แบบอินไลน์สามรายการเพื่อวิเคราะห์ข้อมูลที่เกี่ยวข้องกับการปรับปรุงบ้านอย่างรวดเร็ว เราแสดงจำนวนบ้านที่ได้รับการปรับปรุงใหม่ การเป็นตัวแทนของบ้านที่เหลือ และช่วงเวลาใดระหว่างการก่อสร้างและปีที่มีการปรับปรุงใหม่

KPI อีกชุดหนึ่ง

เมื่อดูที่แดชบอร์ด เราพบว่ามีบ้าน 914 หลังที่ได้รับการปรับปรุงใหม่ และบ้านมีแนวโน้มที่จะได้รับการบูรณะหลังจาก 56 ปีหลังจากการก่อสร้าง

แดชบอร์ดที่ไม่มีแผนภูมิเส้น? เป็นไปไม่ได้…

แผนภูมิเส้นมักจะค่อนข้างธรรมดา Streamlit เสนอองค์ประกอบการรวมสำหรับการลงจุดอย่างรวดเร็วและง่ายดาย บนแดชบอร์ด เราใช้เพื่อดูยอดขายบ้านต่อเดือน

ขายบ้านตามกาลเวลา

ดูอย่างรวดเร็ว… เดือนที่ขายดีที่สุดคือกรกฎาคม 2014 และเมษายน 2015

ห้องนอนและห้องน้ำ? กองหรือสมดุล?

บางครั้ง ยิ่งไม่สัมพันธ์อย่างใกล้ชิดกับดีกว่า เพื่อยืนยันหรือหักล้างมัน เราใช้แผนภูมิแผนที่ความร้อนซึ่งเกี่ยวข้องกับจำนวนห้องนอน ห้องน้ำ และราคาเฉลี่ยสำหรับชุดห้องนอน-ห้องน้ำแต่ละห้อง

เมื่อดูกราฟใหม่ เราจะเห็นว่าการสร้างสมดุลของจำนวนห้องนอนและห้องน้ำเป็นพื้นฐาน อุตสาหกรรมสนับสนุนอัตราส่วน 1:1 และห้องน้ำมากกว่าห้องนอน

เมื่อวางซ้อนห้องนอนราคามักจะอยู่ในช่วงเดียวกัน แต่การเพิ่มห้องน้ำราคามักจะเพิ่มขึ้นเสมอ

แผนภูมิแผนที่ความร้อนของเรา

สิ่งนี้สามารถอธิบายได้โดยใช้เหตุผลง่ายๆ ผู้คนไม่ชอบรอและผู้คนไม่ชอบใช้พื้นที่ส่วนตัวร่วมกัน โดยสรุปแล้ว การทำให้ผู้อยู่อาศัยและผู้เข้าพักมีระดับความเป็นส่วนตัวที่สูงขึ้นทำให้ทรัพย์สินมีมูลค่าสูงขึ้น

ฉันมีอสังหาริมทรัพย์ในซีแอตเทิล… คุณช่วยฉันหาราคาที่ยุติธรรมสำหรับการขายได้ไหม

เราสามารถแยกคำถามนี้ออกเป็นสองปัญหาย่อยๆ เราสามารถทำอะไรได้บ้างเพื่อเชื่อมโยงการไหลของข้อมูลจากผู้ใช้ไปยังระบบข้อมูลของเรา และเราสามารถใช้อัลกอริทึมการเรียนรู้ของเครื่องเพื่อย่อยข้อมูลและกำหนดราคาที่เป็นไปได้ตามข้อมูลที่ป้อนเข้าไป

Streamlit นำเสนอองค์ประกอบหลายอย่างที่เชื่อมระหว่างผู้ใช้กับการสื่อสารของระบบโดยอัตโนมัติ ในกรณีนี้ เราจะใช้ส่วนประกอบของฟอร์ม คอมโพเนนต์เหล่านี้ช่วยให้สามารถผสานคอมโพเนนต์อื่นๆ ด้วยข้อกำหนดเพียงปุ่มสุดท้าย ซึ่งทริกเกอร์การส่งข้อมูล

แบบฟอร์มเชื่อมโยงการสื่อสารระหว่างผู้ใช้กับระบบ

ข้อมูลจากคอมโพเนนต์ของฟอร์มจะถูกป้อนเป็นโมเดลที่ผ่านการฝึกอบรมล่วงหน้าสองโมเดล หลังจากการอนุมาน ข้อมูลจะถูกส่งไปยังแดชบอร์ดและผู้ใช้สามารถดูการประมาณค่าที่เป็นไปได้สองค่า

เนื่องจากพันธกิจของโครงการคือการสร้างแดชบอร์ดและสำรวจส่วนประกอบ Streamlit ส่วนใหญ่ เราจึงใช้อัลกอริทึมโมเดลแมชชีนเลิร์นนิงพื้นฐาน 2 แบบซึ่งใช้งานบน Scikit-Learn ในท้ายที่สุด เรามี Bayesian Ridge และ Random Forest ด้วยคะแนน 0.54 และ 0.87 R2 จากข้อมูลทั้งหมด

การคาดการณ์ราคา

อาจมีคำถามว่าทำไมเก็บโมเดลที่มีคะแนน 0.54 ไว้ เราเก็บไว้เป็นเรื่องตลก โมเดลบางครั้งแสดงค่าลบ ตามคำสั่ง นางแบบบอกเราว่าเราซื้อบ้านได้…และรับเงินเพื่อเก็บไว้

อะไรอยู่ใน Dataframe?

สำหรับงานนี้ Streamlit เสนอสามตัวเลือกที่แตกต่างกัน หนึ่งสำหรับตารางคงที่ หนึ่งสำหรับ dataframe และอีกสำหรับ JSON ที่นี่เราจะเน้นสองคนสุดท้าย

ฟังก์ชันของ Dataframe แสดงผลตารางที่ช่วยให้เห็นภาพโครงสร้างของชุดข้อมูลในลักษณะตาราง เป็นไปได้ที่จะเรียงลำดับคอลัมน์จากน้อยไปมากหรือจากมากไปน้อย ซึ่งช่วยปรับปรุงการแสดงภาพและความหมายของข้อมูล

ตาราง Streamlit dataframe

เอาต์พุตของ JSON คล้ายกับฟังก์ชันดัมพ์ โดยมีการเยื้อง ซึ่งมาจากไลบรารี JSON ของ Python

ปรับปรุงองค์ประกอบ JSON

ส่วนประกอบทั้งสองมีกรณีการใช้งาน สามารถใช้คอมโพเนนต์ dataframe เพื่อวิเคราะห์ข้อมูลได้อย่างรวดเร็ว เช่น ค้นหาค่าสูงสุด ค่าต่ำสุด ตรวจสอบค่าที่ขาดหายไปหรือค่า Null เป็นต้น JSON หนึ่งนั้นยอดเยี่ยมสำหรับการตรวจสอบโครงสร้างข้อมูลและประเภทใดยกเว้นแต่ละฟิลด์ในชุดข้อมูล

ใช้เวลาสุดท้าย

นี่คือจุดสิ้นสุดของถนนสำหรับโครงการนี้ เราไม่ได้สำรวจอัลกอริทึมที่ละเอียดอ่อนหรือล้ำสมัยใดๆ มีความเรียบง่ายทั้งทางทฤษฎีและการนำไปปฏิบัติ แต่ด้วยการนำไปปฏิบัตินี้ เราอยู่ในฐานะที่จะใคร่ครวญและตอบคำถามว่าเฟรมเวิร์กนั้นดีเพียงใดและเข้ากันได้กับสแต็คของเราหรือไม่

ในที่สุด Streamlit ก็สามารถเสนอสิ่งที่เสนอได้ การสร้างแดชบอร์ดนั้นง่ายเหมือนการเขียนสคริปต์ ข้อมูลจะแสดงในลักษณะโต้ตอบและจัดระเบียบ แม้ว่าเราจะไม่ได้จัดแสดง แต่การปรับใช้ต้นแบบนั้นรวดเร็วและง่ายดาย

ในขณะนี้ เราสามารถเห็นข้อเสียที่เป็นไปได้เพียงสองประการเท่านั้น การกำหนดเส้นทางและการจัดรูปแบบ การกำหนดเส้นทางสำหรับแดชบอร์ดหลายหน้า การจัดรูปแบบเพื่อขยายกลไกการจัดรูปแบบปัจจุบันและอนุญาตให้มีการปรับแต่งในระดับที่สูงขึ้น

มุมมองส่วนตัวของฉันเกี่ยวกับ Streamlit นั้นเรียบง่าย ฉันค่อนข้างตื่นเต้นที่จะใช้ในโครงการอื่นของฉัน การสร้างต้นแบบหรือแดชบอร์ดภายในองค์กรนั้นรวดเร็ว ผลลัพธ์ที่ได้นั้นสวยงามและ EDA ก็น่าตื่นเต้นยิ่งขึ้นไปอีก… เพราะความง่ายที่เราสามารถสร้างภาพข้อมูลบนส่วนหน้า

โบนัส. แล้วแดชบอร์ดแบบเรียลไทม์ล่ะ?

ในโครงการของเรา เราไม่จำเป็นต้องอัปเดตข้อมูลตามเวลาจริง แต่ Streamlit นำเสนอวิธีการใช้การแสดงข้อมูลแบบเรียลไทม์ กลไกนั้นง่าย สร้างคอมโพเนนต์เปล่า ตั้งลูป ดึงและป้อนข้อมูล... Voila! สตรีมข้อมูลอย่างต่อเนื่องและเรียลไทม์ ดูภาพด้านล่างเพื่อพิสูจน์ความสามารถของเฟรมเวิร์ก

เปิดแดชบอร์ดและตรวจสอบราคาเริ่มต้น
ราคาเพิ่งเปลี่ยนและแดชบอร์ดแสดง

นั้น! เจอกันคราวหน้า.