当前位置:   article > 正文

(头歌)【基础】决策树检测勒索软件_使用勒索软件数据集训练一个决策树模型,以分析文件特征并识别勒索软件。通过学习

使用勒索软件数据集训练一个决策树模型,以分析文件特征并识别勒索软件。通过学习

任务描述

使用勒索软件数据集训练一个决策树模型,以分析文件特征并识别勒索软件。通过学习已知恶意和正常文件的特征,模型将能够准确分类未知文件,从而有效检测勒索软件的存在。 该数据集中包含138047条数据,每条数据包含56个特征以及一个名为“legitimate”的标签,用于指示是否为合法(legitimate)的样本(其中1为合法,0为非法)。

相关知识

  • 勒索软件:

    勒索软件(Ransomware)是一类恶意软件,其主要目的是通过加密受害者的文件或系统,然后要求受害者支付赎金以获取解密密钥,从而恢复其被锁定的数据和系统。

  • 决策树:

    决策树是一种常用的机器学习算法,用于分类和回归任务。它模拟了人类在做决策时的思维过程,通过一系列的问题和条件来分析和判断数据,最终做出预测或者决策。决策树的结构类似于一棵树,由根节点、内部节点和叶子节点组成。

编码提示

在存储模型训练特征时,非数值型特征无法参与模型训练,因此需要对非数值型特征进行转换或是去除。

编程要求

根据代码提示,补全需要的代码:

  • 观察数据集中前5项数据
    预期的结果为:

    ,

  • 观察读取数据的矩阵大小
    预期的结果为:

    ,

  • 观察数值型字段的描述信息
    预期的结果为:

    ,

  • 判断数据集中是否存在空缺值
    预期的结果为:

    ,

  • 去除非数值型特征,保留数值型特征,并输出对应名称
    预期的结果为:

    ,

  • 创建决策树模型并训练,输出测试集上的分类报告
    预期的结果为:

    ,

测试说明

平台将根据最后的运行结果进行评测。 注意: (1)评测前,请注释题目未要求的所有print()语句,保留题目明确要求“打印”的语句; (2)请点击Jupyter的“保存”按钮,保存代码。 预期的结果为:

,

,

实验内容 

  1. # -*-encoding:utf-8 -*-
  2. # import package.
  3. # 导入必要的包
  4. import os
  5. import pandas as pd
  6. import numpy as np
  7. import matplotlib.pyplot as plt
  8. import seaborn as sns
  9. from sklearn import tree
  10. from sklearn.model_selection import train_test_split, cross_val_score
  11. from sklearn.metrics import confusion_matrix, classification_report, accuracy_score
  12. from sklearn.feature_selection import mutual_info_classif
  13. import warnings
  14. warnings.filterwarnings('ignore')
  15. df=pd.read_csv("/data/bigfiles/Ransomware.csv",sep='|')
  16. # 利用head()函数观察数据集中前5项数据
  17. df.head(5)
  18. # 利用shape观察读取数据的矩阵大小
  19. df.shape
  20. # 利用describe()函数观察数值型字段的描述信息
  21. df.describe()
  22. # 利用isnull()函数与sum()函数判断数据集中是否存在空缺值
  23. df.isnull().sum()
  24. # 由于非数值型特征无法参与决策树模型的训练,因此利用iloc函数提取数值型特征数据作为决策树模型训练的特征
  25. X = df.iloc[:, 2:-1]
  26. print(X.columns)
  27. y = df.iloc[:,56]
  28. # 划分数据集
  29. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # numpy
  30. # 利用tree.DecisionTreeClassifier创建决策树模型,其中参数设置为criterion='gini', max_depth=5
  31. clf = tree.DecisionTreeClassifier(criterion='gini', max_depth=5, splitter='best')
  32. # 训练clf,并观察测试集的准确率
  33. clf.fit(X_train, y_train)
  34. y_pred = clf.predict(X_test)
  35. class_report = classification_report(y_test, y_pred)
  36. print("分类报告:\n", class_report)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/643526
推荐阅读
相关标签
  

闽ICP备14008679号