(头歌)【基础】决策树检测勒索软件

任务描述

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

相关知识

  • 勒索软件:

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

  • 决策树:

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

编码提示

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

编程要求

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

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

    (头歌)【基础】决策树检测勒索软件_第1张图片

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

    ,

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

    (头歌)【基础】决策树检测勒索软件_第2张图片

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

    (头歌)【基础】决策树检测勒索软件_第3张图片

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

    (头歌)【基础】决策树检测勒索软件_第4张图片

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

    (头歌)【基础】决策树检测勒索软件_第5张图片

测试说明

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

(头歌)【基础】决策树检测勒索软件_第6张图片

(头歌)【基础】决策树检测勒索软件_第7张图片

实验内容 

# -*-encoding:utf-8 -*-
# import package.
# 导入必要的包
import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import tree
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.metrics import confusion_matrix, classification_report, accuracy_score
from sklearn.feature_selection import mutual_info_classif

import warnings
warnings.filterwarnings('ignore')
df=pd.read_csv("/data/bigfiles/Ransomware.csv",sep='|')


# 利用head()函数观察数据集中前5项数据
df.head(5)


# 利用shape观察读取数据的矩阵大小
df.shape


# 利用describe()函数观察数值型字段的描述信息
df.describe()

# 利用isnull()函数与sum()函数判断数据集中是否存在空缺值
df.isnull().sum()


# 由于非数值型特征无法参与决策树模型的训练,因此利用iloc函数提取数值型特征数据作为决策树模型训练的特征
X = df.iloc[:, 2:-1]
print(X.columns)
y = df.iloc[:,56]
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)  # numpy


# 利用tree.DecisionTreeClassifier创建决策树模型,其中参数设置为criterion='gini', max_depth=5
clf = tree.DecisionTreeClassifier(criterion='gini', max_depth=5, splitter='best')
# 训练clf,并观察测试集的准确率
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
class_report = classification_report(y_test, y_pred)
print("分类报告:\n", class_report)

你可能感兴趣的:(头歌实训,决策树,python)