目录
代码:
import mglearn
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsRegressor
from sklearn.model_selection import train_test_split
import numpy as np
mglearn.plots.plot_knn_regression(n_neighbors=1)
# 获取数据
X,y=mglearn.datasets.make_wave(n_samples=40)
# 数据分割
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)))
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)
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","Train data/target","Test data/traget"],loc="best")