决策树预测成本价 2020年 MathorCup数学建模 A题 无车承运人平台线路定价问题

想要看更加舒服的排版、更加准时的推送
关注公众号“不太灵光的程序员”
每日八点有干货推送,微信随时解答你的疑问
公众号“不太灵光的程序员” 同时发布《决策树预测成本价 2020年 MathorCup数学建模 A题 无车承运人平台线路定价问题》

2020年第十届MathorCup高校数学建模挑战赛题目

A题 无车承运人平台线路定价问题

本文解决问题3 的 成本价预测 问题
想了解问题1 相关解题思路,关注公众号或点击下方链接:
数据分析小白入门篇,mathorcup数学建模 A题 无车承运人平台线路定价问题,特征间的相关性分析
想了解问题2 相关解题思路,关注公众号或点击下方链接:
数据分析小白入门篇,2020年 MathorCup数学建模 A题 无车承运人平台线路定价问题,定价评价

题目详情附件及源码下载请关注公众号“不太灵光的程序员”回复关键字“MC2020A”

对代码存在疑问,请在公众号留言,我会及时和您取得联系。

题目回顾

问题 3: 建立关于线路定价的数学模型,给出附件2的线路任务的三次报价以及总成本定价。

分析过程

由于提供附件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))

决策树预测成本价 2020年 MathorCup数学建模 A题 无车承运人平台线路定价问题_第1张图片
我们对 线路总成本、 线路价格、 调价比例 分别进行训练,调价比例 的准确率太低了,我们还是使用 线路总成本、线路价格来做。

然后我们对待预测数据进行数据清洗,还不清楚的同学 先去看下《数据分析小白入门篇,mathorcup数学建模 A题 无车承运人平台线路定价问题,特征间的相关性分析》

取于训练数据集相同的特征进行预测,分别得到 线路总成本 和 第一次调整价格。

# 求 线路总成本 预测值
Y = r_cost_tree.predict(X)

决策树预测成本价 2020年 MathorCup数学建模 A题 无车承运人平台线路定价问题_第2张图片
决策树预测成本价 2020年 MathorCup数学建模 A题 无车承运人平台线路定价问题_第3张图片

推荐阅读:

  • Pandas对海平面温度异常进行分析
  • 机器学习中必须要会用的模块
  • 这些基础题你能答上来几个?
  • 还不知道怎么运行Python代码,快来撸代码
    在这里插入图片描述

你可能感兴趣的:(数据分析,MathorCup数学建模,机器学习,数据分析,python,数学建模)