基于XGBoost和数据预处理的电动汽车车型预测

在这里插入图片描述

基于XGBoost和数据预处理的电动汽车车型预测

文章目录

  • 基于XGBoost和数据预处理的电动汽车车型预测
  • 1、前言
  • 2、导入数据
  • 3、各县电动汽车采用情况条形图
  • 4、电动车类型饼图
  • 5、前5最欢迎的电动车制造商
  • 6、XGBoost模型
    • 6.1 字符串列的标识
    • 6.2 删除不相关的列
    • 6.3 编码分类变量
    • 6.4 电动车类型热编码
    • 6.5 将数据划分训练集和测试集
    • 6.6 为训练集和测试集创建DMatrix
    • 6.7 XGBoot模型
    • 6.8 预测和计算准确值

作者:i阿极

作者简介:数据分析领域优质创作者、多项比赛获奖者:博主个人首页

😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍

📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪


大家好,我i阿极。喜欢本专栏的小伙伴,请多多支持

专栏案例:机器学习案例
机器学习(一):线性回归之最小二乘法
机器学习(二):线性回归之梯度下降法
机器学习(三):基于线性回归对波士顿房价预测
机器学习(四):基于KNN算法对鸢尾花类别进行分类预测
机器学习(五):基于KNN模型对高炉发电量进行回归预测分析
机器学习(六):基于高斯贝叶斯对面部皮肤进行预测分析
机器学习(七):基于多项式贝叶斯对蘑菇毒性分类预测分析
机器学习(八):基于PCA对人脸识别数据降维并建立KNN模型检验
机器学习(十四):基于逻辑回归对超市销售活动预测分析
机器学习(十五):基于神经网络对用户评论情感分析预测
机器学习(十六):线性回归分析女性身高与体重之间的关系
机器学习(十七):基于支持向量机(SVM)进行人脸识别预测
机器学习(十八):基于逻辑回归对优惠券使用情况预测分析
机器学习(十九):基于逻辑回归对某银行客户违约预测分析
机器学习(二十):LightGBM算法原理(附案例实战)
机器学习(二十一):基于朴素贝叶斯对花瓣花萼的宽度和长度分类预测
机器学习(二十二):基于逻辑回归(Logistic Regression)对股票客户流失预测分析


1、前言

这组代码片段对通过华盛顿州许可部注册的纯电动汽车(BEV)和插电式混合动力汽车(PHEV)的数据集进行了各种分析。这些代码产生了一些见解,如按城市划分的电动续航里程统计数据、CAFV资格计数、电动汽车制造商的受欢迎程度、续航里程统计(最大、最小、平均)、电动汽车类型分布、按车型年份划分的采用趋势以及按县划分的采用情况。结果保存在CSV文件中,并通过条形图、折线图和饼图进行可视化。这些分析为华盛顿州的电动汽车前景和采用模式提供了宝贵的见解。

2、导入数据

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as snsdata = pd.read_csv("./us_car_data.csv")

3、各县电动汽车采用情况条形图

count_by_county = data["County"].value_counts()
plt.figure(figsize=(10, 6))
count_by_county.plot(kind='bar', color=colors)
plt.xlabel("County")
plt.ylabel("Count")
plt.title("Electric Vehicle Adoption by County")
plt.show()

此代码创建了一个条形图,显示每个县采用电动汽车的情况。每个小节代表一个县,小节的高度代表该县的电动汽车数量。x轴标记为“县”,y轴标记为为“计数”,图表标题为“各县电动汽车采用情况”。
运行结果如下:
在这里插入图片描述

4、电动车类型饼图

vehicle_types = data["Electric Vehicle Type"].value_counts()
plt.figure(figsize=(8, 8))
vehicle_types.plot(kind='pie', autopct='%1.1f%%')
plt.title("Distribution of Electric Vehicle Types")
plt.show()

此代码创建一个饼图,显示不同类型电动汽车的分布情况。饼图的每一部分都代表一种特定的车辆类型,每种类型的百分比如图所示。图表的标题是“电动汽车类型的分布”。
运行结果如下:
在这里插入图片描述

5、前5最欢迎的电动车制造商

popular_makes = data["Make"].value_counts().head(5)
plt.figure(figsize=(10, 6))
popular_makes.plot(kind='bar', color=colors)
plt.xlabel("Make")
plt.ylabel("Count")
plt.title("Popular Electric Vehicle Manufacturers")
plt.show()
#结果:
#TESLA        61650
#NISSAN       13138
#CHEVROLET    11417
#FORD          6876
#BMW           5881

此代码创建一个条形图,显示受欢迎制造商的电动汽车数量。显示图表时,x轴标记为“Make”表示制造商,y轴标记为为“Count”表示车辆数量。图表的标题是“受欢迎的电动汽车制造商”
运行结果如下:
在这里插入图片描述

6、XGBoost模型

使用XGBoost和数据预处理的电动汽车类型预测此代码使用XGBooster算法基于给定特征执行电动汽车类型的预测。该代码包括数据预处理步骤,如识别字符串列、删除不相关列、编码分类变量和一次热编码。然后,它将数据拆分为训练集和测试集,为XGBoost创建DMatrix对象,定义XGBoost模型参数,训练模型,并对测试数据进行预测。最后,它计算了模型预测的准确性。

6.1 字符串列的标识

from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
import xgboost as xgb
from sklearn.metrics import accuracy_scorestring_columns = data.select_dtypes(include=['object']).columns
print("Colonnes contenant des chaînes de caractères :")
for column in string_columns:print(column)

运行结果如下:
在这里插入图片描述

6.2 删除不相关的列

columns_to_drop = ['County', 'Electric Utility']
data = data.drop(columns_to_drop, axis=1)

6.3 编码分类变量

label_encoder = LabelEncoder()
categorical_columns = ['City', 'State', 'Make', 'Model', 'Electric Vehicle Type']
for column in categorical_columns:data[column] = label_encoder.fit_transform(data[column])

6.4 电动车类型热编码

one_hot_encoded = pd.get_dummies(data['Electric Vehicle Type'], prefix='EVType')
data = pd.concat([data, one_hot_encoded], axis=1)
print(data.head())

6.5 将数据划分训练集和测试集

features = ['Model Year', 'Make', 'Model']
target = 'Electric Vehicle Type'
train_data, test_data, train_target, test_target = train_test_split(data[features], data[target], test_size=0.2, random_state=42)

6.6 为训练集和测试集创建DMatrix

此代码使用xgb为训练和测试数据创建DMatrix对象。XGBoost库中的DMatrix函数。它使用训练数据(train_data)及其相应的目标(train_target)来创建dtrain。类似地,它使用测试数据(test_data)及其目标(test_target)创建dtest。DMatrix是XGBoost用于高效训练和预测的数据结构。

dtrain = xgb.DMatrix(train_data, label=train_target)
dtest = xgb.DMatrix(test_data, label=test_target)

6.7 XGBoot模型

params = {'objective': 'multi:softmax','num_class': len(data[target].unique()), 'eta': 0.1,'max_depth': 6,'min_child_weight': 1,'gamma': 0.1,'subsample': 0.8,'colsample_bytree': 0.8,'eval_metric': 'merror'
}
model = xgb.train(params, dtrain, num_boost_round=100)

6.8 预测和计算准确值

predictions = model.predict(dtest)
predictions = [int(round(pred)) for pred in predictions]
accuracy = accuracy_score(test_target, predictions)
print("Exactitude : {:.2f}%".format(accuracy * 100))

运行结果如下:

Exactitude : 99.00%

ps:这是部分代码

📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗

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

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

相关文章

Python 全栈体系【四阶】(二十)

第五章 深度学习 二、推荐系统 1. 推荐算法介绍 1.1 个性化推荐算法 人口属性 地理属性 资产属性 兴趣属性 1.2 推荐算法分支 协同过滤推荐算法基于内容的推荐算法混合推荐算法流行度推荐算法 1.3 推荐算法 为推荐系统选择正确的推荐算法是非常重要的决定。目前为止…

两区域二次调频风火机组,麻雀启发式算法改进simulink与matlab联合

区域1结果 区域2结果 红色曲线为优化后结果〔风火机组二次调频〕

【机器学习之---数学】统计学基础概念

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 统计学基础 1. 频率派 频率学派(传统学派)认为样本信息来自总体,通过对样本信息的研究可以合理地推断和估计总体信息…

6、ChatGLM3-6B 部署实践

一、ChatGLM3-6B介绍与快速入门 ChatGLM3 是智谱AI和清华大学 KEG 实验室在2023年10月27日联合发布的新一代对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,免费下载,免费的商业化使用。 该模型在保留了前两代模型对话流畅、部署门槛低等众多…

Python爬虫:爬虫基本概念、流程及https协议

本文目录: 一、爬虫的基本概念1.为什么要学习爬虫1.1 数据的来源1.2 爬取到的数据用途 2.什么是爬虫3. 爬虫的更多用途 二、爬虫的分类和爬虫的流程1.爬虫的分类2.爬虫的流程3.robots协议 三、爬虫http和https1.http和https的概念2.浏览器发送HTTP请求的过,2.1 http…

基于springboot+vue调用百度ai实现车牌号识别功能

百度车牌号识别官方文档 结果视频演示 后端代码 private String getCarNumber(String imagePath, int count) {// 请求urlString url "https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate";try {byte[] imgData FileUtil.readFileByBytes(imagePath);Stri…

【Python进阶】探秘装饰器:揭开简洁与强大的神秘面纱

引言 在Python的世界里,有一种魔法般的高级特性——装饰器(Decorators),它就像一块块功能各异的积木,能够让我们的代码变得更加灵活、优雅且易于维护。今天,让我们一同走进装饰器的殿堂,探索其…

R语言随机抽取数据,并作两组数据间t检验,并保存抽取的数据,并绘制boxplot

前提:接着上述R脚本输出的seed结果来选择应该使用哪个seed比较合理,上个R脚本名字: “5utr_计算ABD中Ge1和Lt1的个数和均值以及按照TE个数小的进行随机100次抽样.R” 1.输入数据:“5utr-5d做ABD中有RG4和没有RG4的TE之间的T检验.c…

[深度学习]yolov8+pyqt5搭建精美界面GUI设计源码实现五

【简单介绍】 依托先进的目标检测算法YOLOv8与灵活的PyQt5界面开发框架,我们倾力打造出了一款集直观、易用与功能强大于一体的目标检测GUI界面软件。通过深度融合YOLOv8在目标识别领域的出色性能与PyQt5的精美界面设计,我们成功推出了一款高效且稳定的软…

苍穹外卖项目-01(开发流程,介绍,开发环境搭建,nginx反向代理,Swagger)

目录 一、软件开发整体介绍 1. 软件开发流程 1 第1阶段: 需求分析 2 第2阶段: 设计 3 第3阶段: 编码 4 第4阶段: 测试 5 第5阶段: 上线运维 2. 角色分工 3. 软件环境 1 开发环境(development) 2 测试环境(testing) 3 生产环境(production) 二、苍穹外卖项目介绍 …

软件接口安全设计规范及审计要点

1.token授权安全设计 2.https传输加密 3.接口调用安全设计 4.日志审计里监控 5.开发测试环境隔离,脱敏处理 6.数据库运维监控审计 项目管理全套资料获取:软件开发全套资料_数字中台建设指南-CSDN博客

微信商家转账到零钱:实用指南,涵盖开通、使用与常见问题

商家转账到零钱是什么? 商家转账到零钱功能整合了企业付款到零钱和批量转账到零钱,支持批量对外转账,操作便捷。如果你的应用场景是单付款,体验感和企业付款到零钱基本没差别。 商家转账到零钱的使用场景有哪些? 这…

雷达新研社丨宏电雷达流量计助力河源灌区流量监测,赋能灌区现代化建设

灌区工程是农田灌溉排水的骨干网,是保障粮食安全的生命线。为了助力粮食安全和推动广东“百县千镇万村高质量发展工程”,广东省河源市连平县实施了灌区现代化改造工程。 本项目涵盖对约188公里的农田灌排渠道的感知监测站点建设,宏电股份作为…

SCI一区 | Matlab实现WOA-TCN-BiGRU-Attention鲸鱼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现WOA-TCN-BiGRU-Attention鲸鱼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现WOA-TCN-BiGRU-Attention鲸鱼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程序…

Antd Pagination 解决点击重置按钮后分页器不刷新问题

问题描述: 原本: 问题: 解决方法: const [resetPageSize, setResetPageSize] useState(10); setResetPageSize(10) pageSize{resetPageSize} pageSizeChange //初始化const [resetPageSize, setResetPageSize] useState(10);//…

Python 全栈体系【四阶】(二十一)

第五章 深度学习 二、推荐系统 2. 协同过滤及实现 2.1 基于物品的协同过滤推荐技术(评分) 2.2 基于物品的协同过滤算法(Item_CF) 2.3 基于用户的协同过滤算法(user-based collaboratIve filtering) 2.4 基本原理 2.5 ICF 计算物品之间的相似度&#…

应用层协议 - HTTP

文章目录 目录 文章目录 前言 1 . 应用层概要 2. WWW 2.1 互联网的蓬勃发展 2.2 WWW基本概念 2.3 URI 3 . HTTP 3.1 工作过程 3.2 HTTP协议格式 3.3 HTTP请求 3.3.1 URL基本格式 3.3.2 认识方法 get方法 post方法 其他方法 3.3.2 认识请求报头 3.3.3 认识请…

JVM之堆

堆的核心概述 一个JVM实例只存在一个堆内存,堆也是内存管理的核心区域。 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。 堆内存的大小是可以调节的。 《JVM虚拟机规范》规定,堆可以处于物理上不连…

Spring Boot 整合分布式搜索引擎 Elastic Search 实现 自动补全功能

文章目录 ⛄引言一、分词器⛅拼音分词器⚡自定义分词器 二、自动补全查询三、自动补全⌚业务需求⏰实现酒店搜索自动补全 四、效果图⛵小结 ⛄引言 本文参考黑马 分布式Elastic search Elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,…

springboot swagger 接口文档分组展示

例如将 controller 分成四类,分别放到四个包下: xxx.xxx.xxx.controller.manage xxx.xxx.xxx.controller.client xxx.xxx.xxx.controller.authority xxx.xxx.xxx.controller.common SwaggerConfig.java: import io.swagger.annotations.Api…