คำแนะนำทีละขั้นตอนในการปรับใช้โมเดล ML โดยใช้ Streamlit
เผยแพร่แล้ว: 2020-12-07สารบัญ
บทนำ
ผู้ที่ชื่นชอบแมชชีนเลิร์นนิงส่วนใหญ่ลงทะเบียนเรียนหลักสูตรและหลักสูตรเพื่อเริ่มต้นใช้งาน AI และ ML หลักสูตรเหล่านี้ครอบคลุมเนื้อหาพื้นฐานมากมาย และแนะนำผู้เรียนเพื่อสร้างและฝึกอบรมโมเดล ML ที่ทันสมัยอย่างประณีต
แต่สิ่งหนึ่งที่ผู้เริ่มต้นส่วนใหญ่ต้องเผชิญคือส่วนการปรับใช้ โปรเจ็กต์แมชชีนเลิร์นนิงไม่สามารถปล่อยทิ้งไว้โดยไม่มีแอปแบบโต้ตอบได้ เพื่อให้ผู้ใช้สามารถโต้ตอบกับโมเดลได้อย่างง่ายดาย หรือแม้แต่แสดงโครงการของเรา เราจำเป็นต้องรวมมันไว้ในเว็บแอป แอป Android หรือโครงสร้าง API บางประเภทโดยใช้บริการคลาวด์
มีหลายวิธีในการสร้าง Wrapper เหล่านี้สำหรับโมเดลของเรา แต่ในบทความนี้ ผมจะเน้นที่วิธีที่คุณสามารถใช้ Streamlit เป็นวิธีแก้ไขปัญหานี้ และเหตุใดฉันจึงพิจารณาว่าเครื่องมือนี้เป็นเครื่องมือที่ทรงพลัง
บทความนี้จะมีคำแนะนำทีละขั้นตอนสำหรับการสร้างโปรเจ็กต์ ML และสร้างแพลตฟอร์มเว็บแอปโดยใช้ Streamlit โครงการที่เราจะสร้างคือแบบจำลองการคาดการณ์ราคาบ้านในแคลิฟอร์เนีย เว็บไซต์จะเป็นไดนามิกและไฮเปอร์พารามิเตอร์ เช่น อัตราการเรียนรู้ จำนวนเซลล์ประสาท ฯลฯ สามารถเปลี่ยนแปลงและทดลองได้โดยตรงผ่านเว็บแอป
หากคุณเดินหน้าสร้างเว็บแอปดังกล่าวโดยใช้เฟรมเวิร์กบางอย่าง เช่น Flask หรือ Django ฉันเกือบจะแน่ใจว่าจะใช้เวลามากในการสร้าง UI นั้นก่อน แล้วจึงมีปัญหาอื่นในการโฮสต์บนเซิร์ฟเวอร์ ดังนั้น ทุกคนสามารถเข้าถึงได้
และนี่ก็เป็นคำถามหลักที่ว่า 'เหตุใดผู้ที่ชื่นชอบแมชชีนเลิร์นนิงจึงต้องเสียเวลาไปกับการเรียนรู้เฟรมเวิร์ก UI บางอย่างในเมื่อพวกเขาสามารถใช้เวลาอันมีค่านั้นในการเรียนรู้เพื่อสร้างโมเดลที่ดีขึ้นได้'

จะมีหัวข้อมากมายเกี่ยวกับวิธีใช้ Streamlit สำหรับโครงการของคุณที่นี่ อย่าลังเลที่จะข้ามไปยังส่วนใดที่คุณต้องการทราบข้อมูลเพิ่มเติม
- ทำไมต้อง Streamlit?
- การสร้างแบบจำลอง ML พื้นฐาน
- เพิ่มความมหัศจรรย์โดยใช้ Streamlit
- การปรับใช้เว็บแอป Streamlit
- บทสรุป
ทำไมต้อง Streamlit?
Streamlit ทำให้เราสร้างเว็บแอป Machine Learning ได้ง่ายและรวดเร็ว วิธีอื่นที่ใช้ได้ในการพัฒนาเครื่องห่อดังกล่าวสำหรับรุ่น ML นั้นไม่สะดวกนัก
Flask เป็นเฟรมเวิร์กของไพ ธ อนที่อนุญาตให้ผู้ใช้พัฒนาเว็บแอปและปรับใช้โดยใช้ภาษาไพ ธ อน มันต้องใช้ความรู้ที่ดีเกี่ยวกับหลามและเรายังต้องใช้เวลาในการเรียนรู้มัน แม้กระทั่งหลังจากนั้น การพัฒนาเว็บแอปก็ไม่ใช่เรื่องง่ายเมื่อเทียบกับ Streamlit
Django เป็นอีกหนึ่งเฟรมเวิร์กที่ใช้ Python สำหรับการพัฒนาเว็บ อาจกล่าวได้ว่า Flask เป็นเวอร์ชันที่ดีและซับซ้อนกว่า ต้องใช้เวลามากในการเรียนรู้เฟรมเวิร์กนี้ และสุดท้ายการสร้างเว็บแอปโดยใช้เฟรมเวิร์กนั้นไม่ได้รวดเร็วอย่างที่เราต้องการ
Tensorflow.js เป็นวิธีบันทึกโมเดลที่ยอดเยี่ยมมากซึ่งเข้ากันได้กับแพลตฟอร์มเว็บ จากนั้นโมเดลเหล่านี้สามารถใช้สร้างเว็บแอปได้ การใช้งานที่ซับซ้อนหลายอย่างของโมเดล ML และสถาปัตยกรรมระดับสูงยังไม่ได้รับการสนับสนุนโดย Tensorflow.js มีหลายรุ่นที่จะทำงานใน Python และอาจใช้ไม่ได้กับ Javascript ในไลบรารี Tensorflow.js
อย่างที่ฉันพูดไปก่อนหน้านี้ เราไม่ควรเสียเวลาไปกับการเรียนรู้เฟรมเวิร์กเหล่านี้ และเรียนรู้วิธีสร้างโมเดล ML ที่ดีแทน และนี่คือที่มาของ Streamlit เป็นวิธีที่ง่ายและรวดเร็วที่สุดในการพัฒนาเว็บแอปพลิเคชัน เว็บแอปที่สร้างโดยใช้ Streamlit มีองค์ประกอบ UI ที่ยอดเยี่ยมและใช้งานง่ายมาก
เพื่อสนับสนุนการอ้างสิทธิ์ของฉันเกี่ยวกับ Streamlit ว่าเป็นวิธีที่ง่ายและรวดเร็วที่สุดในการสร้างเว็บแอป ML ให้ฉันแบ่งปันกับคุณว่าฉันพบกรอบงานนี้อย่างไร ฉันกำลังเรียนรู้วิธีสร้าง GAN และใช้มันเพื่อสร้างใบหน้าเทียม แปลงภาพร่างขาวดำเป็นสีสัน และการใช้งานดังกล่าว
โมเดลต่างๆ ทำงานได้ดีในโน้ตบุ๊ก Jupyter แต่ฉันต้องการแบ่งปันกับผู้อื่น ฉันเริ่มค้นหาเฟรมเวิร์กเพื่อสร้างแอปและโฮสต์โมเดล แต่ฉันไม่ต้องการเสียเวลาในการเรียนรู้เฟรมเวิร์กอื่น เนื่องจากฉันต้องการสำรวจการใช้งาน GAN อื่นๆ
ฉันได้ตรวจสอบแหล่งข้อมูลทางเลือกทั้งหมดที่ฉันพูดถึงในบทความนี้ก่อนหน้านี้ โมเดลตัวสร้างที่ใช้ในโปรเจ็กต์การสร้าง Sketch-To-Color นั้นซับซ้อนเล็กน้อย เป็นโมเดลสถาปัตยกรรม U-Net และต้องการให้คุณข้ามการเชื่อมต่อ
เนื่องจากมีความซับซ้อนสูง ฉันจึงไม่สามารถแปลงโมเดลสุดท้ายสำหรับ Javascript โดยใช้ Tensorflow.js การเรียนรู้ Flask หรือ Django ตั้งแต่เริ่มต้นไม่ใช่ตัวเลือกสำหรับฉัน ดังนั้นฉันจึงเริ่มค้นหาเฟรมเวิร์กหรือไลบรารีอื่นๆ
นี่คือตอนที่ฉันเจอ Streamlit ในบทความของ Adrien Treuille เขาแสดงให้เห็นว่าเขาสร้างเว็บแอปที่น่าทึ่งสำหรับ TL-GAN ได้อย่างไรโดยใช้โค้ดน้อยกว่า 13 บรรทัด ทั้งหมดนี้เป็นไปได้เพียงเพราะ Streamlit
เอกสารบนเว็บไซต์อย่างเป็นทางการของพวกเขานั้นแม่นยำและมีประโยชน์มากเช่นกัน ฉันพยายามสร้างเว็บแอป Streamlit สำหรับโมเดล Sketch to Color GAN ของฉัน และมันน่าทึ่งมาก ฉันต้องเพิ่มรหัส 12 บรรทัดในรหัสหลามที่มีอยู่เท่านั้น นี่คือเหตุผลที่ในที่สุดฉันก็ได้สำรวจ Streamlit และสร้างโครงการอื่นๆ โดยใช้มัน
การสร้างแบบจำลอง ML พื้นฐาน
ตามที่ระบุไว้ก่อนหน้านี้ เราจะพิจารณาปัญหาการคาดการณ์ราคาบ้านในแคลิฟอร์เนียสำหรับตัวอย่างนี้ ก่อนอื่น มาดูว่าเรามักจะสร้างแบบจำลองสำหรับสิ่งนี้อย่างไร เป็นปัญหาการถดถอย
อันดับแรก เราจะนำเข้าไลบรารีที่จำเป็นสำหรับโมเดล ML อย่างง่ายของเรา เราจะใช้ TensorFlow, pandas และ NumPy
นำเข้าเทนเซอร์โฟลว์เป็น tf
นำเข้า numpy เป็น np
นำเข้าแพนด้าเป็น pd
ตอนนี้ เราจะใช้ชุดข้อมูลจาก Scikit-Learn เพื่อดาวน์โหลดชุดข้อมูลที่อยู่อาศัยในแคลิฟอร์เนีย
จาก sklearn.datasets นำเข้า fetch_california_housing
ที่อยู่อาศัย = fetch_california_housing()
ต่อไป เราต้องแบ่งข้อมูลที่โหลดออกเป็นชุดฝึก ตรวจสอบ และชุดทดสอบ มีหลายวิธีในการทำเช่นนี้ เราจะใช้ฟังก์ชัน train_test_split ที่มีอยู่ในห้องสมุด Scikit-Learn การใช้สองครั้งจะแบ่งชุดข้อมูลออกเป็น 3 ชุด ได้แก่ การตรวจสอบความถูกต้องและการทดสอบ
จาก sklearn.model_selection นำเข้า train_test_split
X_train_full, X_test, y_train_full, y_test = train_test_split(
housing.data, housing.target
)
X_train, X_valid, y_train, y_valid = train_test_split (
X_train_full, y_train_full
)
ข้อมูลที่เรามีให้มีค่าลองจิจูดและละติจูดของแต่ละรายการ เพื่อให้เห็นภาพได้ดีขึ้น เราสามารถจัดทำแผนภาพแบบกระจายบนแผนที่ ในการใช้แผนที่ เราจะนำเข้า ห้องสมุด Altair
นำเข้า altair เป็น alt
map_data = pd.DataFrame (
เอ็กซ์_เทรน
คอลัมน์=[
'เมดอิงค์'
'อายุบ้าน',
'อเวรูมส์'
'AveBedrms',
'ประชากร',
'AveOccup',
'ละติจูด',
'ลองจิจูด'
])
จุดกึ่งกลาง = (np.average(map_data["latitude"]), np.average(map_data["longitude"]))
st.write(pdk.เด็ค(
map_style=”mapbox://styles/mapbox/light-v9″,
initial_view_state={
“ละติจูด”: จุดกึ่งกลาง[0],
“ลองจิจูด”: จุดกึ่งกลาง[1],
“ซูม”: 6,
“พิทช์”: 75,
},
ชั้น =[
pdk.Layer(
“ชั้นหกเหลี่ยม”,
ข้อมูล=map_data,
get_position=["ลองจิจูด", "ละติจูด"],
รัศมี=1000,
ระดับความสูง_สเกล=4,
height_range=[0, 10000],
เลือกได้=จริง
อัด=จริง
),
],
))
ข้อมูลที่เรามีอยู่กับเราในขณะนี้ไม่ได้รับการประมวลผลอย่างดีสำหรับโมเดล เราต้องทำการประมวลผลล่วงหน้าเพื่อให้ได้ผลลัพธ์ที่ดีขึ้น ก่อนอื่น เราจะต้องทำให้ค่าเป็นมาตรฐาน เนื่องจากโมเดลการเรียนรู้ของเครื่องส่วนใหญ่จะทำงานได้ดีที่สุดเมื่อข้อมูลอยู่ในช่วงค่าขนาดเล็ก สำหรับสิ่งนี้ เราจะใช้คลาส StandardScaler จากไลบรารี sklearn
จาก sklearn.preprocessing นำเข้า StandardScaler
scaler = StandardScaler ()
X_train = scaler.fit_transform (X_train)
X_valid = scaler.transform (X_valid)
X_test = scaler.transform (X_test)
หลังจากเตรียมข้อมูลแล้ว เรามาสร้างโมเดลกัน โมเดลนี้จะเป็นโครงข่ายประสาทเทียมที่มีจำนวนเซลล์ประสาทที่ระบุในชั้นอินพุตแรกและเซลล์ประสาทตัวเดียวในเลเยอร์สุดท้าย เนื่องจากเป็นปัญหาการถดถอย สามารถทำได้โดยใช้ไลบรารี TensorFlow
นำเข้าเทนเซอร์โฟลว์เป็น tf
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(n_neurons, การเปิดใช้งาน='relu', input_shape=X_train.shape[1:]),
tf.keras.layers.หนาแน่น(1)
])
ใน TensorFlow เราต้องคอมไพล์โมเดลหลังจากสร้างมันขึ้นมา ที่นี่เราต้องพูดถึงฟังก์ชั่นการสูญเสียที่เราจะใช้และเครื่องมือเพิ่มประสิทธิภาพที่เราต้องการ เราจะใช้ฟังก์ชันการสูญเสียข้อผิดพลาดกำลังสองเฉลี่ยและเครื่องมือเพิ่มประสิทธิภาพ SGD ด้วยอัตราการเรียนรู้เฉพาะ
model.คอมไพล์(
การสูญเสีย='mean_squared_error',
เครื่องมือเพิ่มประสิทธิภาพ=tf.keras.optimizers.SGD(l_rate)
)
ทุกอย่างอยู่ในสถานที่ในขณะนี้ สิ่งที่เราต้องทำคือฝึกโมเดล ใน TensorFlow สามารถทำได้โดยเรียกใช้เมธอด fit() เราสามารถบันทึกบันทึกทั้งหมดในตัวแปร ประวัติ .
ประวัติ = model.fit(
เอ็กซ์_เทรน
y_train,
ยุค=n_epochs,
validation_data=(X_valid, y_valid)
)
หลังจากการฝึกอบรม เรายังสามารถประเมินความถูกต้องและความสูญเสียของแบบจำลองของเราโดยใช้วิธีการประเมิน ()
การประเมิน = model.evaluate(X_test, y_test)
ทีนี้ ถ้าเราต้องการทำนายราคาบ้านใด ๆ โดยใช้โมเดลนี้ เราก็สามารถทำได้โดยเรียกเมธอด, ทำนาย( )
X_new = X_test[:3]
การคาดคะเน = model.predict(X_new)
นี่คือวิธีที่คุณสามารถสร้างแบบจำลองการคาดการณ์ราคาบ้านอย่างง่ายโดยใช้ TensorFlow, scikit-learn และ pandas แต่ปัญหาอย่างที่คุณเห็นคือไม่มีทางที่จะแสดงโมเดลนี้ให้ผู้ใช้คนอื่นเห็นในที่ที่พวกเขาสามารถโต้ตอบกับโมเดลได้ และนี่เป็นเพียงโมเดลใน Jupyter Notebook ตอนนี้มาเพิ่มความมหัศจรรย์ด้วย Streamlit!
อ่านเพิ่มเติม: แนวคิดโครงการการเรียนรู้ของเครื่อง
เพิ่มความมหัศจรรย์ด้วย Streamlit
ในการสร้างเว็บแอป Machine Learning คุณเพียงแค่เพิ่มโค้ดสองสามบรรทัดสำหรับการเรียกใช้ฟังก์ชัน Streamlit เท่านี้ก็เรียบร้อย คุณไม่จำเป็นต้องมี HTML, CSS หรือ Javascript แค่หลามบริสุทธิ์!
ใช่คุณอ่านถูกต้อง คุณไม่จำเป็นต้องกังวลเกี่ยวกับสิ่งอื่น เพียงติดตั้ง Streamlit ลงในระบบของคุณ เท่านี้คุณก็พร้อมใช้งานแล้ว ใช้คำสั่งต่อไปนี้ในเทอร์มินัลของคุณ:
pip ติดตั้ง streamlit
คุณสามารถใช้คำสั่งต่อไปนี้เพื่อสำรวจในแอพ Hello World เป็นตัวอย่างที่ดีของรูปลักษณ์ของเว็บแอปโดยใช้ Streamlit:
คล่องตัว สวัสดี
หลังจากติดตั้ง Streamlit ในเครื่องแล้วและเพิ่มบรรทัดวิเศษลงในโค้ด คุณต้องดำเนินการคำสั่งต่อไปนี้เพื่อเรียกใช้แอปในเครื่อง:
เรียกใช้ streamlit file_name.py
ดังนั้นคำถามในตอนนี้คือ "โค้ดที่วิเศษเหล่านั้นคืออะไร" พวกมันค่อนข้างง่าย ก่อนอื่นฉันจะอธิบายฟังก์ชันพื้นฐานที่ใช้ใน Streamlit จากนั้นฉันจะแสดงโค้ดเพื่อให้คุณสามารถเชื่อมโยงมันกับตัวอย่างได้โดยตรง
ก่อนสิ่งอื่นใด เราจะนำเข้าไลบรารี streamlit โดยใช้โค้ดต่อไปนี้:
นำเข้าสตรีมเป็น st
คุณลักษณะสำคัญประการแรกคือคุณสามารถพิมพ์อะไรก็ได้ในเครื่องหมายคำพูดคู่ 3 อัน ซึ่งจะแสดงข้อความตามที่ปรากฏในเว็บแอป รองรับไวยากรณ์ภาษามาร์กดาวน์ คุณจึงทำสิ่งต่างๆ ได้มากมาย เช่น ส่วนหัว หัวข้อย่อย ตาราง และอื่นๆ อีกมากมาย คุณสามารถใช้ ฟังก์ชัน st.write() แทนสัญกรณ์นี้ได้ มันมีฟังก์ชั่นเดียวกัน
ถัดไปคือ ฟังก์ชัน with st.echo(): โดยพื้นฐานแล้วจะรันโค้ด python ที่เขียนไว้ จากนั้นจะแสดงบนเว็บแอปด้วย ด้วยวิธีนี้ เราจึงสามารถสร้างเว็บแอปที่แสดงวิธีการสร้างได้
st.empty() เป็นพื้นที่ที่สงวนไว้สำหรับเนื้อหาแบบไดนามิกบางส่วนในภายหลัง
st.spinner() แสดงองค์ประกอบการโหลดเมื่อมีความล่าช้าในการรันโค้ดบางส่วน
st.success() แสดงข้อความเป็นสีเขียว มีแง่มุมการออกแบบที่ยอดเยี่ยมของบทสนทนาที่ประสบความสำเร็จ
st.sidebar() แสดงเนื้อหาในแถบด้านข้างทางด้านซ้ายโดยค่าเริ่มต้น
st.sidebar.slider() ให้ตัวเลื่อนในแถบด้านข้างเพื่อเลือกค่าจากช่วงของตัวเลขที่กำหนด st.sidebar.selectbox() ให้คุณเลือกค่าจากรายการที่กำหนด และ Streamlit มีฟังก์ชันและฟีเจอร์ที่ยอดเยี่ยมอีกมากมายที่อัดแน่นอยู่ในนั้น คุณลักษณะบางอย่างมีดังนี้:
- การเปลี่ยนแปลงแบบสดเมื่อคุณบันทึกไฟล์
- เรียกใช้แอปอีกครั้งโดยกด R บนแป้นพิมพ์
- แคชที่ชัดเจนเพียงแค่กด C บนแป้นพิมพ์
- บันทึกเว็บแอปและบันทึกไฟล์วิดีโอในเครื่องเพื่อแชร์กับทุกคน
…และอีกมากมาย
ต้องอ่าน: อาชีพในการเรียนรู้ของเครื่อง
รหัส
นำเข้าสตรีมเป็น st
นำเข้า altair เป็น alt
นำเข้า pydeck เป็น pdk
train_area = st.empty()
“””
# ราคาที่อยู่อาศัยในแคลิฟอร์เนีย
นี่คือชุดข้อมูลราคาที่อยู่อาศัยในแคลิฟอร์เนียซึ่งมีข้อมูลจากการสำรวจสำมะโนประชากรของสหรัฐอเมริกาในปี 1990 ตารางต่อไปนี้แสดงคำอธิบาย ช่วงข้อมูล และชนิดข้อมูลสำหรับแต่ละฟีเจอร์ในชุดข้อมูล

## มาดูของนำเข้ากันก่อนครับ
“””
ด้วย st.echo():
นำเข้าเทนเซอร์โฟลว์เป็น tf
นำเข้า numpy เป็น np
นำเข้าแพนด้าเป็น pd
“””
## กำลังโหลดชุดข้อมูล
เราจะใช้โมดูลชุดข้อมูลของ scikit-learn เพื่อนำข้อมูลซึ่งได้รับการล้างแล้วสำหรับเราและมีเพียงคุณสมบัติเชิงตัวเลขเท่านั้น
“””
ด้วย st.echo():
จาก sklearn.datasets นำเข้า fetch_california_housing
ที่อยู่อาศัย = fetch_california_housing()
“””
สิ่งนี้จะโหลดข้อมูลทั้งหมดในตัวแปร `housing' ดังที่คุณเห็นด้านล่าง
“””
st.subheader('คุณสมบัติการป้อนข้อมูล')
ที่อยู่อาศัย.data
st.subheader('Output Labels')
ที่อยู่อาศัย.เป้าหมาย
“””
## แยกข้อมูลออกเป็นชุดฝึก ทดสอบ และกำลังพัฒนา
นี่เป็นหนึ่งในสิ่งสำคัญที่สุดในช่วงเริ่มต้นของโซลูชัน Machine Learning เนื่องจากผลลัพธ์ของโมเดลใดๆ อาจขึ้นอยู่กับว่าคุณกระจายข้อมูลไปยังชุดเหล่านี้ได้ดีเพียงใด
โชคดีสำหรับเรา เรามี scikit-learn เพื่อช่วยเหลือที่มันกลายเป็นเรื่องง่ายเหมือนโค้ด 2 บรรทัด
“””
ด้วย st.echo():
จาก sklearn.model_selection นำเข้า train_test_split
X_train_full, X_test, y_train_full, y_test = train_test_split(
housing.data, housing.target
)
X_train, X_valid, y_train, y_valid = train_test_split (
X_train_full, y_train_full
)
“””
ฟังก์ชัน `train_test_split()` แบ่งข้อมูลออกเป็น 2 ชุด โดยที่ชุดทดสอบคิดเป็น 25% ของชุดข้อมูลทั้งหมด เราใช้ฟังก์ชันเดียวกันนี้อีกครั้งใน train_full เพื่อแบ่งออกเป็นชุดฝึกและชุดตรวจสอบความถูกต้อง 25% เป็นพารามิเตอร์เริ่มต้นและคุณสามารถปรับแต่งได้ตามความต้องการของคุณ ดูได้จาก [เอกสารประกอบของ Scikit-Learn](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html)
## การดูข้อมูลรถไฟ
คอลัมน์แสดงข้อมูลต่อไปนี้:
“””
st.write(housing.feature_names)
“””
ตอนนี้เรามาดูที่ตั้งของบ้านโดยวางแผนบนแผนที่โดยใช้ค่าละติจูดและลองจิจูด:
“””
ด้วย st.echo():
map_data = pd.DataFrame (
เอ็กซ์_เทรน
คอลัมน์=[
'เมดอิงค์'
'อายุบ้าน',
'อเวรูมส์'
'AveBedrms',
'ประชากร',
'AveOccup',
'ละติจูด',
'ลองจิจูด'
])
จุดกึ่งกลาง = (np.average(map_data["latitude"]), np.average(map_data["longitude"]))
st.write(pdk.เด็ค(
map_style=”mapbox://styles/mapbox/light-v9″,
initial_view_state={
“ละติจูด”: จุดกึ่งกลาง[0],
“ลองจิจูด”: จุดกึ่งกลาง[1],
“ซูม”: 6,
“พิทช์”: 75,
},
ชั้น =[
pdk.Layer(
“ชั้นหกเหลี่ยม”,
ข้อมูล=map_data,
get_position=["ลองจิจูด", "ละติจูด"],
รัศมี=1000,
ระดับความสูง_สเกล=4,
height_range=[0, 10000],
เลือกได้=จริง
อัด=จริง
),
],
))
“””
**อย่าลังเลที่จะซูมเข้าหรือลากขณะกดปุ่ม ALT เพื่อเปลี่ยนมุมมองภาพ 3 มิติของแผนที่ ตามต้องการ**
## กำลังประมวลผลล่วงหน้า
ดังที่ได้กล่าวไว้ก่อนหน้านี้ ชุดข้อมูลนี้ได้รับการประมวลผลล่วงหน้าอย่างดีโดย scikit-learn เพื่อให้เราใช้งานโดยตรงโดยไม่ต้องกังวลเกี่ยวกับค่า NaN และสิ่งอื่น ๆ
แม้ว่าเราจะปรับขนาดค่าในช่วงเฉพาะโดยใช้ "StandardScaler" เพื่อช่วยให้แบบจำลองของเราทำงานได้อย่างมีประสิทธิภาพ
“””
ด้วย st.echo():
จาก sklearn.preprocessing นำเข้า StandardScaler
scaler = StandardScaler ()
X_train = scaler.fit_transform (X_train)
X_valid = scaler.transform (X_valid)
X_test = scaler.transform (X_test)
“””
## การสร้างแบบจำลอง
เราจะสร้าง Sequential Model อย่างง่ายด้วยเลเยอร์แรกที่มีเซลล์ประสาท 30 เซลล์และฟังก์ชันการเปิดใช้งานของ RELU
เลเยอร์ถัดไปจะเป็นเลเยอร์เซลล์ประสาทเดียวที่ไม่มีฟังก์ชันกระตุ้น เนื่องจากเราต้องการให้โมเดลทำนายช่วงของค่า ไม่ใช่แค่ผลลัพธ์แบบไบนารีหรือหลายคลาส เช่น ปัญหาการจำแนกประเภท
“””
st.sidebar.title('ไฮเปอร์พารามิเตอร์')
n_neurons = st.sidebar.slider('Neurons', 1, 128, 30)
l_rate = st.sidebar.selectbox('อัตราการเรียนรู้', (0.0001, 0.001, 0.01), 1)
n_epochs = st.sidebar.number_input('จำนวนยุค', 1, 50, 20)
#n_neurons, l_rate และ _nepochs เป็นอินพุตที่นำมาจากผู้ใช้สำหรับการฝึกโมเดล ค่าดีฟอลต์สำหรับค่าเหล่านี้จะถูกตั้งค่าไว้ด้วย ค่าเริ่มต้นสำหรับ n_neurons คือ 30 ค่าเริ่มต้นสำหรับ l_rate คือ 0.01 และค่าเริ่มต้นสำหรับ n_epochs คือ 20 ดังนั้นในตอนเริ่มต้น โมเดลจะมีเซลล์ประสาท 30 เซลล์ในเลเยอร์แรก อัตราการเรียนรู้จะเป็น 0.01 และจำนวนยุคสำหรับ ซึ่งนางแบบจะฝึกให้คือ 20 คน
ด้วย st.echo():
นำเข้าเทนเซอร์โฟลว์เป็น tf
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(n_neurons, การเปิดใช้งาน='relu', input_shape=X_train.shape[1:]),
tf.keras.layers.หนาแน่น(1)
])
“””
## กำลังรวบรวมโมเดล
Tensorflow keras API มอบฟังก์ชัน `model.compile()` ให้กับเรา เพื่อกำหนดตัวเพิ่มประสิทธิภาพ ฟังก์ชันการสูญเสีย และรายละเอียดอื่นๆ เล็กน้อยสำหรับโมเดล
“””
ด้วย st.echo():
model.คอมไพล์(
การสูญเสีย='mean_squared_error',
เครื่องมือเพิ่มประสิทธิภาพ=tf.keras.optimizers.SGD(l_rate)
)
“””
## ฝึกโมเดล
ในการฝึกโมเดล คุณเพียงแค่เรียกใช้ฟังก์ชัน `fit()` บนโมเดลที่มีชุดการฝึกและการตรวจสอบความถูกต้อง และจำนวนช่วงที่คุณต้องการให้โมเดลฝึก
**ลองเล่นกับไฮเปอร์พารามิเตอร์จากแถบด้านข้างทางด้านซ้าย และคลิกที่ปุ่ม `Train Model` ที่ระบุด้านล่างเพื่อเริ่มการฝึก**
“””
รถไฟ = st.button ('โมเดลรถไฟ')
ถ้ารถไฟ:
ด้วย st.spinner('Training Model…'):
ด้วย st.echo():
model.summary(print_fn=แลมบ์ดา x: st.write(“{}”.format(x)))
ประวัติ = model.fit(
เอ็กซ์_เทรน
y_train,
ยุค=n_epochs,
validation_data=(X_valid, y_valid)
)
st.success('การฝึกโมเดลเสร็จสมบูรณ์!')
“””
## ประสิทธิภาพของโมเดล
“””
ด้วย st.echo():
st.line_chart(pd.DataFrame(history.history))
“””
## การประเมินแบบจำลองในชุดทดสอบ
อีกขั้นตอนที่สำคัญแต่ง่ายที่จะทำคือการประเมินแบบจำลองของคุณกับข้อมูลการทดสอบที่ไม่เคยเห็นมาก่อน จำไว้ว่าคุณควรทำสิ่งนี้หลังจากคุณแน่ใจเพียงพอเกี่ยวกับแบบจำลองที่คุณสร้างขึ้น และคุณควรต่อต้านการปรับแต่งไฮเปอร์พารามิเตอร์ใดๆ หลังจากประเมินแบบจำลองบนชุดทดสอบ เพราะมันจะทำให้ดีกว่าสำหรับชุดทดสอบและอีกครั้งจะเป็นเช่นนั้น เป็นปัญหาทั่วไปเมื่อโมเดลจะเห็นข้อมูลใหม่ในขั้นตอนการผลิต
“””
ด้วย st.echo():
การประเมิน = model.evaluate(X_test, y_test)
การประเมิน
“””
> การสูญเสียในชุดทดสอบนี้แย่กว่าชุดตรวจสอบเล็กน้อย ซึ่งเป็นไปตามที่คาดไว้ เนื่องจากตัวแบบไม่เคยเห็นภาพจากชุดทดสอบ
“””
“””
## การทำนายโดยใช้แบบจำลอง
“””
ด้วย st.echo():
X_new = X_test[:3]
การคาดคะเน = model.predict(X_new)
“””
### การคาดการณ์
“””
คำทำนาย
“””
### ความจริงพื้นดิน
“””
y_test[:3]
นี้มัน! โค้ดพิเศษเพียงไม่กี่บรรทัด และคุณได้สร้างเว็บแอปที่ยอดเยี่ยมซึ่งดูสวยงามและมีเนื้อหาแบบไดนามิกด้วย มันไม่ได้ยากขนาดนั้นเลยเหรอ? ลองสร้างโปรเจ็กต์ต่างๆ และใช้ฟังก์ชันอื่นๆ ของ Streamlit จากเอกสารประกอบ มันค่อนข้างง่ายและใช้งานง่าย
อ่าน: การเรียนรู้ของเครื่องด้วย Python
การปรับใช้ Streamlit Web App
แอปพลิเคชันเว็บ Streamlit สามารถปรับใช้เพื่อการใช้งานโดยตรงผ่านตัวเลือกต่างๆ ที่มีอยู่บนอินเทอร์เน็ต เราสามารถอธิบายสั้น ๆ และดูว่ามันสามารถทำได้อย่างไร
ก่อนที่จะไปยังแพลตฟอร์มอื่นๆ ที่สามารถช่วยเราปรับใช้เว็บแอปของเรา มาดูกันว่า Streamlit มีอะไรให้เราบ้าง ฟีเจอร์ล่าสุดที่พวกเขาทำคือ Streamlit Sharing ซึ่งช่วยให้ผู้ใช้สามารถปรับใช้เว็บแอป Streamlit ได้ในคลิกเดียว
หากคุณมีรหัสที่อัปโหลดในที่เก็บ GitHub คุณสามารถเลือกที่เก็บจากแดชบอร์ดของ Streamlit และรหัสจะโฮสต์ให้คุณโดยอัตโนมัติ มันวิเศษมากและฟรี ณ ตอนนี้ ไม่เคยมีวิธีที่ง่ายกว่านี้มาก่อนในการปรับใช้เว็บแอปการเรียนรู้ของเครื่อง
Heroku เป็นอีกวิธีที่ดีในการปรับใช้เว็บแอป Streamlit ด้วยวิธีนี้ คุณจะไม่ต้องเลือกเซิร์ฟเวอร์คลาวด์ใดๆ แล้วตั้งค่าอินสแตนซ์เสมือนในเซิร์ฟเวอร์เหล่านั้น ทั้งหมดนี้ได้รับการดูแลโดย Heroku
มีข้อเสียอย่างหนึ่งอย่างง่ายใน Heroku ที่เวอร์ชันฟรีจะไม่อนุญาตให้คุณมีแพ็กเกจทั้งหมดที่เกินขนาด 512MB ในเวอร์ชันฟรี TensorFlow 2.2.0 ที่ฉันใช้สำหรับโครงการนี้ใหญ่กว่าพื้นที่ที่ระบุเล็กน้อย ดังนั้นฉันจึงต้องใช้บริการอื่น
AWS (Amazon Web Services) เป็นวิธีที่ดีในการปรับใช้แอป Streamlit ของคุณ มันซับซ้อนเล็กน้อยสำหรับผู้เริ่มต้น แต่เมื่อคุณใช้งาน การตั้งค่าจะง่ายขึ้น พวกเขาให้อินสแตนซ์ EC2 ฟรีสำหรับผู้ใช้ใหม่ คุณสามารถเปิดใช้ Ubuntu 18.04 หรือสูงกว่า และติดตั้งการพึ่งพาทั้งหมดที่จำเป็นสำหรับแอป
หลังจากตั้งค่าทุกอย่างแล้ว คุณสามารถเรียกใช้แอปโดยใช้คำสั่ง – streamlit run filename.py ที่นี่ คุณจะได้รับ URL สาธารณะที่สามารถแชร์กับทุกคนได้ ข้อเสียเปรียบหลักประการหนึ่งที่นี่คือแอปไม่พร้อมใช้งานออนไลน์หากคุณปิดอินสแตนซ์ ดังนั้นอินสแตนซ์ฟรีจะมีข้อจำกัดบางประการ
หากคุณมีรหัสในที่เก็บ GitHub มีอีกวิธีที่ยอดเยี่ยมในการโฮสต์แอปของคุณ มันไม่เป็นมืออาชีพและถูกกฎหมายมากนักเพราะผู้ใช้จำเป็นต้องติดตั้ง Streamlit บนระบบของพวกเขาด้วย
หาก Streamlit พร้อมใช้งานบนระบบ และคุณมีลิงก์สำหรับไฟล์ python ของแอป Streamlit คุณสามารถเรียกใช้เว็บแอปได้โดยเพียงดำเนินการคำสั่ง: streamlit run url คุณสามารถตรวจสอบแอพของฉันในเครื่องได้ หากคุณติดตั้ง Streamlit ใช้คำสั่งต่อไปนี้ในเทอร์มินัลของคุณ:

การวิ่งแบบสตรีม https://raw.githubusercontent.com/tejasmorkar/housing_price_prediction_aws/master/CaliforniaHousingPrices.py
บทสรุป
คุณได้เห็นแล้วว่า Streamlit เรียบง่ายแต่ทรงพลังเพียงใด ฉันไม่เคยเจอเครื่องมือแบบนี้มาก่อนที่ช่วยฉันได้ขนาดนี้ และทำให้ชีวิตการพัฒนาของฉันง่ายขึ้น นี่คือเหตุผลที่ฉันรู้สึกว่า Streamlit เป็นเฟรมเวิร์กที่น่าประทับใจที่ช่วยให้ทุกคนโฟกัสไปที่ส่วนสำคัญของการพัฒนา Machine Learning และช่วยให้เรามีสมาธิกับการเรียนรู้ที่สำคัญของ AI และ ML มากขึ้น สิ่งนี้ทำให้ช่วงการเรียนรู้ง่ายขึ้นมาก และทำให้เราสามารถสร้างและปรับใช้โปรเจกต์งานอดิเรกได้อย่างง่ายดาย
สิ่งหนึ่งที่ทำให้เฟรมเวิร์กนี้ใช้งานได้ง่ายคือเอกสารอย่างเป็นทางการ ทุกอย่างที่เขียนในเอกสารนั้นแม่นยำและชัดเจน ฉันแนะนำว่าคุณควรอ่านเอกสารหนึ่งครั้งแล้วลองใช้งานโครงการใหม่ เป็นวิธีที่ดีที่สุดในการเริ่มต้นใช้งานเฟรมเวิร์กใหม่ ค้นหาเอกสารอย่างเป็นทางการของ Streamlit ในลิงก์ต่อไปนี้ — https://docs.streamlit.io/en/stable/ target=”_blank” rel=”nofollow ”
ชุมชนเป็นแหล่งข้อมูลที่ดีที่สุดในการเรียนรู้สิ่งต่างๆ และค้นหาปัญหาด้วยโซลูชันของเรา Streamlit มีฟอรัมสนทนาที่ยอดเยี่ยมซึ่งคุณสามารถโพสต์คำถามใดๆ เกี่ยวกับขั้นตอนการพัฒนาแอป Streamlit ข้อสงสัยเกี่ยวกับการปรับใช้ คำขอคุณลักษณะ รายงานข้อบกพร่อง และอื่นๆ ที่อาจช่วยให้คุณสร้างแอปได้สำเร็จ เข้าร่วมฟอรั่มการอภิปรายในลิงค์ต่อไปนี้ - https://discuss.streamlit.io/
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับแมชชีนเลิร์นนิง โปรดดูที่ IIIT-B & upGrad's PG Diploma in Machine Learning & AI ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 450 ชั่วโมง กรณีศึกษาและการมอบหมายมากกว่า 30 รายการ IIIT- สถานะศิษย์เก่า B, 5+ โครงการหลักที่ใช้งานได้จริง & ความช่วยเหลือด้านงานกับบริษัทชั้นนำ
ปัญหาที่ใหญ่ที่สุดในการปรับใช้โปรเจ็กต์แมชชีนเลิร์นนิงคืออะไร
ปัญหาที่ใหญ่ที่สุดในการทำให้โปรเจ็กต์แมชชีนเลิร์นนิงใช้งานได้คือการรวบรวมข้อมูลไม่ครบถ้วน เวลาและเงินส่วนใหญ่ไม่เพียงพอที่จะรวบรวมข้อมูลทั้งหมดที่จำเป็นต่อการวิเคราะห์ที่แม่นยำ ดังนั้นข้อมูลที่รวบรวมได้ต้องมีความน่าเชื่อถือและมีคุณภาพดี นอกจากนี้ ต้องเลือกข้อมูลที่ถูกต้อง การเลือกข้อมูลเป็นกุญแจสำคัญในการปรับใช้โครงการ
Streamlit ในการเรียนรู้ของเครื่องคืออะไร
Streamlit เป็นอัลกอริธึมที่เพิ่มขึ้นสำหรับการเรียนรู้ของเครื่อง มันใช้ประโยชน์จากข้อเท็จจริงที่ว่าพื้นที่การค้นหาของโครงข่ายประสาทเทียมมีขนาดใหญ่มากและการฝึกอบรมนั้นรวดเร็ว ดังนั้นจึงไม่จำเป็นต้องค้นหาพื้นที่ทั้งหมด แต่สามารถสร้างโครงข่ายประสาทเทียมในเครื่องได้ StreamLit เป็นรูปแบบของหน่วยความจำระยะสั้นแบบยาวที่ใช้สำหรับการประมวลผลข้อมูลตามลำดับ เป็นอัลกอริธึมการเรียนรู้เชิงลึกที่ใช้ RNN เพื่อเข้ารหัสข้อมูลให้เป็นเวกเตอร์ของตัวเลข เวกเตอร์เหล่านี้สามารถใช้เพื่อแสดงข้อมูลในกราฟหรือข้อความ นอกจากนี้ยังสามารถใช้เพื่อสร้างข้อความภาษาธรรมชาติ
ฉันจะปรับใช้โดยใช้ Streamlit ได้อย่างไร
การปรับใช้กับ Streamlit นั้นง่ายมาก ขั้นแรก คุณต้องมีบัญชี Streamlit ประการที่สอง คุณต้องมีซอฟต์แวร์ที่ปรับใช้ได้ ตัวอย่างเช่น Beanstalk, S3 หรือ rsync ประการที่สาม คุณต้องเตรียมซอฟต์แวร์สำหรับการปรับใช้ คัดลอกแอปของคุณไปยังเว็บเซิร์ฟเวอร์โดยใช้ rsync หากคุณกำลังปรับใช้เว็บไซต์ใหม่ เว็บไซต์นั้นเป็นไดเรกทอรีที่คุณคัดลอก หากคุณกำลังปรับใช้เว็บไซต์ที่มีอยู่ เว็บไซต์ที่อัปโหลดคือไดเร็กทอรีที่คุณคัดลอก ที่ด้านซ้ายของหน้าจอใต้ปุ่ม