終於來到最後一個步驟了,當我們辛辛苦苦的訓練出了模型,就是要來實際使用它來玩玩看啦!因為我們要跟他互動終究還是一個 UI 介面來使用,所以我們就簡單的做了一個讓我們輸入的方式就好,如果會寫前端的話就可以嘗試弄一個好看的介面來玩玩看
from google.colab import files
import joblib
import pandas as pd
import numpy as np
from IPython.display import display
import ipywidgets as widgets
# 加載模型和預處理器
best_xgb = joblib.load('xgboost_house_price_model.joblib')
preprocessor = joblib.load('preprocessor.joblib')
def predict_house_price(location, area, age, is_new):
input_data = pd.DataFrame({
'位置': [location],
'房屋面積(坪)': [area],
'房齡(年)': [age],
'是否新房': [1 if is_new else 0]
})
# 計算單位面積價格(這裡使用平均值,可能需要更精確的計算方法)
avg_price = df_cleaned[df_cleaned['位置'] == location]['房價(萬)'].mean()
input_data['單位面積價格'] = avg_price / area
# 計算位置相關的統計特徵
input_data['位置平均房價'] = df_cleaned[df_cleaned['位置'] == location]['房價(萬)'].mean()
input_data['位置房價標準差'] = df_cleaned[df_cleaned['位置'] == location]['房價(萬)'].std()
# 應用預處理器
processed_data = preprocessor.transform(input_data)
# 進行預測
prediction = best_xgb.predict(processed_data)
# 轉換回原始尺度
prediction = np.exp(prediction) - 1
return prediction[0]
# 創建輸入界面
location_widget = widgets.Dropdown(
options=['松山區', '大安區', '信義區', '中山區', '大同區'],
description='位置:',
disabled=False,
)
area_widget = widgets.FloatText(
value=30,
description='面積(坪):',
disabled=False
)
age_widget = widgets.IntText(
value=10,
description='房齡(年):',
disabled=False
)
is_new_widget = widgets.Checkbox(
value=False,
description='是否新房',
disabled=False
)
output_widget = widgets.Output()
def on_button_clicked(b):
with output_widget:
output_widget.clear_output()
price = predict_house_price(
location_widget.value,
area_widget.value,
age_widget.value,
is_new_widget.value
)
print(f"預測房價: {price:.2f} 萬元")
button = widgets.Button(description="預測房價")
button.on_click(on_button_clicked)
# 顯示界面
display(location_widget, area_widget, age_widget, is_new_widget, button, output_widget)
實際執行出來的效果就會像這樣:
恭喜撒花~ 我們真的從 0 到 1 創造出一個訓練模型啦!(但我實測坪數越大反而越便宜,代表訓練還有得調整 QQ)
很開心能出生在這個時代,以一個非工程背景的人來說,我雖然學過機器學習,但就是對他的概念和原理比較熟悉,程式碼要完全獨自寫完真的太難了,但透過 AI 的輔助就可以真的把想法落實,就證明現在是一個「有想法+實踐」就有機會創造你想像的產品的時代
不過除了掌握工具,「學習怎麼使用工具」也是一門學問,與 AI 溝通最常見的技巧就是「優化 Prompt」,接下來我們就來學習怎麼跟 AI 互動吧!