import numpy as np import pandas as pd from sklearn.svm import SVC from sklearn.datasets import load_iris data = load_iris() X = data['data'] y = data['target'] X = X[y != 2, 0:2] y = y[y != 2] X -= np.mean(X, axis=0) X /= np.std(X, axis=0, ddof=1) m = len(X) data = int(0.8 * m) X_train, X_test = np.split(X, [data]) y_train, y_test = np.split(y, [data]) model_svm = SVC(C=1.0, kernel='linear') model_svm.fit(X_train, y_train) Accuracy = model_svm.score(X_test, y_test) print('Linear Accuracy = ', Accuracy) X_test_h = model_svm.predict(X_test) 解释
时间: 2024-04-17 18:28:10 浏览: 171
SVM.zip_SVM Iris分类_UCI SVM_iris_svm预测_uci svm
这段代码是一个简单的支持向量机(SVM)分类器的示例。它使用了scikit-learn库中的SVC类来构建一个线性核的SVM模型,并使用iris数据集进行训练和测试。
首先,导入了必要的库,包括numpy、pandas、sklearn.svm和sklearn.datasets。然后,通过调用load_iris函数加载iris数据集,并将数据集分为特征向量X和目标向量y。
接下来,通过过滤掉目标向量中的类别2,将数据集限定为两个类别,并选择了前两个特征作为输入特征(X)。
然后,对输入特征进行标准化处理,通过减去均值并除以标准差来使所有特征具有相同的尺度。
接着,计算数据集的长度m,并将80%的数据用于训练,20%用于测试,通过np.split函数将数据集分割为训练集和测试集,并分割相应的目标向量。
然后,创建一个SVC对象model_svm,设置C参数为1.0并选择线性核函数。
接下来,使用训练集拟合模型,即调用model_svm的fit方法,并计算模型在测试集上的准确率,通过调用model_svm的score方法。
最后,使用训练好的模型对测试集进行预测,通过调用model_svm的predict方法,并将预测结果存储在变量X_test_h中。
你可以通过打印Accuracy来查看模型在测试集上的准确率。
阅读全文