forked from Eshe/competition-vd
Update README_V2.md
This commit is contained in:
parent
ef0513a47a
commit
0e2c91f956
145
README_V2.md
145
README_V2.md
|
@ -1,72 +1,73 @@
|
|||
我们小组采用python语言解决赛题一:漏洞严重等级(CVSS)研判
|
||||
******************************************************
|
||||
文件结构
|
||||
******************************************************
|
||||
以下为对python文件的作用的具体解释:
|
||||
所有代码包含于文件cvss_project中
|
||||
在cvss_project文件中,共有五部分:数据集部分(data_1),数据分析部分(pictures,data_process.py),训练好的模型(Changed_ESC_random_forest_model.joblib,Changed_ISC_gbt_model.joblib等共六个模型),训练模型的python代码(one_hot_changed.py,one_hot_unchanged等),以及真正用来预测cvss分数的代码部分(final.py)
|
||||
第一部分:
|
||||
data_1:包含赛题中给定的标准数据集,以及需要预测的测试集,final.py部分代码需要SIR_train_set.json数据集来统一编码格式,确保在加压过程中此数据集完好。
|
||||
第二部分:
|
||||
pictures:通过观察数据集以及查阅官方文档,发现决定cvss分数的几个指标似乎可以拆开来看.也就是说我可以将这个大任务分成几个板块.部分板块合乎常理,即对用户设备以及系统可以造成的伤害越高,威胁就越大,那么,理所当然地,它的评分就应该越高.pictures文件中,有各指标的关系初解.jpg,用图解的方式,清晰解释数据分析的结果
|
||||
data_process.py:通过pyecharts中的有关动态折线图的库,将数据间的关系可视化.
|
||||
第三部分:
|
||||
Changed_ESC_random_forest_model.joblib:以AV,AC,PR,UI,S(changed)为特征,以exploitabilityScore为输出构建的随机森林模型
|
||||
Changed_ISC_gbt_model.joblib:以C,I,A,S(changed)为特征,以impactScore为输出构建的GBDT模型
|
||||
Changed_BSC_linear_regression_model.joblib:以exploitabilityScore,impactScore,S(changed)为特征,以baseScore为输出构建的线性回归模型
|
||||
Unchanged_ESC_random_forest_model:以AV,AC,PR,UI,S(unchanged)为特征,以exploitabilityScore为输出构建的随机森林模型
|
||||
Unchanged_ISC_random_forest_model.joblib:以C,I,A,S(unchanged)为特征,以impactScore为输出构建的随机森林模型
|
||||
Unchanged_BSC_linear_regression_model.joblib:以exploitabilityScore,impactScore,S(unchanged)为特征,以baseScore为输出构建的线性回归模型
|
||||
第四部分:
|
||||
one_hot_changed.py:用来训练数据集中S为changed的数据,将字符串部分的特征用独热编码编码后,再作为特征输入,同时还以数据集中的impactScore和exploitabilityScore为特征,以baseScore为输出构建线性回归模型
|
||||
one_hot_unchanged.py:用来训练数据集中S为unchanged的数据,将字符串部分的特征用独热编码编码后,再作为特征输入,同时还以数据集中的impactScore和exploitabilityScore为特征,以baseScore为输出构建线性回归模型
|
||||
linear_regression.py:以数据集中的impactScore和exploitabilityScore为特征,以baseScore为输出构建线性回归模型(此为没有考虑数据集中Scope特征的废案)
|
||||
find_optimal_b.py:通过穷举,来找到最你和模型的偏置项b(穷举后,没有找到合适的偏置项b,为废案)
|
||||
第五部分:
|
||||
final.py:最终cvss评分预测部分的代码,只要向data_1文件导入一个名为"your_data.json",格式与赛题提供的训练集json数据格式一致的数据集,即可对数据集数据进行预测(对赛题提供的SIR_test_set.json数据集预测,均方根误差约为0.0585),需要注意的是,如果数据集格式文件格式,文件名称,数据格式有误,可能导致程序无法成功运行.
|
||||
|
||||
******************************************************
|
||||
如何配置运行环境
|
||||
******************************************************
|
||||
确保python版本为3.12
|
||||
若想python代码成功运行,要确保安装以下python库:
|
||||
pytorch 2.4.0
|
||||
pytorch-cuda 11.4
|
||||
pandas 2.2.2
|
||||
numpy 1.26.4
|
||||
scikit-learn 1.5.1
|
||||
joblib 1.4.2
|
||||
pyecharts 2.0.6 (pyecharts库主要是开发前期数据可视化用于观察规律的,若不想看数据的原始处理,可以不安装这个库)
|
||||
matplotlib 3.9.2 (matplotlib库主要是将预测后的数据可视化,若不想安装此库,将final.py中相关代码删去即可)
|
||||
|
||||
******************************************************
|
||||
构建模型所用的数据集格式
|
||||
******************************************************
|
||||
在输入数据前,你需要知道的是,我们以SIR_train_set.json数据集中数据为输入,构建出此模型,所以你想要预测的数据文件格式务必为json,且数据格式应如SIR_train_set.json数据集中数据格式一致,训练集中一份数据如下:
|
||||
{
|
||||
"CVE_ID": "CVE-2018-20847",
|
||||
"Issue_Url_old": "https://github.com/uclouvain/openjpeg/issues/431",
|
||||
"Issue_Url_new": "https://github.com/uclouvain/openjpeg/issues/431",
|
||||
"Repo_new": "uclouvain/openjpeg",
|
||||
"Issue_Created_At": "2014-11-14T19:45:14Z",
|
||||
"description": "Heap buffer overflow in opj_tcd_init_decode_tile. Originally reported on Google Code with ID NUMBERTAG ERRORTAG Reported by mayeut URLTAG on NUMBERTAG",
|
||||
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H",
|
||||
"severity": "HIGH",
|
||||
"baseScore": 8.8,
|
||||
"impactScore": 5.9,
|
||||
"exploitabilityScore": 2.8
|
||||
},
|
||||
******************************************************
|
||||
如何得到期望效果
|
||||
******************************************************
|
||||
一份数据中其他键对最终结果影响不大,唯有vectorString键与其所对应的值在最终评分预测结果影响较大.保证vectorString正确,即确保vectorString对应值包含"AV","AC","PR","UI","S","C","I","A"八个指标.
|
||||
务必确保vectorString对应值包含"AV","AC","PR","UI","S","C","I","A"八个指标!
|
||||
务必确保vectorString对应值包含"AV","AC","PR","UI","S","C","I","A"八个指标!!
|
||||
务必确保vectorString对应值包含"AV","AC","PR","UI","S","C","I","A"八个指标!!!
|
||||
重要的事情说三遍.
|
||||
除了vectorString,还请确保数据集中包含最终输出,程序中设置了读取数据中的输出值的功能(以便打印预测值与实际值,并计算均方根误差),所以如果数据集中缺少输出,会导致程序无法运行.
|
||||
务必确保数据集中包含输出值!
|
||||
务必确保数据集中包含输出值!!
|
||||
务必确保数据集中包含输出值!!!
|
||||
重要的事情说三遍.
|
||||
程序中包含打印所有预测值与实际值的功能,可选择性地将这部分代码注释掉.
|
||||
我们小组采用python语言解决赛题一:漏洞严重等级(CVSS)研判
|
||||
******************************************************
|
||||
文件结构
|
||||
******************************************************
|
||||
以下为对python文件的作用的具体解释:
|
||||
所有代码包含于文件cvss_project中,而你需要将五个分卷下载下来,解压第一个分卷,来得到cvss_project文件夹.
|
||||
在cvss_project文件中,共有五部分:数据集部分(data_1),数据分析部分(pictures,data_process.py),训练好的模型(Changed_ESC_random_forest_model.joblib,Changed_ISC_gbt_model.joblib等共六个模型),训练模型的python代码(one_hot_changed.py,one_hot_unchanged等),以及真正用来预测cvss分数的代码部分(final.py)
|
||||
第一部分:
|
||||
data_1:包含赛题中给定的标准数据集,以及需要预测的测试集,final.py部分代码需要SIR_train_set.json数据集来统一编码格式,确保在加压过程中此数据集完好。
|
||||
第二部分:
|
||||
pictures:通过观察数据集以及查阅官方文档,发现决定cvss分数的几个指标似乎可以拆开来看.也就是说我可以将这个大任务分成几个板块.部分板块合乎常理,即对用户设备以及系统可以造成的伤害越高,威胁就越大,那么,理所当然地,它的评分就应该越高.pictures文件中,有各指标的关系初解.jpg,用图解的方式,清晰解释数据分析的结果
|
||||
data_process.py:通过pyecharts中的有关动态折线图的库,将数据间的关系可视化.
|
||||
第三部分:
|
||||
Changed_ESC_random_forest_model.joblib:以AV,AC,PR,UI,S(changed)为特征,以exploitabilityScore为输出构建的随机森林模型
|
||||
Changed_ISC_gbt_model.joblib:以C,I,A,S(changed)为特征,以impactScore为输出构建的GBDT模型
|
||||
Changed_BSC_linear_regression_model.joblib:以exploitabilityScore,impactScore,S(changed)为特征,以baseScore为输出构建的线性回归模型
|
||||
Unchanged_ESC_random_forest_model:以AV,AC,PR,UI,S(unchanged)为特征,以exploitabilityScore为输出构建的随机森林模型
|
||||
Unchanged_ISC_random_forest_model.joblib:以C,I,A,S(unchanged)为特征,以impactScore为输出构建的随机森林模型
|
||||
Unchanged_BSC_linear_regression_model.joblib:以exploitabilityScore,impactScore,S(unchanged)为特征,以baseScore为输出构建的线性回归模型
|
||||
第四部分:
|
||||
one_hot_changed.py:用来训练数据集中S为changed的数据,将字符串部分的特征用独热编码编码后,再作为特征输入,同时还以数据集中的impactScore和exploitabilityScore为特征,以baseScore为输出构建线性回归模型
|
||||
one_hot_unchanged.py:用来训练数据集中S为unchanged的数据,将字符串部分的特征用独热编码编码后,再作为特征输入,同时还以数据集中的impactScore和exploitabilityScore为特征,以baseScore为输出构建线性回归模型
|
||||
linear_regression.py:以数据集中的impactScore和exploitabilityScore为特征,以baseScore为输出构建线性回归模型(此为没有考虑数据集中Scope特征的废案)
|
||||
find_optimal_b.py:通过穷举,来找到最你和模型的偏置项b(穷举后,没有找到合适的偏置项b,为废案)
|
||||
第五部分:
|
||||
final.py:最终cvss评分预测部分的代码,只要向data_1文件导入一个名为"your_data.json",格式与赛题提供的训练集json数据格式一致的数据集,即可对数据集数据进行预测(对赛题提供的SIR_test_set.json数据集预测,均方根误差约为0.0585),需要注意的是,如果数据集格式文件格式,文件名称,数据格式有误,可能导致程序无法成功运行.
|
||||
|
||||
******************************************************
|
||||
如何配置运行环境
|
||||
******************************************************
|
||||
确保python版本为3.12
|
||||
若想python代码成功运行,要确保安装以下python库:
|
||||
pytorch 2.4.0
|
||||
pytorch-cuda 11.4
|
||||
pandas 2.2.2
|
||||
numpy 1.26.4
|
||||
scikit-learn 1.5.1
|
||||
joblib 1.4.2
|
||||
pyecharts 2.0.6 (pyecharts库主要是开发前期数据可视化用于观察规律的,若不想看数据的原始处理,可以不安装这个库)
|
||||
matplotlib 3.9.2 (matplotlib库主要是将预测后的数据可视化,若不想安装此库,将final.py中相关代码删去即可)
|
||||
|
||||
******************************************************
|
||||
构建模型所用的数据集格式
|
||||
******************************************************
|
||||
在输入数据前,你需要知道的是,我们以SIR_train_set.json数据集中数据为输入,构建出此模型,所以你想要预测的数据文件格式务必为json,且数据格式应如SIR_train_set.json数据集中数据格式一致,训练集中一份数据如下:
|
||||
{
|
||||
"CVE_ID": "CVE-2018-20847",
|
||||
"Issue_Url_old": "https://github.com/uclouvain/openjpeg/issues/431",
|
||||
"Issue_Url_new": "https://github.com/uclouvain/openjpeg/issues/431",
|
||||
"Repo_new": "uclouvain/openjpeg",
|
||||
"Issue_Created_At": "2014-11-14T19:45:14Z",
|
||||
"description": "Heap buffer overflow in opj_tcd_init_decode_tile. Originally reported on Google Code with ID NUMBERTAG ERRORTAG Reported by mayeut URLTAG on NUMBERTAG",
|
||||
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H",
|
||||
"severity": "HIGH",
|
||||
"baseScore": 8.8,
|
||||
"impactScore": 5.9,
|
||||
"exploitabilityScore": 2.8
|
||||
},
|
||||
******************************************************
|
||||
如何得到期望效果
|
||||
******************************************************
|
||||
一份数据中其他键对最终结果影响不大,唯有vectorString键与其所对应的值在最终评分预测结果影响较大.保证vectorString正确,即确保vectorString对应值包含"AV","AC","PR","UI","S","C","I","A"八个指标.
|
||||
务必确保vectorString对应值包含"AV","AC","PR","UI","S","C","I","A"八个指标!
|
||||
务必确保vectorString对应值包含"AV","AC","PR","UI","S","C","I","A"八个指标!!
|
||||
务必确保vectorString对应值包含"AV","AC","PR","UI","S","C","I","A"八个指标!!!
|
||||
重要的事情说三遍.
|
||||
除了vectorString,还请确保数据集中包含最终输出,程序中设置了读取数据中的输出值的功能(以便打印预测值与实际值,并计算均方根误差),所以如果数据集中缺少输出,会导致程序无法运行.
|
||||
务必确保数据集中包含输出值!
|
||||
务必确保数据集中包含输出值!!
|
||||
务必确保数据集中包含输出值!!!
|
||||
重要的事情说三遍.
|
||||
你将会看到一个分卷解压的cvss_project.rar文件,共五个分卷,分别下载之后,解压第一个压缩文件即可.
|
||||
程序中包含打印所有预测值与实际值的功能,可选择性地将这部分代码注释掉.
|
||||
|
|
Loading…
Reference in New Issue