决策树预测成本价 2020年 MathorCup数学建模 A题 无车承运人平台线路定价问题
时间:2022-07-22
本文章向大家介绍决策树预测成本价 2020年 MathorCup数学建模 A题 无车承运人平台线路定价问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
2020年第十届MathorCup高校数学建模挑战赛题目
A题 无车承运人平台线路定价问题
题目详情附件及完整源码下载请关注公众号“不太灵光的程序员”回复关键字“MC2020A”
对代码存在疑问,请在公众号留言,我会及时和您取得联系。
问题 3:建立关于线路定价的数学模型,给出附件2的线路任务的三次报价以及总成本定价。
分析过程
4、预测线路成本价
由于提供附件1 的数据只提供了总成本、第一次定价、调价比例和调价后的价格,没有说明调价后的价格是第几调价。
我们假定所给的调价后价格认为是第一次调价后的价格,给的调价比例看做是第一次调价的比例。
我们首先需要预测 线路总成本,然后预测 第一次调价 或者 第一次调价比例,我们才能在线路价格的基础上给出后两次报价。
构建和使用模型一般分为4步:
- 定义模型:搞清楚要使用什么类型的模型。
- 拟合模型:捕获数据集中所包含的模式,这一步是建模的核心步骤。
- 模型评价:评价模型预测结果的好与差。
- 预测结果:利用模型来输出预测结果。
我们所选的训练模型是决策树,训练 所选特征 和 线路总成本、第一次调价 间的关系。
利用scikit-learn库来创建模型。
r_tree = tree.DecisionTreeRegressor(random_state=1) # random_state 默认是0
对参数 random_state 赋予一个特定的值可以让模型每次运行的结果都是一致的。
你可以对它赋予任何数值,因为无论你选择什么数值,都不会对模型的质量产生本质影响。
from sklearn import tree
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df = pd.read_csv("car_new3.csv")
df_x = df[['总里程', '是否续签', '车辆长度', '车辆吨位', '地区', '需求紧急程度', '交易对象', '业务类型',
'需求类型2', '省内/外']]
df_cost_y = df["线路总成本"]
df_price_y = df["线路价格"]
df_modify_y = df["调价比例"]
# 创建模型
r_cost_tree = tree.DecisionTreeRegressor(random_state=1)
r_price_tree = tree.DecisionTreeRegressor(random_state=1)
r_modify_tree = tree.DecisionTreeRegressor(random_state=1)
# 用 fit 训练模型
r_cost_tree.fit(df_x, df_cost_y)
r_price_tree.fit(df_x, df_price_y) # 用 fit 训练模型,train_x, train_y 是第一步划分的数据集。
r_modify_tree.fit(df_x, df_modify_y) # 用 fit 训练模型,train_x, train_y 是第一步划分的数据集。
# 用 score 测试模型 准确率
print('线路总成本 准确率:', r_cost_tree.score(df_x, df_cost_y))
print('线路价格 准确率:', r_price_tree.score(df_x, df_price_y))
print('调价比例 准确率:', r_modify_tree.score(df_x, df_modify_y))
我们对 线路总成本、 线路价格、 调价比例 分别进行训练,调价比例 的准确率太低了,我们还是使用 线路总成本、线路价格来做。
然后我们对待预测数据进行数据清洗,还不清楚的同学 先去看下《数据分析小白入门篇,mathorcup数学建模 A题 无车承运人平台线路定价问题,特征间的相关性分析》
取和训练数据集相同的特征进行预测,分别得到 线路总成本 和 第一次调整价格。
# 求 线路总成本 预测值
Y = r_cost_tree.predict(X)
end
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法