13.4 从网上下载或自己编程实现TSVM算法,选择两个UCI数据集,将其中30%的样例用作测试样本,10%的样例用作有标记样本,60%的样例用作无标记样本,分别训练出利用无标记样本的TSVM以及仅利用有标记样本的SVM,并比较其性能。
选择最常用的iris数据集,并以sciki-learn的SVM算法为基础建立TSVM,为了方便展示效果,选用iris数据集下的两个第二类和第三类,并将类标记记为-1,1,最后的训练结果选用其中两个属性进行可视化。本题为了与书上可进行对比,选用了线性超平面来划分类别,以此才能直接得到权重系数和松弛变量,具体代码如下:
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import sklearn.svm as svm
from sklearn import datasets
from sklearn.preprocessing import StandardScaler
# balanced data,each class has the same volume of every kind of data
iris = datasets.load_iris()
# data, label = iris.data[50:, [0, 3]], iris.target[50:] * 2 - 3 # 标签变为-1,1
data, label = iris.data[50:, :], iris.target[50:] * 2 - 3 # 4 attributes
# s