python3機器學習經典實例-第五章構建推薦引擎24
構建一個KNN 回歸器
我們已經知道如何用KNN演算法構建分類器了,下面用KNN演算法構建回歸器。接下來學習如何構建KNN回歸器。
本程序無需特別的修改:
- 創建nn_regression.py文件,載入必要的數據包
import numpy as npimport matplotlib.pyplot as pltfrom sklearn import neighbors
- 生成一些服從正態分布的樣本數據:
# Generate sample dataamplitude = 10num_points = 100X = amplitude * np.random.rand(num_points, 1) - 0.5 * amplitude
- 下面在數據中加入一些雜訊來引入一些隨機性。加入雜訊的目的在於測試演算法是否能忽略雜訊,並仍然很健壯地運行函數:
# Compute target and add noisey = np.sinc(X).ravel() y += 0.2 * (0.5 - np.random.rand(y.size))
- 將數據可視化:
# Plot input dataplt.figure()plt.scatter(X, y, marker=o,s=50, edgecolors=black, facecolors=cyan)plt.title(Input data)
- 我們在上面生成了一些數據,並針對這些點做了連續函數的評價。接下來定義更密集的網格點:定義最近鄰的個數:
# Create the 1D grid with 10 times the density of the input datax_values = np.linspace(-0.5*amplitude, 0.5*amplitude, 10*num_points)[:, np.newaxis]# Number of neighbors to consider n_neighbors = 8
- 用之前定義的參數初始化並訓練KNN回歸器:
# Define and train the regressorknn_regressor = neighbors.KNeighborsRegressor(n_neighbors, weights=distance)y_values = knn_regressor.fit(X, y).predict(x_values)
- 將輸入數據和輸出數據交疊在一起,以查看回歸器的性能表現
plt.figure()plt.scatter(X, y, marker=o,s=50, edgecolors=black, facecolors=cyan, label=input data)plt.plot(x_values, y_values, linewidth= 3, c=pink, linestyle=--, label=predicted values)plt.xlim(X.min() - 1, X.max() + 1)plt.ylim(y.min() - 0.2, y.max() + 0.2)plt.axis(tight)plt.legend()plt.title(K Nearest Neighbors Regressor)plt.show()
- 結果輸出out
推薦閱讀:
※歸一化 正則化 標準化
※機器學習讀書筆記:模型評估與選擇
※台大林軒田機器學習課第四講筆記:機器學習的可行性
※我的人工智慧學習筆記(一)
※pytorch中如何處理RNN輸入變長序列padding