政安晨:机器学习快速入门(二){基于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命令是一款功能强…

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…

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

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

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

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

板块零 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)。 补丁…

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…

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 需求描述偏差 客户角度的描…

【教程】ESP32-CAM使用I2C驱动0.91寸OLED

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 先安装库 1. 打开 Arduino IDE&#xff0c;然后转到 Sketch > Include Library > Manage Libraries。 2. 在搜索框中输入“SSD1306”&#xff0c;然后从 Adafruit 安装 SSD1306 库。 3. 选择“install al…

文心一言 VS 讯飞星火 VS chatgpt (195)-- 算法导论14.3 3题

三、用go语言&#xff0c;请给出一个有效的算法&#xff0c;对一个给定的区间i&#xff0c;返回一个与i重叠且具有最小低端点的区间;或者当这样的区间不存在时返回T.nil。 文心一言&#xff0c;去掉math&#xff0c;代码正常运行&#xff1a; 在Go语言中&#xff0c;你可以使…

JenkinsGitLab完成自动化构建部署

关于GitLab安装:GitLab安装-CSDN博客 Docker中安装GitLab:Docker下安装GitLab-CSDN博客 安装JenKins Jenkins官网:Jenkins 中文版:Jenkins 安装时候中文页面的war包下不来 在英文页面 记得装JDK8以上 JenKins使用java写的 运行JenKins需要JDK环境 我这里已经装好了 将下…

python制作恶意软件删除工具

今天&#xff0c;来教大家用python制作一个恶意软件删除工具 查杀流程图 对&#xff0c;就这些&#xff0c;已经具备了杀毒软件的功能 判断文件是否为病毒 要查杀病毒&#xff0c;先要判断文件是不是病毒&#xff08;不然删错了咋办&#xff09;&#xff0c;这里我们用获取文…

云计算市场分析

目录 一、云计算市场概述 1.1 概述 二、国外云计算厂商 2.1 亚马逊AWS 2.2 微软AzureAzure 2.3 Apple iCloud 三、国内云计算厂商 3.1 阿里云 3.2 腾讯云 3.3 华为云 3.4 百度智能云 一、云计算市场概述 1.1 概述 云计算从出现以来&#xff0c;其发展就非常迅速。以…

win10重装Ubuntu22.04安装报错复盘

目录 一&#xff1a;补充启动盘制作 二&#xff1a;错误信息[0xC0030570] The file or directory is corrupted and unreadable. 三&#xff1a;ubuntu重装步骤&#xff1a; 四&#xff1a;磁盘冗余阵列 五&#xff1a;尝试将SCS11(2,0.0), 第1分区(sda)设备的一个vfat文…