Sklearn支持向量机三种核函数实现葡萄酒分类:支持向量个数、归一化效果对比及性能深度探索
```python from sklearn import svm from sklearn.datasets import load_wine from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.metrics import accuracy_score def wine_classification(): # 加载数据 wine = load_wine() X = wine.data y = wine.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 线性核 linear_svm = svm.SVC(kernel='linear') linear_svm.fit(X_train, y_train) y_pred_linear = linear_svm.predict(X_test) num_linear_sv = linear_svm.n_support_ accuracy_linear = accuracy_score(y_test, y_pred_linear) print("线性核支持向量个数:", num_linear_sv) print("线性核准确率:", accuracy_linear) # RBF 核 rbf_svm = svm.SVC(kernel='rbf') rbf_svm.fit(X_train, y_train) y_pred_rbf = rbf_svm.predict(X_test) num_rbf_sv = rbf_svm.n_support_ accuracy_rbf = accuracy_score(y_test, y_pred_rbf) print("RBF 核支持向量个数:", num_rbf_sv) print("RBF 核准确率:", accuracy_rbf) # 多项式核 poly_svm = svm.SVC(kernel='poly') poly_svm.fit(X_train, y_train) y_pred_poly = poly_svm.predict(X_test) num_poly_sv = poly_svm.n_support_ accuracy_poly = accuracy_score(y_test, y_pred_poly) print("多项式核支持向量个数:", num_poly_sv) print("多项式核准确率:", accuracy_poly) # 不使用数据归一化的情况 linear_svm_no_norm = svm.SVC(kernel='linear') linear_svm_no_norm.fit(X_train, y_train) y_pred_linear_no_norm = linear_svm_no_norm.predict(X_test) accuracy_linear_no_norm = accuracy_score(y_test, y_pred_linear_no_norm) print("不使用归一化时线性核准确率:", accuracy_linear_no_norm) rbf_svm_no_norm = svm.SVC(kernel='rbf') rbf_svm_no_norm.fit(X_train, y_train) y_pred_rbf_no_norm = rbf_svm_no_norm.predict(X_test) accuracy_rbf_no_norm = accuracy_score(y_test, y_pred_rbf_no_norm) print("不使用归一化时 RBF 核准确率:", accuracy_rbf_no_norm) poly_svm_no_norm = svm.SVC(kernel='poly') poly_svm_no_norm.fit(X_train, y_train) y_pred_poly_no_norm = poly_svm_no_norm.predict(X_test) accuracy_poly_no_norm = accuracy_score(y_test, y_pred_poly_no_norm) print("不使用归一化时多项式核准确率:", accuracy_poly_no_norm) wine_classification() ``` 以下是 3 点额外需要注意的逻辑点: 1. 可以尝试调整不同核函数的参数,如 `C` 值等,观察对分类效果的影响。 2. 考虑使用交叉验证来更可靠地评估模型性能。 3. 对于结果的分析,不仅关注准确率,还可以查看混淆矩阵等指标获取更全面的信息。 ######[AI写代码神器 | 827点数解答 | 2024-12-17 22:12:22]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- 用 NumPy 与 Scikit-learn 实现线性回归:模拟数据、训练模型、评估与可视化全流程(阿里通义 | 651点数解答 | 2025-06-12 13:18:59)122
- Python代码实现:用线性回归模型根据年龄、体重和血压预测胆固醇水平(阿里通义 | 404点数解答 | 2025-06-29 17:53:11)116
- C 语言实现链表操作:创建、输出、删除及插入功能详解(字节豆包 | 534点数解答 | 2024-12-09 21:33:48)338
- C语言实现链表创建、输出、删除与插入操作的完整代码及注意要点(字节豆包 | 609点数解答 | 2024-12-18 12:18:21)358
- Python实现简单计算器:避开除零、无效操作符及类型错误陷阱(字节豆包 | 329点数解答 | 2025-12-07 09:29:05)60
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)310
- C++ 实现游戏赢家判断:巧妙找出满足和条件的最大数 (DeepSeek | 506点数解答 | 2025-06-20 16:18:09)113
- 使用归并排序计算无序数列转换为升序的最少交换次数(字节豆包 | 880点数解答 | 2026-03-17 17:46:26)11
- 产品缺陷频数监控:加权卡方与休哈特控制图实战应用(阿里通义 | 925点数解答 | 2025-04-05 17:47:55)226
- Python 实现未完成任务重新定价效果评估:成本增加额与新增任务完成量计算(字节豆包 | 612点数解答 | 2025-05-04 22:31:18)134
- Python 实现:未完成任务重新定价效果评估(成本增加额与新增任务完成量计算)(阿里通义 | 578点数解答 | 2025-05-04 22:36:52)168