目錄
- 預備知識
-
-
- 關鍵詞彙總(中英文)
-
- 回歸簡介
- 常用回歸算法
- 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")