当前位置: 首页 > news >正文

《机器学习在车险定价中的应用》实验报告

 

目录

一、实验题目

        机器学习在车险定价中的应用

二、实验设置

1. 操作系统:

2. IDE:

3. python:

4. 库:

三、实验内容

实验前的猜想:

四、实验结果

1. 数据预处理及数据划分

独热编码处理结果(以地区为例)

2. 模型训练

3. 绘制初始决策树

4. 模型评价

5. 模型优化

绘制优化后的决策树

6. 修改样本、网格搜索参数进一步优化模型

五、实验分析


 

 

一、实验题目

        机器学习在车险定价中的应用

二、实验设置

1. 操作系统:

        Windows 11 Home

2. IDE:

        PyCharm 2022.3.1 (Professional Edition)

3. python

        3.8.0

4. 库:

numpy

1.20.0

 

matplotlib

3.7.1

 

pandas

1.1.5

 

scikit-learn

0.24.2

 

 

conda create -n ML python==3.8 pandas scikit-learn numpy matplotlib

三、实验内容

        本次实验使用决策树模型进行建模,实现对车险 数据的分析,车险数据为如下MTPLdata.csv数据集:

f2dccf851f8245909e63b5e927fd0e01.png

        该车险数据集包含了50万个样本,每个样本有8个特征和1个标签。其中,标签是一个二元变量,值为0或1,表示车主是否报告过车险索赔(clm,int64);特征包括车主的年龄(age,int64),车辆的年限(ac,int64)、功率(power,int64)、燃料类型(gas,object)、品牌(brand,object),车主所在地区(area,object)、居住地车辆密度(dens,int64)、以及汽车牌照类型(ct,object)。

实验前的猜想

        详见实验报告

四、实验结果

1. 数据预处理及数据划分

        将数据读入并进行数据预处理,包括哑变量处理和划分训练集和测试集

MTPLdata = pd.read_csv('MTPLdata.csv')
# 哑变量处理-独热编码
# 将clm列的数据类型转换为字符串
MTPLdata['clm'] = MTPLdata['clm'].map(str)
# 选择包括第1、2、3、4、5、6、7、8列的数据作为特征输入
# ac、brand、age、gas、power
X_raw = MTPLdata.iloc[:, [0, 1, 2, 3, 4]]
# X_raw = MTPLdata.iloc[:, [0, 1, 2, 3, 4, 5, 6, 7]]
# 对X进行独热编码
X = pd.get_dummies(X_raw)
# 选择第9列作为标签y
y = MTPLdata.iloc[:, 8]# 将数据划分为训练集和测试集,测试集占总数据的20%
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, test_size=0.2, random_state=1)

 

独热编码处理结果(以地区为例)

bca076c069c04a629d08ec60ca4b6d9d.png

2. 模型训练

        我们使用决策树分类器模型进行训练(设定树的最大深度为2,使用平衡的类权重,并默认使用基尼系数检验准确度)。

model = DecisionTreeClassifier(max_depth=2, class_weight='balanced', random_state=123)
model.fit(X_train, y_train)     # 数据拟合
model.score(X_test, y_test)     # 在测试集上评估模型

3. 绘制初始决策树

        为了更好地解读决策树模型,调用plot_tree函数绘制决策树。

plt.figure(figsize=(11, 11))
plot_tree(model, feature_names=X.columns, node_ids=True, rounded=True, precision=2)
plt.show()

e3ef80d6c242491193ea5a23b4866f78.png

 

4. 模型评价

pred = model.predict(X_test)
table = pd.crosstab(y_test, pred, rownames=['Actual'], colnames=['Predicted'])
# table# 计算模型的准确率、错误率、召回率、特异度和查准率
table = np.array(table)  # 将pandas DataFrame转换为numpy array
Accuracy = (table[0, 0] + table[1, 1]) / np.sum(table)      # 准确率
Error_rate = 1 - Accuracy  # 错误率
Sensitivity = table[1, 1] / (table[1, 0] + table[1, 1])     # 召回率
Specificity = table[0, 0] / (table[0, 0] + table[0, 1])     # 特异度
Recall = table[1, 1] / (table[0, 1] + table[1, 1])          # 查准率

5. 模型优化

        为了寻找更优的模型,我们使用cost_complexity_pruning_path函数计算不同的ccp_alpha对应的决策树的叶子节点总不纯度,并绘制ccp_alpha与总不纯度之间的关系图。

model = DecisionTreeClassifier(class_weight='balanced', random_state=123)
path = model.cost_complexity_pruning_path(X_train, y_train)
plt.plot(path.ccp_alphas, path.impurities, marker='o', drawstyle='steps-post')
plt.xlabel('alpha (cost-complexity parameter)')
plt.ylabel('Total Leaf Impurities')
plt.title('Total Leaf Impurities vs alpha for Training Set')
plt.show()

                                        1w样本                                                             50w样本

74fe13bc704a4a1c9f27b316cd7fd8c6.png

         接着,我们通过交叉验证选择最优的ccp_alpha,并使用最优的ccp_alpha重新训练模型。

 

绘制优化后的决策树

rangeccpalpha = np.linspace(0.000001, 0.0001, 10, endpoint=True)
param_grid = {'max_depth':  np.arange(3, 7, 1),# 'ccp_alpha': rangeccpalpha,'min_samples_leaf': np.arange(1, 5, 1)
}
kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=1)
model = GridSearchCV(DecisionTreeClassifier(class_weight='balanced', random_state=123),param_grid, cv=kfold)
model.fit(X_train, y_train)

8a1af918529548a9b3d2294700c4d59d.png

 

此外,还计算了各个特征的重要性,并绘制了特征重要性图。

plt.figure(figsize=(20, 20))
sorted_index = model.feature_importances_.argsort()
plt.barh(range(X_train.shape[1]), model.feature_importances_[sorted_index])
plt.yticks(np.arange(X_train.shape[1]), X_train.columns[sorted_index])
plt.xlabel('Feature Importance')
plt.ylabel('Feature')
plt.title('Decision Tree')
plt.tight_layout()
plt.show()

d24a68bc5d2242bd9b054d558b1c8567.png

6. 修改样本、网格搜索参数进一步优化模型

 

   详见实验报告

 

五、实验分析

        请下载本实验对应的代码及实验报告资源(其中实验分析部分共2页、1162字)

      

 

相关文章:

《机器学习在车险定价中的应用》实验报告

目录 一、实验题目 机器学习在车险定价中的应用 二、实验设置 1. 操作系统: 2. IDE: 3. python: 4. 库: 三、实验内容 实验前的猜想: 四、实验结果 1. 数据预处理及数据划分 独热编码处理结果(以…...

14. Docker中实现CI和CD

目录 1、前言 2、什么是CI/CD 3、部署Jenkins 3.1、下载Jenkins 3.2、启动Jenkins 3.3、访问Jenkins页面 4、Jenkins部署一个应用 5、Jenkins实现Docker应用的持续集成和部署 5.1、创建Dockerfile 5.2、集成Jenkins和Docker 6、小结 1、前言 持续集成(CI/CD)是一种…...

【多思路解决喝汽水问题】1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水

题目内容 喝汽水问题 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)。 题目分析 数学思路分析 根据给出的问题和引用内容,我们可以得出答案。 首先&#xff…...

P1591 阶乘数码(Java高精度)

题目描述 求 n ! n! n! 中某个数码出现的次数。 输入格式 第一行为 t ( t ≤ 10 ) t(t \leq 10) t(t≤10),表示数据组数。接下来 t t t 行,每行一个正整数 n ( n ≤ 1000 ) n(n \leq 1000) n(n≤1000) 和数码 a a a。 输出格式 对于每组数据&a…...

Mybatis的动态SQL及关键属性和标识的区别(对SQL更灵活的使用)

( 虽然文章中有大多文本内容,想了解更深需要耐心看完,必定大有受益 ) 目录 一、动态SQL ( 1 ) 是什么 ( 2 ) 作用 ( 3 ) 优点 ( 4 ) 特殊标签 ( 5 ) 演示 二、#和$的区别 2.1 #使用 ( 1 ) #占位符语法 ( 2 ) #优点 2.…...

mysql下载

网址 MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/ 2、选择MSI进行安装 3、这里我选择离线安装 4、这里我选择直接下载 5、等待下载安装即可...

聚合函数与窗口函数

聚合函数 回答一 聚合函数(Aggregate Functions)是SQL中的函数,用于对一组数据进行计算,并返回单个结果。聚合函数通常用于统计和汇总数据,包括计算总和、平均值、计数、最大值和最小值等。 以下是一些常见的聚合函…...

c语言实现堆

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、树1、树的概念2、树的相关概念3、树的表示 二、二叉树1、二叉树概念2、特殊的二叉树3、二叉树的性质4、二叉树的顺序结构5、二叉树的链式结构 三、堆(二叉树…...

ubuntu 如何将文件打包成tar.gz

要将文件打包成.tar.gz文件,可以使用以下命令: tar -czvf 文件名.tar.gz 文件路径 其中,-c表示创建新的归档文件,-z表示使用gzip进行压缩,-v表示显示详细的打包过程,-f表示指定归档文件的名称。 例如&am…...

前端优化页面加载速度的方法(持续更新)

提速方法方向 延迟脚本加载 使用 async 属性: 在这种方法中,脚本将在下载完成后立即执行,而不会阻塞其他页面资源的加载和渲染。这适用于那些不依赖于其他脚本和页面内容的脚本,例如分析脚本等。示例如下: html …...

利用SSL证书的SNI特性建立自己的爬虫ip服务器

今天我要和大家分享一个关于自建多域名HTTPS爬虫ip服务器的知识,让你的爬虫ip服务器更加强大!无论是用于数据抓取、反爬虫还是网络调试,自建一个支持多个域名的HTTPS爬虫ip服务器都是非常有价值的。本文将详细介绍如何利用SSL证书的SNI&#…...

HTML和CSS

HTML HTML(Hyper Text Markup Language):超文本语言 超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内容。 标记语言:由标签构成的语言 HTML标签都是预定义好的。例如:使用&l…...

C#的IndexOf

在 C# 中,IndexOf 是一个字符串、数组或列表的方法,用于查找指定元素的第一个匹配项的索引。它返回一个整数值,表示匹配项在集合中的位置,如果未找到匹配项,则返回 -1。 IndexOf 方法有多个重载形式,可以根…...

深度学习2.神经网络、机器学习、人工智能

目录 深度学习、神经网络、机器学习、人工智能的关系 大白话解释深度学习 传统机器学习 VS 深度学习 深度学习的优缺点 4种典型的深度学习算法 卷积神经网络 – CNN 循环神经网络 – RNN 生成对抗网络 – GANs 深度强化学习 – RL 总结 深度学习 深度学习、神经网络…...

利用LLM模型微调的短课程;钉钉宣布开放智能化底座能力

🦉 AI新闻 🚀 钉钉宣布开放智能化底座能力AI PaaS,推动企业数智化转型发展 摘要:钉钉在生态大会上宣布开放智能化底座能力AI PaaS,与生态伙伴探寻企业服务的新发展道路。AI PaaS结合5G、云计算和人工智能技术的普及和…...

软件工程(七) UML之用例图详解

1、UML-4+1视图 UML-4+1视图将会与后面的架构4+1视图会一一对应上 视图往往出现在什么场景:我们看待一个事物,我们觉得它很复杂,难以搞清楚,为了化繁为简,我们会从一个侧面去看,这就是视图。而4+1视图就是分不同角度去看事物。 逻辑视图(logical view) 一般使用类与对…...

pd.cut()函数--Pandas

1. 函数功能 将连续性数值进行离散化处理:如对年龄、消费金额等进行分组 2. 函数语法 pandas.cut(x, bins, rightTrue, labelsNone, retbinsFalse, precision3, include_lowestFalse, duplicatesraise, orderedTrue)3. 函数参数 参数含义x要离散分箱操作的数组&…...

DataBinding的基本使用

目录 一、MVC、MVP和MVVM框架的使用场景二、Java使用 一、MVC、MVP和MVVM框架的使用场景 MVC: 适用于小型项目,够灵活, 缺点:Activity不仅要做View的事情还要做控制和模型的处理,导致Activity太过臃肿,管理…...

eslint和prettier格式化冲突

下载插件 ESLint 和 Prettier ESLint 进入setting.json中 setting.json中配置 {"editor.tabSize": 2,"editor.linkedEditing": true,"security.workspace.trust.untrustedFiles": "open","git.autofetch": true,"…...

matlab使用教程(26)—常微分方程的求解

1.求解非刚性 ODE 本页包含两个使用 ode45 来求解非刚性常微分方程的示例。MATLAB 提供几个非刚性 ODE 求解器。 • ode45 • ode23 • ode78 • ode89 • ode113 对于大多数非刚性问题,ode45 的性能最佳。但对于允许较宽松的误差容限或刚度适中的问题&…...

网络安全这个技能学会了,不考研也能迅速找到高薪工作

网络安全这个技能学会了,不考研也能迅速找到高薪工作 近几年“考研热”持续升温,报名人数和报录比屡创新高。据数据显示:2003年全国考研人数仅仅才70万,直至2017年考研人数才刚刚突破200万。而今年考研人数居高达457万&#xff0…...

GNN实战:Cora、Citeseer、PubMed三大文献数据集保姆级使用指南(附代码)

GNN实战:Cora、Citeseer、PubMed三大文献数据集深度解析与工程实践 引言:为什么这三个数据集成为GNN研究的"黄金标准"? 在探索图神经网络(GNN)的浩瀚宇宙中,Cora、Citeseer和PubMed如同三颗璀璨的…...

CnDataSeed发布:中国科研工作者跳槽研究数据库(CAMRD)

一、数据简介 追踪学术流动,解析科研人才动力机制! 在中国科研生态快速演化的背景下,科研人才流动是科研创新与学术产出的关键驱动力。但跳槽相关研究在高教研究中一直较为稀缺,系统化、可量化的科研工作者跳槽数据长期缺失&…...

新手必看!Quartus II 10.0 + DE2-115开发板从安装到点亮LED的完整避坑指南

Quartus II 10.0 DE2-115开发板从安装到点亮LED的完整避坑指南 第一次接触FPGA开发时,我盯着DE2-115开发板上密密麻麻的接口和Quartus II复杂的界面,完全不知道从何下手。直到经历了无数次驱动安装失败、管脚分配错误和编译报错后,才终于让第…...

别再为气象数据发愁!手把手教你用HYSPLIT做后向轨迹分析(附GDAS1数据下载指南)

从零掌握HYSPLIT后向轨迹分析:气象数据获取与实战技巧全解析 当你在环境科学或大气污染研究中首次接触HYSPLIT模型时,最令人头疼的往往不是软件操作本身,而是那些看似简单却暗藏玄机的气象数据准备工作。我曾见过无数研究生在深夜实验室里反复…...

如何高效优化多语言模型:专业部署的完整策略

如何高效优化多语言模型:专业部署的完整策略 【免费下载链接】paraphrase-multilingual-MiniLM-L12-v2 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/paraphrase-multilingual-MiniLM-L12-v2 你是否在部署多语言文本嵌入模型时遭遇过"显存…...

漫画收藏自由:picacomic-downloader的离线阅读解决方案

漫画收藏自由:picacomic-downloader的离线阅读解决方案 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器,带图形界面 带收藏夹,已打包exe 下载速度飞快 项目地址: https://gitcode.com/gh…...

MiniCPM-o-4.5-nvidia-FlagOS与ChatGPT对比评测:代码生成与逻辑推理

MiniCPM-o-4.5-nvidia-FlagOS与ChatGPT对比评测:代码生成与逻辑推理 最近在开发者圈子里,关于开源大模型和闭源大模型谁更强的讨论一直没停过。特别是涉及到代码生成和逻辑推理这种硬核任务,大家心里都有一杆秤。今天,我们就拿一…...

专业流媒体视频下载工具技术解析与使用指南

专业流媒体视频下载工具技术解析与使用指南 价值主张:高效解决流媒体内容本地化需求 在数字内容消费日益普及的今天,用户对在线视频资源的本地保存需求持续增长。m3u8-downloader作为一款专业的流媒体下载工具,专注于解决m3u8格式视频的高效…...

付费墙绕过工具深度解析:技术原理与合规使用指南

付费墙绕过工具深度解析:技术原理与合规使用指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在数字内容付费模式日益普及的今天,如何在尊重知识产权的前提…...