R7-2 支持向量机分类:多类别圆周数据集
解题思路:
本题需要自己生成数据集,然后使用sklearn的支持向量机进行分类。
数据集的生成可以按照题目要求,使用cos和sin函数生成坐标,然后按照类别编号生成数据集。
然后使用train_test_split函数将数据集划分为训练集和测试集,使用sklearn的SVC模型进行拟合和预测,并计算精度即可。
注意需要设置gamma系数和decision_function_shape参数。
参考代码:
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
# 获取类别数量
num_classes = int(input("输入数据类别的个数:"))
# 生成数据集
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)
# 转换为numpy数组
X = np.array(X)
Y = np.array(Y)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.5, random_state=1)
# 创建SVC模型
model = SVC(kernel='rbf', gamma=20, decision_function_shape='ovo')
# 拟合模型
model.fit(X_train, y_train)
# 预测
y_pred_train = model.predict(X_train)
# 计算训练集精度
accu_train = accuracy_score(y_train, y_pred_train)
print(f'accu of model for train set is {accu_train:.2f}')
y_pred_test = model.predict(X_test)
# 计算测试集精度
accu_test = accuracy_score(y_test, y_pred_test)
print(f'accu of model for test set is {accu_test:.2f}')
原文地址: https://www.cveoy.top/t/topic/mX04 著作权归作者所有。请勿转载和采集!