```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. 对于结果的分析,不仅关注准确率,还可以查看混淆矩阵等指标获取更全面的信息。 [2024-12-17 22:12:22 | AI写代码神器 | 827点数解答]