想要看更加舒服的排版、更加准时的推送
关注公众号“不太灵光的程序员”
每日八点有干货推送,微信随时解答你的疑问
公众号“不太灵光的程序员” 同时发布《决策树预测成本价 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))
我们对 线路总成本、 线路价格、 调价比例 分别进行训练,调价比例 的准确率太低了,我们还是使用 线路总成本、线路价格来做。
然后我们对待预测数据进行数据清洗,还不清楚的同学 先去看下《数据分析小白入门篇,mathorcup数学建模 A题 无车承运人平台线路定价问题,特征间的相关性分析》
取于训练数据集相同的特征进行预测,分别得到 线路总成本 和 第一次调整价格。
# 求 线路总成本 预测值
Y = r_cost_tree.predict(X)
推荐阅读:
- Pandas对海平面温度异常进行分析
- 机器学习中必须要会用的模块
- 这些基础题你能答上来几个?
- 还不知道怎么运行Python代码,快来撸代码