首页 > 其他分享 >1.5

1.5

时间:2025-01-05 21:45:40浏览次数:1  
标签:1.5 分箱 模型 查全率 召回 聚类 类别

简明结果

精度

0.8252

查准率

0.8158

查全率

0.8101

F1值

0.8072

详细方案和结果分析

解决方案

【包括预测分析的设计思路的具体实现过程或实现步骤】

设计思路

方法:将承重强度的范围划分为若干个等宽区间。例如,如果最小值是20 MPa,最大值是60 MPa,可以将范围划分为4个等宽区间:[20, 30), [30, 40), [40, 50), [50, 60]。

理由:这种方法简单直观,易于实现。它适用于数据分布较为均匀的情况。然而,如果数据分布不均匀,某些区间可能会包含过多或过少的样本,导致模型性能下降。

实现步骤

读取数据:

使用 pandas 读取 Excel 文件中的数据。

Python

深色版本

data = pd.read_excel('Data.xlsx', sheet_name=0)

预处理数据:

提取特征和标签(y 列作为标签)。

确保 y 列是数值型,并处理缺失值。

Python

深色版本

X = data.drop(columns=['y'])

y = pd.to_numeric(data['y'], errors='coerce')

data = data.dropna()

等宽分箱离散化:

使用 KBinsDiscretizer 进行等宽分箱,将连续的承重强度转换为离散等级。

Python

深色版本

def discretize_equal_width(y, n_bins=4):

    discretizer = KBinsDiscretizer(n_bins=n_bins, encode='ordinal', strategy='uniform')

    y_discretized = discretizer.fit_transform(y.values.reshape(-1, 1)).flatten()

    return y_discretized

数据划分:

将数据集划分为训练集和测试集(80% 训练,20% 测试)。

Python

深色版本

X_train, X_test, y_train, y_test = train_test_split(X, y_discretized, test_size=0.2, random_state=42)

模型训练:

使用随机森林分类器进行模型训练。

Python

深色版本

model = RandomForestClassifier(random_state=42)

model.fit(X_train, y_train)

模型预测与评估:

对测试集进行预测,并计算精度、查准率、查全率和F1值。

Python

深色版本

y_pred = model.predict(X_test)

report = classification_report(y_test, y_pred, output_dict=True)

translated_report = translate_classification_report(report)

可视化混淆矩阵:

绘制混淆矩阵,帮助理解模型的分类效果。

Python

深色版本

cm = confusion_matrix(y_test, y_pred)

plt.figure(figsize=(8, 6))

sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')

plt.title('图3. 等宽分箱的分类混淆矩阵')

plt.xlabel('预测值')

plt.ylabel('真实值')

plt.show()

2. 结果分析

整体性能:

精度 (Accuracy):0.8252,表示大约82.52%的样本被正确分类。

宏平均查准率 (Macro Precision):0.8158,表示每个类别的查准率的平均值。

宏平均查全率 (Macro Recall):0.8101,表示每个类别的查全率的平均值。

宏平均F1值 (Macro F1 Score):0.8072,表示查准率和查全率的调和平均值。

类别级别的性能:

类别 0.0:

精确率:0.9167,召回率:0.9362,F1值:0.9263,支持度:47。

类别 1.0:

精确率:0.7944,召回率:0.9043,F1值:0.8458,支持度:94。

类别 2.0:

精确率:0.8250,召回率:0.6000,F1值:0.6947,支持度:55。

类别 3.0:

精确率:0.7273,召回率:0.8000,F1值:0.7619,支持度:10。

分析:

类别0.0和类别1.0的表现较好,精确率和召回率都较高,说明模型对这两个类别的预测较为准确。

类别2.0的召回率较低(0.6000),表明模型在识别该类别时存在较大的召回问题,可能是因为该类别样本较少或特征不够明显。

类别3.0的样本数量较少(仅10个),因此其性能波动较大,但总体表现尚可。

3. 解决方案总结

优点:

等宽分箱方法简单直观,易于实现,适合数据分布较为均匀的情况。

缺点:

如果数据分布不均匀,某些区间可能会包含过多或过少的样本,导致模型性能下降。

改进建议:

如果数据分布不均匀,可以考虑使用其他离散化方法,如等频分箱或K-means聚类,以提高模型的鲁棒性。

可以通过特征工程进一步优化模型性能,例如增加更多的特征或进行特征选择。

考虑使用集成学习方法(如投票分类器、堆叠分类器)来提高预测准确性

 

 

 

 

 

 

 

 

结果展示

【包括每个任务点结果的展示】

  1. 根据样本的承重强度对样本标签进行离散化处理,将连续承重强度转换为离散承重等级。至少给出3种输出指标离散化的方案,并阐述理由。在后续任务中分别进行模型训练,并在结果展示4、5和结果分析中,从精度,查准率,查全率,FI值等多个角度进行分析,最终选出预测结果最好的离散化方式。

 

等宽分箱聚类的离散化方法在准确率、查准率、查全率和F1值上表现最佳,尤其是在处理类别不平衡的情况下,等宽分箱聚类能够更好地捕捉数据的分布特征,从而提高模型的预测性能。

等频分箱的表现次之,特别是在处理数据分布不均匀的情况下,等频分箱能够较好地平衡各个类别的样本数量。

K-means的表现相对最差,主要是因为其假设数据分布均匀,而在实际数据中,承重强度的分布往往是不均匀的。

因此,我们最终选择等宽分箱聚类作为最佳的离散化方式

 

 

 

  1. 返回前六条数据结果(结果截图,并标明图1. 数据展示),并对数据集中的概要信息进行描述。

 

 

数据集概要信息描述

 列名解释

a:水泥含量(kg/m³)

b:炉渣粉含量(kg/m³)

c:飞灰含量(kg/m³)

d:水含量(kg/m³)

e:超塑化剂含量(kg/m³)

f:粗骨料含量(kg/m³)

g:细骨料含量(kg/m³)

h:养护天数(days)

y:混凝土抗压强度(MPa)

数据类型

所有列的数据类型均为 float64,表示它们都是数值型数据。

y 列是目标变量,表示混凝土的抗压强度,其他列为特征变量。

 数据规模

数据集中共有 n 行(具体行数取决于你的数据集大小),每行代表一个样本,包含8个特征和1个目标变量。

 数据分布

水泥含量(a):水泥是混凝土的主要成分之一,通常在300-550 kg/m³之间。

炉渣粉含量(b):炉渣粉是一种替代水泥的材料,可以减少成本并提高混凝土的耐久性。部分样本中可能没有使用炉渣粉,因此该列存在0值。

飞灰含量(c):飞灰也是一种替代水泥的材料,通常用于提高混凝土的流动性。部分样本中可能没有使用飞灰,因此该列也存在0值。

水含量(d):水是混凝土的重要组成部分,通常在150-200 kg/m³之间。

超塑化剂含量(e):超塑化剂用于改善混凝土的流动性和减少用水量。部分样本中可能没有使用超塑化剂,因此该列存在0值。

粗骨料含量(f):粗骨料(如碎石)是混凝土的骨架材料,通常在900-1100 kg/m³之间。

细骨料含量(g):细骨料(如砂子)用于填充粗骨料之间的空隙,通常在500-700 kg/m³之间。

养护天数(h):养护天数是指混凝土在测试前的养护时间,通常在7-365天之间。

混凝土抗压强度(y):这是目标变量,表示混凝土的抗压强度,单位为MPa(兆帕)。抗压强度的范围通常在20-80 MPa之间。

  1. 数据可视化结果(标明图2. 数据可视化)

图2

 

 

  1. 混淆矩阵展示(标明图3. 分类混淆矩阵)

图3

 

 

 

 

 

  1. 精度,查准率,查全率,FI值的结果截图(标明图4. 分类结果)

图4

 

 

 

结果分析

【包括预测结果分析(包括对超参影响、精度、查准率、查全率、F1值的分析)、可能存在的问题、可提升的改进思路等】

我们将对三种离散化方法(等宽分箱、等频分箱、K-means聚类)的查全率和查准率进行详细分析,探讨超参数的影响,并讨论可能存在的问题及改进思路。

 

1. 等宽分箱

 

类别 0.0:精确率和召回率都非常高,表明模型对这个类别的预测非常准确。

类别 1.0:召回率较高,但精确率略低,说明模型能够较好地识别出该类别的样本,但在避免误分类方面稍有不足。

类别 2.0:召回率较低(0.6000),表明模型在识别该类别时存在较大的召回问题。

类别 3.0:精确率较低(0.7273),但召回率较高(0.8000),说明模型对这个类别的预测有一定的不确定性。

超参数影响

分箱数(n_bins):等宽分箱的分箱数直接影响每个区间的宽度。如果分箱数过少,可能会导致信息丢失;如果分箱数过多,可能会引入噪声。建议尝试不同的分箱数(如3、5、7等),并观察对模型性能的影响。

可能存在的问题

数据分布不均匀:等宽分箱假设数据在各个区间内均匀分布,但如果数据分布不均匀,某些区间可能会包含过多或过少的样本,导致模型性能下降。

类别不平衡:类别2.0和类别3.0的样本数量较少,可能导致模型在这两个类别上的表现不佳。

改进思路

调整分箱数:尝试不同的分箱数,找到最优的分箱方案。

处理类别不平衡:可以使用过采样、欠采样或加权损失函数来平衡类别之间的差异。

特征工程:增加更多的特征或进行特征选择,以提高模型的泛化能力。

2. 等频分箱

 

类别 0.0:精确率和召回率都非常高,表明模型对这个类别的预测非常准确。

类别 1.0:精确率和召回率都较低,说明模型在这个类别上的表现较差。

类别 2.0:召回率较高(0.8077),但精确率较低(0.6667),表明模型在识别该类别时存在一定的误分类问题。

类别 3.0:精确率非常高(0.9512),但召回率较低(0.7222),说明模型对这个类别的预测较为保守。

超参数影响

分箱数(n_bins):等频分箱确保每个区间内的样本数量相同,因此分箱数的选择会影响每个区间的宽度。建议尝试不同的分箱数,观察对模型性能的影响。

可能存在的问题

类别不平衡:尽管等频分箱解决了数据分布不均匀的问题,但类别不平衡仍然可能导致某些类别的性能较差。

过度拟合:类别3.0的高精确率和低召回率可能表明模型对该类别存在过度拟合现象。

改进思路

调整分箱数:尝试不同的分箱数,找到最优的分箱方案。

处理类别不平衡:可以使用过采样、欠采样或加权损失函数来平衡类别之间的差异。

模型正则化:通过增加正则化项或使用更复杂的模型(如XGBoost、LightGBM)来减少过度拟合。

3. K-means聚类

 

类别 0.0:精确率和召回率都非常高,表明模型对这个类别的预测非常准确。

类别 1.0:召回率较高(0.8667),但精确率较低(0.7386),说明模型在识别该类别时存在一定的误分类问题。

类别 2.0:召回率较低(0.6364),表明模型在识别该类别时存在较大的召回问题。

类别 3.0:精确率和召回率都较低,说明模型对这个类别的预测效果较差。

超参数影响

聚类数(n_clusters):K-means聚类的聚类数直接影响分箱的数量。如果聚类数过少,可能会导致信息丢失;如果聚类数过多,可能会引入噪声。建议尝试不同的聚类数(如3、5、7等),并观察对模型性能的影响。

初始聚类中心:K-means聚类的结果依赖于初始聚类中心的选择。可以尝试使用不同的初始化方法(如k-means++)来提高聚类效果。

可能存在的问题

类别不平衡:类别3.0的样本数量较少,可能导致模型在这个类别上的表现不佳。

聚类质量:K-means聚类的质量取决于数据的分布情况。如果数据分布复杂,K-means可能无法找到最优的分箱边界。

改进思路

调整聚类数:尝试不同的聚类数,找到最优的分箱方案。

处理类别不平衡:可以使用过采样、欠采样或加权损失函数来平衡类别之间的差异。

使用其他聚类算法:可以尝试使用其他聚类算法(如DBSCAN、Spectral Clustering)来提高聚类质量。

综合比较与结论

1. 精度、查准率、查全率、F1值的综合分析

方法  精度  查准率 查全率 F1值

等宽分箱 0.8252 0.8158 0.8101 0.8072

等频分箱 0.8111 0.8090 0.7963 0.7961

K-means聚类 0.7812 0.7621 0.7216 0.7416

等宽分箱:在精度、查准率、查全率和F1值上表现最佳,尤其是在类别0.0和类别1.0上,精确率和召回率都非常高。然而,类别2.0和类别3.0的表现有待提升。

等频分箱:整体表现次之,尤其在类别1.0和类别2.0上,精确率和召回率较低。类别3.0的精确率非常高,但召回率较低,可能存在过度拟合现象。

K-means聚类:整体表现最差,尤其是类别3.0的精确率和召回率较低。这可能是由于K-means聚类在处理复杂分布的数据时,无法找到最优的分箱边界。

2. 最佳离散化方式

根据上述分析,等宽分箱在精度、查准率、查全率和F1值上表现最佳,因此推荐使用等宽分箱作为最佳的离散化方式。然而,对于类别2.0和类别3.0的表现不佳,建议进一步优化,如调整分箱数、处理类别不平衡问题等。

 

3. 改进思路

调整分箱数:尝试不同的分箱数,找到最优的分箱方案,尤其是在等宽分箱和等频分箱中。

处理类别不平衡:可以使用过采样、欠采样或加权损失函数来平衡类别之间的差异,尤其是对于样本数量较少的类别(如类别2.0和类别3.0)。

特征工程:增加更多的特征或进行特征选择,以提高模型的泛化能力。

模型正则化:通过增加正则化项或使用更复杂的模型(如XGBoost、LightGBM)来减少过度拟合,尤其是在等频分箱中类别3.0的表现。

 

 

 

 

 

 

 

标签:1.5,分箱,模型,查全率,召回,聚类,类别
From: https://www.cnblogs.com/galileo9527/p/18653948

相关文章

  • 12.30~1.5 总结
    做题学习了莫队二次离线(未真正掌握)CF2034F2\(2^k\)的组合意义是选子集,这里把\(2^k\)再拆为\(1+2+\dots+2^{k-1}+1\)可以直接叠加关键点的贡献。那么一个关键点的贡献就变成了选后面的一个集合要求必须经过,这个可以dp。CF1463F显然(?)答案是关于前缀\(x+y\)个循环的。对......
  • 1.5
    Java空指针异常NullPointerException1packagevarycode;23importjava.util.ArrayList;4importjava.util.Random;56publicclassVaryCodeDemo{78publicstaticvoidmain(String[]args){9//TODO自动生成的方法存根10VaryCodetest1=n......
  • 1.5
    将MySQL数据导入到SqlServer中利用ODBC    1.安装mysql数据库的ODBC驱动,mysql-connector-odbc-3.51.19-win32.msi2.打开控制面板\管理工具\数据源ODBC,在用户DSN中添加一个MySQL ODBC3.51数据源。3.在登录login选项卡中输入数据源名称DataSourceName,此处输入My......
  • 2025.1.5
    BuyOne,GetOneFree题解OneLastKiss&BeautifulWorld初めてのルーブルはなんてことはなかったわ私だけのモナリザもうとっくに出会ってたから初めてあなたを見たあの日動き出した歯車止められない喪失の予感もういっぱいあるけれどもう一つ増やしましょう(Can......
  • 1.5 实现,而不是继承
    enum对象继承自java.lang.Enum,Java不支持多重继承,这意味着枚举对象不能再继承别的对象了。不过可以创建实现了多个接口的枚举类型。packagewww.com.cat.chapter01;importjava.util.Random;importjava.util.function.Supplier;importjava.util.stream.IntS......
  • 2024.12.30 ~ 2025.1.5
    12.30忘了具体干了点啥,应该是啥也没干,因为我没记住任何东西(12.31上午模拟赛。然后题目过于困难了......
  • Royal Elementor Addons Pro v1.3.987 + v1.5.0 elementor网页设计元素组件插件下载
    RoyalElementorAddonsProelementor网页设计元素组件插件破解版简介&下载RoyalElementorAddonsProNulledElementor小部件、模板套件和扩展。从零到英雄构建网站所需的唯一Elementor插件!动态网站生成器建立任何类型的网站:使用Elementor动态标签创建自定义帖子类型创......
  • 11.5日博客程序员修炼之路第六章学习笔记
    《程序员修炼之路——从小工到专家》第六章学习笔记一、测试基础理念测试是保障软件质量关键。其目的不仅是找错,更要确保软件满足需求、具备可靠性与稳定性。应贯穿开发全程,而非仅在后期进行。二、测试类型1. 单元测试:针对最小功能单元(如函数、类方法)测试。用例专注单一功能,......
  • 11.5
    软件构造课的最后一部分内容难度不减,我在课堂上努力地理解老师讲的每一个知识点,生怕错过任何一个重要的细节。软件企业文化课上,老师组织了一场小组讨论,主题是关于如何打造一个有凝聚力的软件团队,我们小组讨论得热火朝天,各抒己见,最后总结出了一份不错的方案,得到了老师的表扬,这让我......
  • 【PHP代码审计】白盒审计超详细DolphinPHP_V1.5.0 RCE漏洞分析及复现
    漏洞影响:V1.5.0源码下载:https://github.com/caiweiming/DolphinPHP/releases环境搭建参考文章:https://segmentfault.com/a/11900000217795831、漏洞分析漏洞点application/common.php中的call_user_func函数关于call_user_func函数是PHP中的一个函数,用于调用回调函数或方......