scikit-learn 中 Boston Housing 数据集问题解决方案

在部分旧教程或教材中是 sklearn,现在【2023】已经变更为 scikit-learn

  • 作用:开源机器学习库,支持有监督和无监督学习。它还提供了用于模型拟合、数据预处理、模型选择、模型评估和许多其他实用程序的各种工具。
  • 安装 pip install scikit-learn

Boston Housing 数据集

此数据集原本应该在 sklearn 中是自带数据集之一,但在 scikit-learn 1.2 版本由于某些特殊原因被移除,所以无法使用 load_boston() 获取

解决办法:既然自带的数据集没有 Boston Housing,那就想办法在网上找到开放式公共数据集,下载后加载到程序中。这也是网上常见的解决方案,大多借助 pandas, scipy, numpy 等方法下载,然后标准化加载数据,供 scikit-learn 使用。

我将表述一下我所有使用的方法:通过从 openml.org 存储库下载数据集,我直接使用 fetch_openml()

from sklearn.datasets import fetch_openml

data_x, data_y = fetch_openml(name="boston", version=1, as_frame=True, return_X_y=True, parser="pandas")
  • 其中 name 是数据集在 openml.org 上的名称
  • version 是版本号,根据 openml.org 上的描述,使用 1 版本是原始数据集,所以我选择 1 版本,具体根据对应数据集的描述选择
  • as_frame=True 表示返回 pandas 的 DataFrame 格式,这样可以直接使用 pandas 的方法进行数据处理
  • return_X_y 表示分别返回特征和标签,如果为 False 则返回一个字典【包含特征和标签】,如果你想要的是字典格式,可以设置为 False,而且默认也是 False
  • parser 表示用于加载 ARFF 文件的解析器,默认的是 liac-arff
  • 更复杂的参考官方文档:https://scikit-learn.org/stable/modules/generated/sklearn.datasets.fetch_openml.html#sklearn.datasets.fetch_openml

对 as_frame 分不分,看下面的内容你应该会有熟悉感觉,一般在分配训练数据和测试数据时都是下面步骤,我实验需求决定,所以我直接使用 as_frame=True 获取我想要的数据,如果你需要完整的,可以不使用 as_frame=True

from sklearn.model_selection import train_test_split

train_x, test_x, train_y, test_y = train_test_split(data_x, data_y, test_size=0.3, random_state=1001)

其他问题

使用上面可能会遇见一些问题【TypeError: can't multiply sequence by non-int of type 'float'】,一般是数据集格式问题,我在使用中是使用 numpy 进行调整的

import numpy as np
from sklearn import linear_model model = linear_model.LinearRegression()
model.fit(train_x, train_y)
pred_y = model.predict(test_x.astype(np.float64))
  • 像是 predict 运算时,需要将 test_x 转换为 np.float64 类型,反正报错时会提醒你使用什么格式的数据,根据情况进行转换就可以了

上面加载数据集时我使用 parser="pandas" 也是为了避免,sklearn 中有时对 pandas 数据格式的需求

总结

想办法获取远程或离线的数据集,通过 scikit-learn 自带工具或其他工具【pandas, scipy, numpy 等】加载即可使用,在使用时注意不同情况下使用的数据格式并做出对应调整。

scikit-learn 适用于存储为 numpy 数组或 scipy 稀疏矩阵的任何数字数据,因为 scikit-learn 开发中也使用这些工具。比如在上面的报错中有部分内部代码涉及 np,所以使用 numpy 转化格式就解决了报错问题。

File /opt/conda/envs/education/lib/python3.8/site-packages/sklearn/utils/extmath.py:189, in safe_sparse_dot(a, b, dense_output)
187 ret = np.dot(a, b)
188 else:
--> 189 ret = a @ b

scikit-learn 中 Boston Housing 数据集问题解决方案的更多相关文章

  1. (原创)(三)机器学习笔记之Scikit Learn的线性回归模型初探

    一.Scikit Learn中使用estimator三部曲 1. 构造estimator 2. 训练模型:fit 3. 利用模型进行预测:predict 二.模型评价 模型训练好后,度量模型拟合效果的 ...

  2. (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探

    目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...

  3. Scikit Learn: 在python中机器学习

    转自:http://my.oschina.net/u/175377/blog/84420#OSC_h2_23 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的 ...

  4. scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类 (python代码)

    scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类数据集 fetch_20newsgroups #-*- coding: UTF-8 -*- import ...

  5. 机器学习实战二:波士顿房价预测 Boston Housing

    波士顿房价预测 Boston housing 这是一个波士顿房价预测的一个实战,上一次的Titantic是生存预测,其实本质上是一个分类问题,就是根据数据分为1或为0,这次的波士顿房价预测更像是预测一 ...

  6. 2.sklearn库中的标准数据集与基本功能

    sklearn库中的标准数据集与基本功能 下面我们详细介绍几个有代表性的数据集: 当然同学们也可以用sklearn机器学习函数来挖掘这些数据,看看可不可以捕捉到一些有趣的想象或者是发现: 波士顿房价数 ...

  7. HashMap封装的数据用循环快速添加进list中产生的数据集全部相同的问题

    一.问题概述 在一次使用SimpleAdapter时,Data需要使用传入一条数据(Image.Text),该数据条使用HashMap封装.在用HashMap封装的数据用循环快速添加进list中产生了 ...

  8. 关于ASP.NET MVC开发设计中出现的问题与解决方案汇总 【持续更新】

    最近一直用ASP.NET MVC 4.0 +LINQ TO SQL来开发设计公司内部多个业务系统网站,在这其中发现了一些问题,也花了不少时间来查找相关资料或请教高人,最终都还算解决了,现在我将这些问题 ...

  9. td中使用overflow:hidden; 无效解决方案

    td中使用overflow:hidden; 无效解决方案 >>>>>>>>>>>>>>>>>> ...

  10. GEF-whole-upload教程中遇到的问题及解决方案

    最近在学习GEF开发,使用的是GEF-whole-upload这个教程.由于教程当时所使用的版本与本人使用的版本有一些差异,中间出现了不少问题,现在将解决方案分享给大家. 本人使用的Eclipse版本 ...

随机推荐

  1. Testlink for linux by Xampp

    Testlink 1.环境: (1)需要的环境配置: ①Linux system. ②Mysql ③apache ④Php (2)上面的2,3,4我们使用简易的Xamppp集成的环境,下面是安装配置x ...

  2. JVM调优学习笔记

    TODO:需要学习的命令 jps jstat -gcutil pid xxxx jmap histo:live pid

  3. 图的基本操作 (c语言)

    图的基本操作:创建 删除 遍历 创建:邻接矩阵和邻接表 十字链表 下面代码是邻接矩阵的定义和邻接表的创建 遍历:深度优先遍历(一条路走到黑) 广度优先遍历(树的层次遍历) 具体代码: #include ...

  4. raid5+lvm随笔

    1.准备磁盘,先做raid,再做lvm; /dev/sdb  /dev/sdc  /dev/sdd  /dev/sde [root@localhost ~]# mdadm -C -v /dev/md5 ...

  5. 查看shell 用户连接数

    w | grep pts |wc -l

  6. C# 将实体转xml/xml转实体

    xml转实体 /// <summary> /// 把xml转换成实体 /// </summary> /// <typeparam name="T"&g ...

  7. 解决 “fatal: Could not read from remote repository.“

    原文链接: https://blog.csdn.net/weixin_40922744/article/details/107576748 问题描述: 在使用Git将本地仓库推送到远程仓库的时候,发生 ...

  8. loadrunner入门(关联)

    左右边界:提取第一个id web_reg_save_param_ex(                 "ParamName=Id",         "LB=//OK[ ...

  9. k8s探针

    探针是由kubelet对容器执行的定期诊断.要执行诊断,kubelet调用由容器实现的Handler.有三类处理程序: ExecAction:在容器内执行指定命令.如果命令退出时返回码为0认为诊断成功 ...

  10. RBAC学习(一)

    0.前提 :用户只有一个直属部门,但角色可以关联多个部门 有一种情况就不太适用:比如说地区经理是一个角色,张三是北京市地区经理,他在组织架构中的直属部门是华北大区,然后一个黑龙江的销售李四提一个折扣申 ...