83 lines
1.8 KiB
Markdown
83 lines
1.8 KiB
Markdown
# Semi-Supervised Support Vector Machines (S3VM)
|
|
|
|
Python implementation of semi-supervised SVM algorithms for binary classification using both labeled and unlabeled data.
|
|
|
|
## Algorithms
|
|
|
|
- **NewtonUTSVM**: Newton-based method using two parallel planes
|
|
- **S3VM Constrained**: Constrained formulation with MIP
|
|
- **S3VM Unconstrained**: Unconstrained smooth optimization
|
|
- **MC_NDCC**: Synthetic dataset generator
|
|
- **SRMSVM**: 1-norm SVM for sparse solutions
|
|
|
|
## Requirements
|
|
|
|
- Python 3.x
|
|
- numpy
|
|
- pandas
|
|
- scipy
|
|
- scikit-learn
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
pip install numpy pandas scipy scikit-learn
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Run Experiments
|
|
|
|
```bash
|
|
cd code
|
|
python main.py
|
|
```
|
|
|
|
### Basic Example
|
|
|
|
```python
|
|
from NewtonUTSVM import NewtonUTSVM
|
|
from utils import load_dataset, calculate_accuracy
|
|
|
|
# Load dataset
|
|
X, y, x_test, y_test, U = load_dataset("data/diabetes.csv")
|
|
y = y.reshape(y.shape[0], 1)
|
|
|
|
# Train
|
|
C = [0.1, 0.1, 0.1, 0.1, 0.3, 0.3]
|
|
model = NewtonUTSVM(X, y, U, C=C, eps=1e-4)
|
|
model.fit()
|
|
|
|
# Predict
|
|
model.predict(x_test=x_test)
|
|
predictions = model.get_preds()
|
|
accuracy = calculate_accuracy(y_test, predictions)
|
|
print(f"Accuracy: {accuracy}%")
|
|
```
|
|
|
|
## Datasets
|
|
|
|
Real-world: diabetes, ionosphere, musk, sonar, gender, wpbc
|
|
|
|
Synthetic: NDCC datasets (100_10, 100_100, 500_10, 1000_10)
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
code/
|
|
├── main.py # Main script
|
|
├── NewtonUTSVM.py # NewtonUTSVM
|
|
├── S3VM_constrained.py # Constrained S3VM
|
|
├── S3VM_unconstrained.py # Unconstrained S3VM
|
|
├── SRMSVM.py # SRMSVM
|
|
├── MC_NDCC.py # Dataset generator
|
|
├── utils.py # Utilities
|
|
└── data/ # Datasets
|
|
```
|
|
|
|
## Notes
|
|
|
|
- Binary classification only (labels: +1, -1)
|
|
- Datasets are automatically normalized
|
|
- NewtonUTSVM requires 6 C parameters
|