天天看點

機器學習之回歸問題----KNN回歸預備知識回歸簡介常用回歸算法KNN回歸

目錄

  • 預備知識
      • 關鍵詞彙總(中英文)
  • 回歸簡介
  • 常用回歸算法
  • KNN回歸
      • KNN回歸原理講解
      • 執行個體一

預備知識

  回歸任務的目标是預測連續值。你也可以以此來區分分類與回歸。分類是預測一個離散的值,二回歸是預測一個連續的值。

  比如,根據一個人的家庭情況、買車情況等預測其薪資。如果我們最後預測到其薪資為10000元/月,與預測其為10001元/月并不做明顯區分。很明顯,它與分類任務不同。

關鍵詞彙總(中英文)

  • 回歸(Regression)

回歸簡介

  一言以蔽之,就是一個變量由其他多個變量影響,我們希望尋找其具體的關系式,進而知道具體怎麼影響,從平均的角度上定量分析。

常用回歸算法

  • 最小二乘
  • 正規方程
  • 梯度下降
  • and so on …

KNN回歸

  一提起KNN,人們首先想到KNN分類,其實,還可以用KNN方法進行回歸。

KNN回歸原理講解

  請參考<<Python機器學習基礎教程>>

執行個體一

"""生成資料集并且繪圖"""
X, y = mglearn.datasets.make_wave(n_samples=40)
plt.plot(X, y, 'o')
plt.ylim(-3, 3)
plt.xlabel("Feature")
plt.ylabel("Target")

mglearn.plots.plot_knn_regression(n_neighbors=1)

mglearn.plots.plot_knn_regression(n_neighbors=3)

"""導入KNN回歸類,産生執行個體對象,并用訓練集拟合模型"""
from sklearn.neighbors import KNeighborsRegressor
X, y = mglearn.datasets.make_wave(n_samples=40)
# 将wave資料集分為訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
# 模型執行個體化,并将鄰居個數設為3
reg = KNeighborsRegressor(n_neighbors=3)
# 利用訓練資料和訓練目标值來拟合模型
reg.fit(X_train, y_train)

"""列印對于測試集的預測值"""
print("Test set predictions:\n{}".format(reg.predict(X_test)))

"""列印測試集上的誤差"""
print("Test set R^2: {:.2f}".format(reg.score(X_test, y_test)))

"""導入numpy庫(numerical)"""
import numpy as np
fig, axes = plt.subplots(1, 3, figsize=(15, 4))
"""建立1000個資料點,在-3和3之間均勻分布"""
line = np.linspace(-3, 3, 1000).reshape(-1, 1)
for n_neighbors, ax in zip([1, 3, 9], axes):
    """
    利用1個、3個或9個鄰居分别進行預測
    """
    reg = KNeighborsRegressor(n_neighbors=n_neighbors)
    reg.fit(X_train, y_train)
    ax.plot(line, reg.predict(line))
    ax.plot(X_train, y_train, '^', c=mglearn.cm2(0), markersize=8)
    ax.plot(X_test, y_test, 'v', c=mglearn.cm2(1), markersize=8)
    ax.set_title(
        "{} neighbor(s)\n train score: {:.2f} test score: {:.2f}".format(
         n_neighbors, reg.score(X_train, y_train),
         reg.score(X_test, y_test)))
    ax.set_xlabel("Feature")
    ax.set_ylabel("Target")
axes[0].legend(["Model predictions", "Training data/target",
                "Test data/target"], loc="best")
           
機器學習之回歸問題----KNN回歸預備知識回歸簡介常用回歸算法KNN回歸
機器學習之回歸問題----KNN回歸預備知識回歸簡介常用回歸算法KNN回歸
機器學習之回歸問題----KNN回歸預備知識回歸簡介常用回歸算法KNN回歸
機器學習之回歸問題----KNN回歸預備知識回歸簡介常用回歸算法KNN回歸