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
R7-2 支持向量机分类:多类别圆形数据集实验

原文地址: https://www.cveoy.top/t/topic/mX1h 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录