# 數據科學作業三相關問題 ### Q1: 如果y_train跟y_valid都已經進行Minmax的標準化了,則繪製邊界時如何修正成跟playground背景一樣有橘色和藍色有分界? A: 這部分不需要另外做調整沒關係,只要確認邊界的確有將兩類資料分開即可(也就是白色代表0藍色代表1)。 ### Q2: 繪圖時boundary_array `xx` 是只有兩個維度的,但如果NN model的input feature是設置4個會在畫decision boundary的時候出現錯誤,該如處理? A: 如果有對X_train和X_valid做feature engineering的話(例如像playground一樣產生平方項、交互項、sin函數),則可以把一樣的transform用在`xx`的每一筆資料(每一個座標點)上。例如以下是用 https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PolynomialFeatures.html 和 https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.FunctionTransformer.html 把原來兩個座標feature轉換為playground的七個feature大致上的code: ```python xx = Player.get_boundary_array() x1 = sin1.transform(xx[:,0]).reshape(-1, 1) #FunctionTransformer x2 = sin2.transform(xx[:,1]).reshape(-1, 1) #FunctionTransformer x3 = poly.transform(xx) # PolynomialFeatures xx2 = np.hstack([x1, x2, x3]) ``` 再把轉換完的`xx2`丟到model後得到機率丟進繪圖函數即可: ```python prob = model.predict(xx2) # or model(xx2) pg.draw_decision_boundary(fig, ax, node_id=pg.InputType.X1, prob=prob, discretize=False); ```