# SVDD **Repository Path**: li_ming_chen/SVDD ## Basic Information - **Project Name**: SVDD - **Description**: Python code for abnormal detection or fault detection using Support Vector Data Description (SVDD) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-01-21 - **Last Updated**: 2025-02-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Support Vector Data Description (SVDD) Python Code for abnormal detection or fault detection using SVDD. Email: iqiukp@outlook.com ------------------------------------------------------------------- ## Main features * SVDD model for training dataset containing only positive training data. (SVDD) * SVDD model for training dataset containing both positive training data and negative training data. (nSVDD) * Multiple kinds of kernel functions. * Visualization module including ROC curve plotting, test result plotting, and decision boundary. ------------------------------------------------------------------- ## Requirements * matplotlib * cvxopt * scipy * numpy * scikit_learn ------------------------------------------------------------------- ## About SVDD model Two types of SVDD models are built according to the following references: [1] Tax D M J, Duin R P W. Support vector data description[J]. Machine learning, 2004, 54(1): 45-66. ------------------------------------------------------------------- ## A simple application for decision boundary (using differnent kernel functions) ``` # -*- coding: utf-8 -*- import sys sys.path.append("..") from src.svdd import SVDD from src.visualize import Visualization as draw from data import PrepareData as load # load banana-shape data trainData, testData, trainLabel, testLabel = load.banana() # kernel list kernelList = {"1": {"type": 'gauss', "width": 1/24}, "2": {"type": 'linear', "offset": 0}, "3": {"type": 'ploy', "degree": 2, "offset": 0}, "4": {"type": 'tanh', "gamma": 1e-4, "offset": 0}, "5": {"type": 'lapl', "width": 1/12} } for i in range(len(kernelList)): # set SVDD parameters parameters = {"positive penalty": 0.9, "negative penalty": 0.8, "kernel": kernelList.get(str(i+1)), "option": {"display": 'on'}} # construct an SVDD model svdd = SVDD(parameters) # train SVDD model svdd.train(trainData, trainLabel) # test SVDD model distance, accuracy = svdd.test(testData, testLabel) # visualize the results # draw.testResult(svdd, distance) # draw.testROC(testLabel, distance) draw.boundary(svdd, trainData, trainLabel) ``` * gaussian kernel function