一、设计目的
使用python实现商业竞标数据的分析和预测。包括两个主要部分:
1.聚类分析(Cluster Analysis):
- 通过使用K均值聚类算法对商业竞标数据进行聚类,根据竞标者的倾向、竞标比率和早期竞标等因素将竞标者分成不同的群体(簇)。
- 使用散点图可视化聚类结果,以便直观地观察不同簇之间的区别和相似性。
2.回归分析(Regression Analysis):
- 使用线性回归模型建立胜率(Win Rate)与竞标者倾向、竞标比率和早期竞标之间的关系。
- 利用实际数据对模型进行训练,并对胜率进行预测。
- 使用折线图将实际胜率与预测胜率进行对比,以评估模型的准确性和效果。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 商聚 ” 获取。👈👈👈
二、功能展示
1.聚类结果散点图:
- 作用:提供了对商业竞标数据进行聚类的可视化展示,帮助观察不同簇之间的分布情况和特征差异。
- 分析:通过散点图,可以直观地看出数据中竞标者倾向和竞标比率之间的关系,以及它们与早期竞标的变化趋势。不同颜色的点代表了不同的簇,有助于识别出数据中存在的潜在模式或群体。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 商聚 ” 获取。👈👈👈
2.实际胜率与预测胜率对比图:
- 作用:用于评估线性回归模型对胜率的预测效果,以及实际胜率与模型预测之间的偏差和趋势。
- 分析:通过折线图,可以直观地比较模型预测的胜率与实际观测到的胜率。实际胜率与预测胜率的对比可以帮助我们评估模型的准确性和可靠性,进而确定模型是否能够有效地描述数据中的胜率变化趋势,以及是否存在预测偏差或模型拟合不足的情况。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 商聚 ” 获取。👈👈👈
代码分析
- 导入必要的库:
- 代码一开始导入了需要使用的库,包括
pandas
用于数据处理,numpy
用于数值计算,sklearn
用于聚类和回归分析,以及matplotlib.pyplot
用于绘图。
import pandas as pd import numpy as np from sklearn.cluster import KMeans from sklearn.linear_model import LinearRegression import matplotlib.pyplot as plt
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 商聚 ” 获取。👈👈👈
- 读取数据:
- 使用
pd.read_excel()
函数读取Excel文件中的商业竞标数据,并将其转换为DataFrame格式。
plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus'] = False data = pd.read_excel("shill_bidding.xlsx", engine='openpyxl')
3.聚类分析:
- 利用
KMeans
算法对竞标数据进行聚类分析。指定聚类数目为3(n_clusters=3
),并选择了"竞标者倾向"、"竞标比率"和"早期竞标"作为聚类的特征。 - 将聚类结果标签添加到DataFrame中,以便后续可视化和分析。
# 代码略.... # 代码略.... # 代码略.... # 代码略....
4.绘制聚类结果散点图:
- 使用
matplotlib.pyplot.scatter()
函数绘制散点图,横坐标为"竞标者倾向",纵坐标为"竞标比率",颜色根据不同的聚类结果进行分类显示。 - 添加标题、坐标轴标签和颜色图例,以便解释图表内容。
plt.figure(figsize=(10, 6)) # 略.... # 略.... # 略.... plt.xlabel('竞标者倾向') plt.ylabel('竞标比率') plt.colorbar(label='Cluster') plt.show()
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 商聚 ” 获取。👈👈👈
5.回归分析:
- 使用线性回归模型拟合竞标数据,将"竞标者倾向"、"竞标比率"和"早期竞标"作为自变量,"胜率"作为因变量。
- 使用
LinearRegression()
函数构建线性回归模型,并使用fit()
方法进行模型训练。
# 代码略.... # 代码略.... # 代码略.... # 代码略....
6.绘制实际胜率与预测胜率对比图:
- 使用
matplotlib.pyplot.plot()
函数绘制折线图,横坐标为数据的索引,纵坐标为实际胜率和模型预测的胜率。 - 将实际胜率和预测胜率分别用实线和虚线表示,以便进行对比分析。
- 添加标题、坐标轴标签和图例,方便理解图表内容和结果。
# 绘制实际胜率与预测胜率的对比图 plt.figure(figsize=(10, 6)) # 略.... plt.xlabel('Index') plt.ylabel('Win Rate') plt.legend() plt.show()
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 商聚 ” 获取。👈👈👈