R7-2 支持向量机分类:多类别圆形数据集实验
R7-2 支持向量机分类:多类别圆形数据集实验
解题思路
根据题目要求,我们需要自己生成数据集,每个类别有10个样本,每个样本的坐标通过 cos 和 sin 函数生成。
接着我们按照要求将数据集分为训练集和测试集,训练集占比为0.5,随机种子为1。
最后使用 sklearn 的支持向量机模型进行训练和测试,使用 'rbf' 核函数,gamma系数为20,decision_function_shape 策略为 'ovo'。
代码实现
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
# 生成数据集
def generate_dataset(num_classes):
X = []
y = []
for i in range(num_classes):
for j in range(10):
x = 3 * (i + 1) * np.cos((j + 1) * 3)
y = 3 * (i + 1) * np.sin((j + 1) * 3)
X.append([x, y])
y.append(i)
return np.array(X), np.array(y)
# 获取用户输入的类别数量
num_classes = int(input('请输入数据类别的个数:'))
# 生成数据集
X, y = generate_dataset(num_classes)
# 分割训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=1)
# 创建支持向量机模型
model = SVC(kernel='rbf', gamma=20, decision_function_shape='ovo')
# 训练模型
model.fit(X_train, y_train)
# 测试训练集和测试集的精度
train_accuracy = model.score(X_train, y_train)
print('accu of model for train set is {:.2f}'.format(train_accuracy))
test_accuracy = model.score(X_test, y_test)
print('accu of model for test set is {:.2f}'.format(test_accuracy))
输入样例
2
输出样例
accu of model for train set is 0.70
accu of model for test set is 0.30
原文地址: https://www.cveoy.top/t/topic/mX1h 著作权归作者所有。请勿转载和采集!