簡單說明
支持向量回歸是一種用來做預測的數學方法,屬于「機器學習」的一種。
它的目標是找到一條「最合適的線」,能夠大致描述數據點的趨勢,并允許數據點離這條線有一定的誤差(不要求所有點都完全落在這條線上)。
可以把它想象成:找到一條「寬帶」或「隧道」,大部分數據點都能在隧道里行走,而不是一定要貼著隧道的中心線。
支持向量回歸主要做了兩件事
找到一條「平滑的線」,盡可能靠近所有數據點。
允許有一點點誤差,只要誤差不超過某個范圍(叫「epsilon」),就認為是可以接受的。
這條線就是用來預測的線,它能幫助估算未來的數據。
SVR和普通回歸的區別
普通回歸(比如線性回歸):
只找到一條線,試圖讓誤差最小化。它對所有數據點很嚴格,偏差太大的點可能會讓線跑偏。
支持向量回歸(SVR):
它允許有一定的誤差,只要誤差在隧道里就不算問題。它更注重「整體趨勢」,不被個別點干擾。
(以上說明摘錄自MLer的文章)
數據的基本情況
漲跌幅預測
#只預測漲跌幅y = df['漲跌幅'].values
#print(f"訓練數據集,從{start_date_str}開始,總計 {len(y)}條數據,最后一天{day_read_last},漲跌幅為 {y[-1]:.2f}")# x 需要重新映射成一個2x1的數組類似[[1,2,3,4]]這樣的形式,reshape中-1代表全部 1代表1維
X = np.arange(len(y)).reshape(-1,1)# 創建 SVR 模型
svr_rbf = SVR(kernel='rbf', C=100, gamma=0.1, epsilon=0.1)# 擬合模型
svr_rbf.fit(X, y)# 為了能得到唯一的一個 y的數據,這里要做一個測試集的X,只有1個元素
X_test = np.arange(1).reshape(-1,1)# 預測漲跌幅
y_pred = svr_rbf.predict(X_test)[0]#print(f"通過 {i+1:2d} 年的{len(y):5d}條數據,預測 ({code}) {day_read_last} {str_day} 的漲跌幅為 {y_pred:.2f} %")
看看打印結果,