生成数据集
from sklearn.datasets import make_regression
import matplotlib.pyplot as plt
# 生成特征数量为1, 噪音为50的数据集
X, y = make_regression(n_features=1, n_informative=1, noise=50, random_state=8)
# 散点图
plt.scatter(X, y, c="orange", edgecolor="k")
plt.show()
回归分析
from sklearn.datasets import make_regression
from sklearn.neighbors import KNeighborsRegressor
import matplotlib.pyplot as plt
# 生成特征数量为1, 噪音为50的数据集
X, y = make_regression(n_features=1, n_informative=1, noise=50, random_state=8)
# knn 回归分析
reg = KNeighborsRegressor()
reg.fit(X, y)
# 预测结果可视化
z = np.linspace(-3, 3, 200).reshape(-1, 1)
plt.scatter(X, y, c="orange", edgecolor="k")
plt.plot(z, reg.predict(z), c="k", linewidth=3)
plt.title("KNN Regressor")
plt.show()
模型评分
调低邻居数量
KNN近邻数量默认是5,我们调低为2试试。
from sklearn.datasets import make_regression
from sklearn.neighbors import KNeighborsRegressor
import matplotlib.pyplot as plt
# 生成特征数量为1, 噪音为50的数据集
X, y = make_regression(n_features=1, n_informative=1, noise=50, random_state=8)
# knn 回归分析
reg = KNeighborsRegressor(n_neighbors=2)
reg.fit(X, y)
# 预测结果可视化
z = np.linspace(-3, 3, 200).reshape(-1, 1)
plt.scatter(X, y, c="orange", edgecolor="k")
plt.plot(z, reg.predict(z), c="k", linewidth=3)
plt.title("KNN Regressor")
plt.show()
分数从0.77提升到了0.86。