You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python生成指定数据以输入SVM模型

嵌套高斯+抛物线类数据生成与SVM实现方案

1. 数据生成代码

先搞定两类数据的生成,嵌套高斯用两个不同均值/方差的正态分布,抛物线类加噪声模拟真实场景:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler

# 生成嵌套高斯数据(两类)
np.random.seed(42)
# 内圈高斯
inner_gauss = np.random.normal(loc=[0, 0], scale=0.5, size=(200, 2))
inner_labels = np.zeros(200)  # 标签0
# 外圈高斯
outer_gauss = np.random.normal(loc=[0, 0], scale=2, size=(200, 2))
outer_labels = np.ones(200)  # 标签1

# 生成抛物线类数据(红色类,标签2)
x_parab = np.random.uniform(low=-2.5, high=2.5, size=200)
y_parab = x_parab ** 2 + np.random.normal(loc=0, scale=0.3, size=200)
parab_data = np.column_stack((x_parab, y_parab))
parab_labels = np.full(200, 2)  # 标签2

2. 数据合并与预处理

合并时要确保数据维度一致,标签长度和样本数匹配,同时标准化数据(SVM对特征尺度敏感):

# 合并所有数据和标签
X = np.vstack((inner_gauss, outer_gauss, parab_data))
y = np.hstack((inner_labels, outer_labels, parab_labels))

# 标准化特征(SVM必备步骤)
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

3. SVM训练与可视化

用RBF核处理非线性分类问题,训练后可视化决策边界:

# 初始化SVM分类器
svm_clf = SVC(kernel='rbf', C=10, gamma=0.5, random_state=42)
svm_clf.fit(X_scaled, y)

# 可视化数据和决策边界
plt.figure(figsize=(10, 8))

# 绘制原始数据
plt.scatter(inner_gauss[:, 0], inner_gauss[:, 1], c='blue', label='Inner Gauss')
plt.scatter(outer_gauss[:, 0], outer_gauss[:, 1], c='green', label='Outer Gauss')
plt.scatter(parab_data[:, 0], parab_data[:, 1], c='red', label='Parabola')

# 生成网格点绘制决策边界
xx, yy = np.meshgrid(np.linspace(-3, 3, 300), np.linspace(-1, 7, 300))
Z = svm_clf.predict(scaler.transform(np.column_stack((xx.ravel(), yy.ravel()))))
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.3, cmap='coolwarm')

plt.legend()
plt.xlabel('X1')
plt.ylabel('X2')
plt.title('Nested Gauss + Parabola Data with SVM Decision Boundary')
plt.show()

常见问题排查

  • 维度不匹配:合并前检查每个数据集的形状,确保都是(n,2)的二维数组,避免用一维数组直接合并。
  • 标签长度不一致:确认每个类的样本数和标签数组长度一致,np.hstack会自动检查长度,不匹配会报错。
  • 分类效果差:调整SVM的C(正则化强度)和gamma(RBF核带宽)参数,C越大容错越低,gamma越大局部拟合越强。
  • 特征未标准化:SVM基于距离计算,特征尺度差异大会导致模型偏向尺度大的特征,必须先标准化。

内容的提问来源于stack exchange,提问作者Hrant Baloyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:45:07