实验数据集:垃圾邮件数据集(http://archive.ics.uci.edu/ml/datasets/Spambase)。请从spambase.csv读入数据。
数据集基本信息如下:样本数: 4601,特征数量: 57, 类别:1为垃圾邮件,0为非垃圾邮件。
将样本集划分为70%的训练集,30%作为测试集。分别完成以下内容。
-
决策树
(1)分别取节点分裂标准为“gini”或“entropy”,分别建立决策树模型,计算训练误差和测试误差;画出对应的决策树。
(2)设置树高,由3到30,分别建模,计算训练误差和测试误差,并将结果可视化。 -
支持向量机SVM
利用管道、搜索网格的方式,确定SVM对垃圾邮件数据集建模的最优参数。其中:
(1)管道流程定义包括:数据标准化,PCA降维,SVC估计器。
(2)搜索网格参数包括:C值(惩罚系数)、Kernel(核函数)。
#!/usr/bin/env python
# coding: utf-8
# In[145]:
import pandas as pd
import numpy as np
from sklearn import linear_model, model_selection
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn import tree
import matplotlib.pyplot as plt
from sklearn.tree import plot_tree
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.pipeline import make_pipeline
# In[146]:
spam = pd.read_csv(r'spambase.csv')
spam
# In[147]:
data = spam.iloc[:,0:57]
print(data.shape)
target = spam.iloc[:,57]
print(target.shape)
# In[148]:
x_train, x_test, y_train, y_test = model_selection.train_test_split(data,target,
test_size=0.3,random_state=1)
# In[149]:
feature_name = spam.columns[0:57] #数据集中的列名
target_name = spam.columns[57] #数据集中的标签名字