使用Sklearn的make_circles()函数生成一个环形数据集,并使用支持向量机的高斯径向基核函数对该数据集进行分类。
时间: 2024-11-27 13:23:55 浏览: 62
在Python的scikit-learn库中,`make_circles()`函数用于生成二维数据集中包含两个圆形分布的数据,通常用于演示分类算法的效果,因为它们呈现出非线性的边界。首先,你需要导入所需的库并加载数据:
```python
from sklearn.datasets import make_circles
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
# 生成环形数据
X, y = make_circles(n_samples=500, noise=0.1, factor=0.8)
# 数据预处理 - 标准化数据
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
# 初始化支持向量机模型,选择高斯径向基核函数(RBF kernel)
svm_classifier = SVC(kernel='rbf', gamma='scale') # 'scale' 参数让gamma自动适应特征缩放后的范围
# 训练模型
svm_classifier.fit(X_train, y_train)
# 预测
y_pred = svm_classifier.predict(X_test)
# 模型评估
accuracy = svm_classifier.score(X_test, y_test)
print("Accuracy:", accuracy)
```
在这个例子中,我们使用了SVM的高斯径向基核函数(RBF kernel),它对于非线性数据有很好的拟合能力,能捕捉到数据之间的复杂关系。然后对生成的环形数据进行训练和预测,最后计算模型的准确率。
阅读全文