政安晨:机器学习快速入门(二){基于Python与Pandas} {建立您的第一个机器学习模型}

现在咱们要一起创建您的第一个机器学习模型啦!


选择建模数据

你的数据集包含太多变量,让你无法理解,甚至无法很好地打印出来。你如何将这大量的数据减少到你能理解的程度?

我们将从直觉上选择几个变量。后续课程将向你展示自动优先选择变量的统计技术。

为了选择变量/列,我们需要查看数据集中所有列的列表。可以通过DataFrame的columns属性来完成(下面的代码的最后一行)。

import pandas as pdmelbourne_file_path = './melb_data.csv'
melbourne_data = pd.read_csv(melbourne_file_path) 
melbourne_data.columns

上述代码中的数据集样本,可以从我的《政安晨:机器学习快速入门(一)》文章上方的立即下载中获取到(下载后,解压到工作目录中使用)。

政安晨:机器学习快速入门(一){基于Python与Pandas}icon-default.png?t=N7T8https://blog.csdn.net/snowdenkeke/article/details/136046028    

准备好后,执行上述代码如下:

# 墨尔本的数据中存在一些缺失值(一些房屋的某些变量没有记录)。
# 我们将在以后学习如何处理缺失值 
# 爱荷华数据在你使用的列中没有缺失值。 
# 所以我们现在将选择最简单的选项,从我们的数据中排除房屋。
# 现在不用太担心这个,放心使用:dropna 删除缺失值(将na视为“不可用”)。melbourne_data = melbourne_data.dropna(axis=0)

选择数据子集的方法有很多种。

在Pandas的官方文档中,会更深入地介绍这些方法,但现在我们先关注两种方法。

1)点符号法,用来选择“预测目标”;

2) 使用列列表进行选择,用来选择“特征”。


选择预测目标

先来一段说明:

{-->

在进行预测任务时,首先需要选择一个预测目标。预测目标可以是一个连续的数值,也可以是一个分类标签。

如果预测目标是一个连续的数值,那么预测任务被称为回归任务。回归任务的目标是通过输入变量的值来预测一个连续的输出变量的值。例如,预测房屋价格或股票价格就是回归任务。

如果预测目标是一个分类标签,那么预测任务被称为分类任务。分类任务的目标是通过输入变量的值来预测一个离散的分类标签。例如,预测一封电子邮件是垃圾邮件还是非垃圾邮件就是分类任务。

在选择预测目标时,需要考虑以下几个因素:

  1. 数据集中可用的变量:首先需要查看数据集中可用的变量。根据可用的变量,可以选择一个与目标相关的变量作为预测目标。

  2. 预测任务的目的:需要明确预测任务的目的是什么。是为了预测某种数值,还是为了分类某种标签。

  3. 数据的性质:还需要考虑数据的性质。如果数据是连续的,那么回归任务可能更合适。如果数据是离散的,那么分类任务可能更合适。

选择预测目标是进行预测任务的重要一步。正确选择预测目标可以提高预测模型的准确性和可用性。

--> }

您可以使用点表示法提取变量。这个单独的列存储在Series中,它类似于一个只有单列数据的DataFrame。我们将使用点表示法选择我们要预测的列,这个列被称为预测目标。

按照惯例,预测目标称为y。所以我们需要的代码是将墨尔本数据中的房价保存为:

y = melbourne_data.Price

选择“特征”

我们模型中输入的列(后来用于进行预测)称为“特征”。在我们的案例中,这些将是用于确定房屋价格的列。有时,除了目标列之外,您将使用所有列作为特征。其他时候,您可能只需要较少的特征。

现在,我们将只使用几个特征来构建模型。以后您将看到如何迭代和比较使用不同特征构建的模型。

我们通过在括号内提供列名的列表来选择多个特征。列表中的每个项都应该是一个字符串(带引号)。

示例如下:

melbourne_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']

根据惯例,这些数据被称为X。

X = melbourne_data[melbourne_features]

让我们快速回顾一下我们将使用的数据,使用describe方法和head方法来预测房价,head方法显示前几行数据。

X.describe()

X.head()

使用这些命令对数据进行可视化检查是数据科学家工作的重要部分。您经常会发现数据集中令人惊讶且值得进一步检查的地方。

建立您自己的模型

您将使用scikit-learn库来创建您的模型。在编码时,该库的写法是sklearn,正如您在示例代码中看到的那样。

Scikit-learn是用于建模通常存储在DataFrames中的数据类型的最流行的库。

咱们还是用点篇幅介绍下一:

Scikit-learn是一个基于Python的开源机器学习库,提供了丰富的机器学习算法和工具集。它建立在NumPy、SciPy和matplotlib库的基础上,为用户提供了一种简单而有效的方法来进行数据预处理、特征选择、模型评估和模型选择。

以下是一些scikit-learn库的主要功能:

  1. 数据预处理:scikit-learn提供了一系列数据预处理工具,如标准化、归一化、缩放、向量化、二值化等。这些工具能够将原始数据转换为适合机器学习算法处理的格式。

  2. 特征选择:scikit-learn提供了多种特征选择方法,如基于统计方法的特征选择、基于模型的特征选择、递归特征消除等。这些方法可以帮助用户在训练模型之前选择最相关的特征,从而提高模型的性能。

  3. 模型评估:scikit-learn提供了多种模型评估方法,如交叉验证、网格搜索、学习曲线、混淆矩阵等。这些方法能够帮助用户评估模型的性能,选择最佳的参数和超参数,并了解模型的泛化能力。

  4. 模型选择:scikit-learn提供了多种机器学习算法,如线性模型、决策树、随机森林、支持向量机、朴素贝叶斯、神经网络等。用户可以根据问题的性质和数据的特征选择合适的模型进行训练和预测。

  5. 集成方法:scikit-learn还提供了多种集成方法,如Bagging、Boosting、随机森林、投票分类器等。这些方法可以组合多个基础模型,以产生更强大和稳定的模型。

除了上述功能外,scikit-learn还包含了一些实用工具,如数据集加载、特征工程、模型持久化等。此外,scikit-learn还具有可扩展性,并与其他Python库和工具集(如Pandas、matplotlib和TensorFlow)良好兼容,使用户能够更加灵活地开展机器学习工作。

总而言之,scikit-learn是一个功能强大且易于使用的机器学习库,适用于各种机器学习任务。无论你是机器学习初学者还是专业人士,scikit-learn都能为你提供丰富的工具和资源,帮助你构建和部署高效的机器学习模型。

好了,咱们现在开始构建模型,构建和使用模型的步骤如下:

定义:它将是什么类型的模型?决策树?其他类型的模型?还指定了该模型类型的其他参数。 拟合:从提供的数据中捕捉模式。这是建模的核心。 预测:就像它听起来的那样 评估:确定模型预测的准确度。

以下是使用scikit-learn定义决策树模型并使用特征和目标变量进行拟合的示例代码:

from sklearn.tree import DecisionTreeRegressor# Define model. Specify a number for random_state to ensure same results each run
melbourne_model = DecisionTreeRegressor(random_state=1)# Fit model
melbourne_model.fit(X, y)

先别着急运行上述代码,您应该知道我要说什么吧:咱们现在要安装scikit-learn。

pip install scikit-learn

安装成功后,执行上述代码如下(咱们训练了一个模型):

许多机器学习模型在模型训练中允许一定的随机性。为random_state指定一个数字可以确保在每次运行中得到相同的结果。这被认为是一种良好的做法。你可以使用任何数字,模型质量并不会在你选择的确切值上有实质性的影响。

现在我们有了一个已拟合的模型,我们可以用它来进行预测。

使用新模型预测

实际上,你可能更希望对新上市的房屋进行预测,而不是我们已经有价格的房屋。但是我们将对训练数据的前几行进行预测,以查看predict函数的工作原理。

print("Making predictions for the following 5 houses:")
print(X.head())
print("The predictions are")
print(melbourne_model.predict(X.head()))

预测结果如下:

告一段落

看吧,这么短的时间内,您就完成了一个模型,并利用它进行了预测,机器学习的模型原理您已经知道啦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/669916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【教学类-46-05】吉祥字门贴5.0(华光彩云_CNKI 文本框 空心字涂色 ,繁简都可以,建议简体)

作品展示 背景需求: 1、制作了空心字的第1款 华光通心圆_CNKI ,发现它不能识别某些简体字,但可以识别他们的繁体字(繁体为准) 【教学类-46-01】吉祥字门贴1.0(华光通心圆_CNKI 文本框 空心字涂色&#xf…

掌握Linux du命令:高效查看文件和目录大小

今天我们在生产环境中的服务器上收到了有关/var磁盘目录使用率较高的警报。为了解决这一问题,我们进行了/var目录下一些大文件的清理和转移操作。在查找那些占用磁盘空间较多的文件时,我们频繁使用了du命令。在Linux系统中,du命令是一款功能强…

Webpack插件浅析

常用的webpack插件功能介绍: 1.HotModuleReplacementPlugin 模块热更新插件。Hot-Module-Replacement的热更新是依赖于webpack-dev-server,有时是在打包文件改变时更新打包文件或者重新加载刷新整个页面,HMR是只更新修改的部分。 HotModul…

SpringBoot集成axis发布WebService服务

文章目录 1、使用maven-web项目生成server-config.wsdd文件1.1、新建maven-web项目1.1.1、新建项目1.1.2、添加依赖 1.2、编写服务接口和实现类1.2.1、OrderService接口1.2.2、OrderServiceImpl实现类 1.3、配置deploy.wsdd文件deploy.wsdd文件 1.4、配置tomcat1.4.1、配置tomc…

C++ Webserver从零开始:基础知识(八)——多线程编程

线程概述 现代Linux系统主要使用的线程库是NPTL,在Linux中可以通过 getconf GNU_LIBPTHREAD_VERSION 获取Linux线程库版本。谈到线程,就不得不提及线程模型 线程模型 本小节概念较多,采用问答式进行讲解,以帮助读者理解 什么…

Matlab:利用1D-CNN(一维卷积神经网络),分析高光谱曲线数据或时序数据

1DCNN 简介: 1D-CNN(一维卷积神经网络)是一种特殊类型的卷积神经网络,设计用于处理一维序列数据。这种网络结构通常由多个卷积层和池化层交替组成,最后使用全连接层将提取的特征映射到输出。 以下是1D-CNN的主要组成…

详细分析Redis中数值乱码的根本原因以及解决方式

目录 前言1. 问题所示2. 原理分析3. 拓展 前言 对于这方面的相关知识推荐阅读: Redis框架从入门到学精(全)Java关于RedisTemplate的使用分析 附代码java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全) …

在(龙芯 3A6000)loongnix下编译syncthing

在loongnix下编译syncthing Syncthing(https://syncthing.net/) 是一个开源的 P2P 文件同步工具,可用于在多个设备(包括 Android 手机)之间同步文件。 – Ankush Das(作者)。因为工作资料保存需…

板块零 IDEA编译器基础:第二节 创建JAVA WEB项目与IDEA基本设置 来自【汤米尼克的JAVAEE全套教程专栏】

板块零 IDEA编译器基础:第二节 创建JAVA WEB项目与IDEA基本设置 一、创建JAVA WEB项目(1)普通项目升级成WEB项目(2)创建JAVA包 二、IDEA 开荒基本设置(1)设置字体字号自动缩放 (2&am…

C# 根据USB设备VID和PID 获取设备总线已报告设备描述

总线已报告设备描述 DEVPKEY_Device_BusReportedDeviceDesc 模式 winform 语言 c# using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Window…

升级Oracle 单实例数据库19.3到19.22

需求 我的Oracle Database Vagrant Box初始版本为19.3,需要升级到最新的RU,当前为19.22。 以下操作时间为为2024年2月5日。 补丁下载 补丁下载文档参见MOS文档:Primary Note for Database Proactive Patch Program (Doc ID 888.1)。 补丁…

企业级Spring boot项目 配置清单

目录 一、服务基础配置 二、配置数据库数据源 三、配置缓存 四、配置日志 五、配置统一异常处理 六、配置swagger文档 七、配置用户登录模块 八、配置websocket 九、配置定时任务 十、配置文件服务器 十一、配置Nacos 十二、配置项目启动数据库默认初始化(liquibas…

Bootstrap5 图片轮播

Bootstrap5 轮播样式表使用的是CDN资源 <title>亚丁号</title><!-- 自定义样式表 --><link href"static/front/css/front.css" rel"stylesheet" /><!-- 新 Bootstrap5 核心 CSS 文件 --><link rel"stylesheet"…

Meta开源大模型LLaMA2的部署使用

LLaMA2的部署使用 LLaMA2申请下载下载模型启动运行Llama2模型文本补全任务实现聊天任务LLaMA2编程Web UI操作 LLaMA2 申请下载 访问meta ai申请模型下载&#xff0c;注意有地区限制&#xff0c;建议选其他国家 申请后会收到邮件&#xff0c;内含一个下载URL地址&#xff0c;…

【翻译】Processing安卓模式的安装使用及打包发布(内含中文版截图)

原文链接在下面的每一章的最前面。 原文有三篇&#xff0c;译者不知道贴哪篇了&#xff0c;这篇干脆标了原创。。 译者声明&#xff1a;本文原文来自于GNU协议支持下的项目&#xff0c;具备开源二改授权&#xff0c;可翻译后公开。 文章目录 Install&#xff08;安装&#xff0…

1041.困于环中的机器人(Java)

题目描述&#xff1a; 在无限的平面上&#xff0c;机器人最初位于 (0, 0) 处&#xff0c;面朝北方。注意: 北方向 是y轴的正方向。 南方向 是y轴的负方向。 东方向 是x轴的正方向。 西方向 是x轴的负方向。 机器人可以接受下列三条指令之一&#xff1a; “G”&#xff1a;直走 …

42、WEB攻防——通用漏洞文件包含LFIRFI伪协议编码算法代码审计

文章目录 文件包含文件包含原理攻击思路文件包含分类 sessionPHP伪协议进行文件包含 文件包含 文件包含原理 文件包含其实就是引用&#xff0c;相当于C语言中的include <stdio.h>。文件包含漏洞常出现于php脚本中&#xff0c;当include($file)中的$file变量用户可控&am…

88 docker 环境下面 前端A连到后端B + 前端B连到后端A

前言 呵呵 最近出现了这样的一个问题, 我们有多个前端服务, 分别连接了对应的后端服务, 前端A -> 后端A, 前端B -> 后端B 但是 最近的时候 却会出现一种情况就是, 有些时候 前端A 连接到了 后端B, 前端B 连接到了 后端A 我们 前端服务使用 nginx 提供前端 html, js…

嵌入式软件bug分析基本要求

摘要&#xff1a;软件从来不是一次就能完美的&#xff0c;需要以包容的眼光看待它的残缺。那问题究竟为何产生&#xff0c;如何去除呢&#xff1f; 1、软件问题从哪来 软件缺陷问题千千万万&#xff0c;主要是需求、实现、和运行环境三方面。 1.1 需求描述偏差 客户角度的描…

Autovue R21.1 发布

作者: justin.jin 2023年9月, Oracle发布了最新版的Autovue R21.1, 它包括了原来21.0.1 和 21.0.2的全部补丁. Autovue R21.1的关键更新如下: 1, 升级为64位: 性能有较大提升, 不会有32位应用单一线程最大使用2G的内存限制. 2, 紧随IT基础架构的变化, 支持Windows Se…