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

TAG:機器學習 | Python |