赞
踩
使用勒索软件数据集训练一个决策树模型,以分析文件特征并识别勒索软件。通过学习已知恶意和正常文件的特征,模型将能够准确分类未知文件,从而有效检测勒索软件的存在。 该数据集中包含138047条数据,每条数据包含56个特征以及一个名为“legitimate”的标签,用于指示是否为合法(legitimate)的样本(其中1为合法,0为非法)。
勒索软件(Ransomware)是一类恶意软件,其主要目的是通过加密受害者的文件或系统,然后要求受害者支付赎金以获取解密密钥,从而恢复其被锁定的数据和系统。
决策树是一种常用的机器学习算法,用于分类和回归任务。它模拟了人类在做决策时的思维过程,通过一系列的问题和条件来分析和判断数据,最终做出预测或者决策。决策树的结构类似于一棵树,由根节点、内部节点和叶子节点组成。
在存储模型训练特征时,非数值型特征无法参与模型训练,因此需要对非数值型特征进行转换或是去除。
根据代码提示,补全需要的代码:
平台将根据最后的运行结果进行评测。 注意: (1)评测前,请注释题目未要求的所有print()语句,保留题目明确要求“打印”的语句; (2)请点击Jupyter的“保存”按钮,保存代码。 预期的结果为:
- # -*-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)
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。