在jupyter环境下,使用Logistic回归和线性SVM对鸢尾花数据集 进行分类,要求给出代码和最高的结果
时间: 2024-09-28 16:05:58 浏览: 37
基于sklearn的logistic回归对于鸢尾花的机器学习分类实践
5星 · 资源好评率100%
在Jupyter环境中,我们可以使用Python的Scikit-learn库来进行Iris数据集的Logistic回归和线性支持向量机(SVM)分类。以下是步骤和代码示例:
首先,确保已经安装了`scikit-learn`, `numpy` 和 `pandas`库。如果没有,可以使用下面的命令安装:
```bash
pip install scikit-learn numpy pandas
```
然后,你可以使用以下代码加载数据,训练模型并评估性能:
```python
# 导入所需的库
import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.svm import LinearSVC
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载Iris数据集
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)
# 初始化Logistic Regression和Linear SVC
logreg = LogisticRegression(max_iter=500) # 使用最大迭代次数防止CG解法下溢出
svc = LinearSVC()
# 训练模型
logreg.fit(X_train, y_train)
svc.fit(X_train, y_train)
# 预测
y_pred_logreg = logreg.predict(X_test)
y_pred_svc = svc.predict(X_test)
# 评估准确率
accuracy_logreg = accuracy_score(y_test, y_pred_logreg)
accuracy_svc = accuracy_score(y_test, y_pred_svc)
print(f"Logistic Regression Accuracy: {accuracy_logreg * 100:.2f}%")
print(f"Linear SVM Accuracy: {accuracy_svc * 100:.2f}%")
# 提供最高结果
highest_accuracy = max(accuracy_logreg, accuracy_svc)
best_model = "Best model with highest accuracy is: " + ("Logistic Regression" if accuracy_logreg == highest_accuracy else "Linear SVM")
print(best_model)
```
运行此代码后,你会得到每个模型的准确率,并确定哪一个是最高精度的那个。
阅读全文