机器学习(9)--构建一个KNN回归器

构建一个KNN回归器

代码如下:

# -*- coding:utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from sklearn import neighbors

''' KNN 回归器'''

# 生成样本数据
amplitude = 10
num_points = 100
x = amplitude * np.random.rand(num_points, 1)-0.5*amplitude

# 计算目标并添加噪声 sinc 辛格函数 称为采样函数 抽样函数 基本正弦函数
# sinc(x)=sin(x)/x(x!=0)=1(x=0)
y = np.sinc(x).ravel()
y += 0.2*(0.5-np.random.rand(y.size))

# 画出图形
plt.figure()
plt.scatter(x,y,s=40,c='k',facecolor='none')
plt.title('Input data')

# 定义更加密集的网格 输入数据的10倍数定义网格
x_values=np.linspace(-0.5*amplitude,0.5*amplitude,10*num_points)[:,np.newaxis]

# 定义最近邻网格
num_neighbors=8

# 定义并训练回归器
knn_regressor=neighbors.KNeighborsRegressor(num_neighbors,weights='distance')
y_values=knn_regressor.fit(x,y).predict(x_values)

plt.figure()
plt.scatter(x,y,s=40,c='k',facecolors='none',label='input_data')
plt.plot(x_values,y_values,c='k',linestyle='--',label='Predicted values')
plt.xlim(x.min()-1,x.max()+1)
plt.ylim(y.min()-0.2,y.max()+0.2)
# 用于显示图例
plt.legend()
plt.title('K nearest  Neignbors Regressor')
plt.show()

输入数据分布图如下所示:

这里写图片描述

KNN回归器 预测值如下所示:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值