使用Sklearn中的SVM相关API函数对任选一个数据集合(鸢尾花数据集,癌症数据集, 手写字体识别等)进行分类,并与其他模型(逻辑回归,KNN,朴素贝叶斯) 进行比较;
时间: 2024-10-09 10:13:30 浏览: 76
SVM对鸢尾花(Iris)数据集进行分类的Python代码
在Python中,我们可以使用Scikit-Learn库中的支持向量机(SVM,Support Vector Machine)进行分类任务。这里以鸢尾花数据集为例进行说明。鸢尾花数据集是一个经典的机器学习示例,包含了三种不同种类的鸢尾花的特征。
首先,你需要导入所需的库并加载数据集:
```python
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
# 加载鸢尾花数据
iris = datasets.load_iris()
X = iris.data
y = iris.target
```
接下来,我们将数据分为训练集和测试集:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
```
对数据进行预处理,通常我们会标准化数值特征:
```python
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
```
然后分别训练SVM、逻辑回归、KNN和朴素贝叶斯模型:
```python
models = {
'SVC': SVC(gamma='scale'),
'Logistic Regression': LogisticRegression(),
'KNN': KNeighborsClassifier(n_neighbors=3),
'Naive Bayes': GaussianNB()
}
for name, model in models.items():
model.fit(X_train, y_train)
predictions = model.predict(X_test)
print(f"{name} 的准确率: {accuracy_score(y_test, predictions)}")
```
最后,你可以对比各个模型在测试集上的准确率,选择性能最好的模型作为分类器。这只是一个基本的例子,实际应用中可能需要调整超参数或者尝试更复杂的模型来进行优化。
阅读全文