使用Logistic回归和线性SVM对鸢尾花数据集进行分类,要求给出代码和最高的结果。
时间: 2024-09-29 21:04:39 浏览: 44
基于jupyter notebook的python编程—–机器学习中的线性分类器及相应判定方法(鸢尾花数据集的分类可视化)
5星 · 资源好评率100%
在Python中,我们可以使用sklearn库中的`LogisticRegression`和`SVC`(支持向量机)来对鸢尾花(Iris)数据集进行分类。以下是使用这两个模型的一个简单示例:
首先,确保已经安装了所需的库,如果还没有,可以使用pip安装:
```bash
pip install scikit-learn pandas numpy
```
然后,加载数据并进行预处理(这里假设已有一个名为`iris`的pandas DataFrame,包含特征和标签):
```python
from sklearn import datasets
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
接下来,我们分别训练两个模型并计算它们在测试集上的准确率:
```python
# Logistic Regression
logreg = LogisticRegression()
logreg.fit(X_train, y_train)
y_pred_logreg = logreg.predict(X_test)
# Linear SVM
svm = SVC(kernel='linear') # 线性核是最简单的,也适合于这个问题
svm.fit(X_train, y_train)
y_pred_svm = svm.predict(X_test)
# 计算准确率
accuracy_logreg = accuracy_score(y_test, y_pred_logreg)
accuracy_svm = accuracy_score(y_test, y_pred_svm)
print(f"Logistic Regression Accuracy: {accuracy_logreg * 100:.2f}%")
print(f"SVM (Linear Kernel) Accuracy: {accuracy_svm * 100:.2f}%")
```
最后,通常线性SVM可能会有较高的准确率,因为鸢尾花数据集是线性可分的。不过这取决于具体的数据分布和参数选择。最高结果将取决于运行的具体情况。
阅读全文