选择Wine数据集和Boston Housing数据集,使用LIBSVM,分别用线性核和高斯核训练一个SVM的代码
时间: 2024-03-25 22:37:53 浏览: 83
PCA+SVM.rar_LibSVM_ORL人脸数据集_PCA-SVM_pca降维_基于PCA和SVM的人脸识别
5星 · 资源好评率100%
好的,下面是使用 LIBSVM 对 Wine 数据集和 Boston Housing 数据集分别训练线性核和高斯核 SVM 模型的 Python 代码示例:
```python
import numpy as np
from sklearn.datasets import load_svmlight_file
from svmutil import *
# 加载 Wine 数据集
X_wine, y_wine = load_svmlight_file('path/to/wine_dataset')
X_wine = X_wine.toarray()
y_wine = y_wine.astype(int)
# 划分 Wine 数据集为训练集和测试集
X_wine_train, X_wine_test, y_wine_train, y_wine_test = train_test_split(X_wine, y_wine, test_size=0.2, random_state=42)
# 将 Wine 训练集和测试集保存为 LIBSVM 格式
wine_train_data = svm_problem(y_wine_train, X_wine_train)
wine_test_data = svm_problem(y_wine_test, X_wine_test)
# 训练 Wine 数据集的线性核 SVM 模型
wine_linear_model = svm_train(wine_train_data, '-t 0 -c 1')
# 训练 Wine 数据集的高斯核 SVM 模型
wine_gaussian_model = svm_train(wine_train_data, '-t 2 -c 1 -g 0.1')
# 加载 Boston Housing 数据集
X_housing, y_housing = load_svmlight_file('path/to/boston_housing_dataset')
X_housing = X_housing.toarray()
# 划分 Boston Housing 数据集为训练集和测试集
X_housing_train, X_housing_test, y_housing_train, y_housing_test = train_test_split(X_housing, y_housing, test_size=0.2, random_state=42)
# 将 Boston Housing 训练集和测试集保存为 LIBSVM 格式
housing_train_data = svm_problem(y_housing_train, X_housing_train)
housing_test_data = svm_problem(y_housing_test, X_housing_test)
# 训练 Boston Housing 数据集的线性核 SVM 模型
housing_linear_model = svm_train(housing_train_data, '-t 0 -c 1')
# 训练 Boston Housing 数据集的高斯核 SVM 模型
housing_gaussian_model = svm_train(housing_train_data, '-t 2 -c 1 -g 0.1')
```
在这个示例中,我们先使用 `load_svmlight_file` 函数加载 Wine 数据集和 Boston Housing 数据集,并将稀疏矩阵转换为密集矩阵,并将标签转换为整数类型。然后,我们使用 `train_test_split` 函数将数据集划分为训练集和测试集,并将训练集和测试集保存为 LIBSVM 格式的数据。接着,我们使用 `svm_train` 函数分别训练 Wine 数据集和 Boston Housing 数据集的线性核和高斯核 SVM 模型,并指定了相应的参数。最后,我们得到了 Wine 数据集和 Boston Housing 数据集四个不同的 SVM 模型。
阅读全文