Scikit-learn_回归算法_k-近邻回归

一.描述

  • k-近邻分类适用于数据标签为离散变量的情况,而k-近邻回归适用于数据标签为连续变量的情况
  • k-近邻回归预测样本的标签由它最近临标签的均值计算而来

二.用法和参数

  • KneighborsRegressor类
    • 基于每个查询点的k个最近邻实现,其中k是用户指定的整数值
  • RadiusNeighborsRegressor类
    • 基于每个查询点的固定半径r内的临点数量实现,其中r是用户指定的浮点数值

三.实例

  • 使用KneighborsRegressor类对已知曲面上的样本做回归分析

    import numpy as np
    from sklearn.neighbors import KNeighborsRegressor
    import matplotlib.pyplot as plt
    import mpl_toolkits
    # 生成50*50的网格
    x, y = np.mgrid[-2:2:50j, -2:2:50j]
    # 计算网格上每一个点的高度值
    z = x * np.exp(-x ** 2 - y ** 2)
    # 随机生成区间[-2, 2)内的100个x
    _x = np.random.random(100) * 4 - 2
    # 随机生成区间[-2, 2)内的100个y
    _y = np.random.random(100) * 4 - 2
    _z = _x * np.exp(-_x ** 2 - _y ** 2) + (np.random.random(100) - 0.5) * 0.1
    # 训练样本集
    X_train = np.stack((_x, _y), axis=1)
    # 训练标签集
    y_train = _z
    # 测试样本集
    X_test = np.stack((x.ravel(), y.ravel()), axis=1)
    # 测试标签集
    y_test = z.ravel()
    # 实例化模型
    knr = KNeighborsRegressor()
    # 模型训练
    knr = KNeighborsRegressor().fit(X_train, y_train)
    # 模型预测
    z_knr = knr.predict(X_test)
    # 模型评估
    score = knr.score(X_test, y_test)
    score
    ax = plt.subplot(111, projection='3d')
    ax.scatter3D(_x, _y, _z, c='r')
    ax.plot_surface(x, y, z_knr.reshape(x.shape), cmap=plt.cm.hsv, alpha=0.5)
    plt.show()
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 很抱歉,我是AI语言模型,无法提供代码。以下是使用scikit-learn实现k近邻算法对forge数据集进行回归的步骤: 1. 导入所需库和数据集 ```python from sklearn.neighbors import KNeighborsRegressor from sklearn.datasets import make_regression X, y = make_regression(n_samples=100, n_features=2, noise=10, random_state=0) ``` 2. 创建K近邻回归模型 ```python knn = KNeighborsRegressor(n_neighbors=5) ``` 3. 拟合模型并进行预测 ```python knn.fit(X, y) y_pred = knn.predict(X) ``` 4. 评估模型性能 ```python from sklearn.metrics import mean_squared_error mse = mean_squared_error(y, y_pred) print("Mean Squared Error:", mse) ``` 以上是使用scikit-learn实现k近邻算法对forge数据集进行回归的基本步骤,具体实现可参考scikit-learn官方文档。 ### 回答2: 使用k近邻算法对Forge数据集进行回归可以帮助我们根据Forge数据集中的样本数据推断出新的数据,以预测未知的样本数据。该任务可以使用Scikit-learn库的KNeighborsRegressor实现。下面是实现该任务的详细步骤: 1. 导入必要的库和数据集 ```python import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import make_regression from sklearn.neighbors import KNeighborsRegressor from sklearn.model_selection import train_test_split # 加载数据集 X, y = make_regression(n_samples=100, n_features=2, noise=10) ``` 2. 分离训练集和测试集 ```python X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0) ``` 3. 创建K近邻回归模型 ```python # 创建K近邻回归模型 knn = KNeighborsRegressor(n_neighbors=5) ``` 4. 训练模型 ```python # 训练模型 knn.fit(X_train, y_train) ``` 5. 预测测试集 ```python # 预测测试集 y_pred = knn.predict(X_test) ``` 6. 评估模型性能 ```python # 评估模型性能 print("Test set R^2: {:.2f}".format(knn.score(X_test, y_test))) ``` 7. 可视化结果 ```python # 可视化结果 plt.scatter(y_test, y_pred) plt.plot([-100, 100], [-100, 100], '--k') plt.axis('tight') plt.xlabel('True value') plt.ylabel('Predicted value') plt.show() ``` 完整代码: ```python import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import make_regression from sklearn.neighbors import KNeighborsRegressor from sklearn.model_selection import train_test_split # 加载数据集 X, y = make_regression(n_samples=100, n_features=2, noise=10) # 分离训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0) # 创建K近邻回归模型 knn = KNeighborsRegressor(n_neighbors=5) # 训练模型 knn.fit(X_train, y_train) # 预测测试集 y_pred = knn.predict(X_test) # 评估模型性能 print("Test set R^2: {:.2f}".format(knn.score(X_test, y_test))) # 可视化结果 plt.scatter(y_test, y_pred) plt.plot([-100, 100], [-100, 100], '--k') plt.axis('tight') plt.xlabel('True value') plt.ylabel('Predicted value') plt.show() ``` 运行以上代码可以在Scikit-learn使用k近邻算法实现对Forge数据集进行回归预测。 ### 回答3: K近邻算法是一种很常用的算法,常用于分类和回归问题中。scikit-learn是一个Python的机器学习库,很方便使用,可以轻松实现K近邻算法。 Forge数据集是一个人工创建的用于分类和回归问题的数据集数据集是二维的,包含两个特征值和一个目标变量值。我们用K近邻算法对目标变量进行回归分析。 代码如下: ```python # 导入库和数据集 from sklearn.datasets import make_regression from sklearn.neighbors import KNeighborsRegressor from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt import numpy as np # 创建数据集 X, y = make_regression(n_samples=100, n_features=2, noise=10) # 数据集的划分 X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0) # 实例化KNN模型 knn = KNeighborsRegressor(n_neighbors=3) # 拟合模型 knn.fit(X_train, y_train) # 预测结果 y_pred = knn.predict(X_test) # 打印预测结果和实际结果 print('预测结果:', y_pred) print('实际结果:', y_test) # 画图展示 plt.scatter(X_test[:, 0], y_test, color='black', label='实际结果') plt.scatter(X_test[:, 0], y_pred, color='blue', label='预测结果') plt.legend() plt.show() ``` 其中,make_regression函数是用来生成数据集的。参数如下: - n_samples:生成样本数,默认100; - n_features:生成样本特征数,默认10; - noise:样本随机噪声,默认0.0。 train_test_split函数用来划分样本数据集。返回分别是训练集和测试集的特征数据和目标数据。在实例化KNN模型时,我们需要设置K值,即n_neighbors参数。我们选用了3,表示模型会以目标变量最接近的3个点作为预测结果。 拟合模型后,我们进行预测和实际结果的对比,并且使用plt.scatter绘制出预测结果和实际结果的散点图。 总之,使用scikit-learn库中的KNN模型,对于回归问题需要通过KNeighborsRegressor类来实现,非常方便。而对于分类问题,则需要使用KNeighborsClassifier类。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值