sklearn鸢尾花数据集三维图
时间: 2023-07-13 21:30:32 浏览: 96
要绘制sklearn鸢尾花数据集的三维图,你需要使用matplotlib和mpl_toolkits.mplot3d库。以下是一个简单的例子:
```python
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=y)
ax.set_xlabel('Sepal length')
ax.set_ylabel('Sepal width')
ax.set_zlabel('Petal length')
plt.show()
```
这将绘制一个三维散点图,其中x,y和z轴分别表示萼片长度,萼片宽度和花瓣长度。每个数据点的颜色表示它所属的类别。
相关问题
spyder利用sklearn对鸢尾花数据集进行二分类绘制roc曲线图
Spyder是一个强大的Python集成开发环境,它可以帮助用户轻松地处理数据分析任务,包括使用Scikit-Learn库。Scikit-Learn中的Iris数据集是一个经典的多分类问题,但为了展示ROC曲线,通常我们会将其简化为二分类问题,比如通过阈值分割或者其他策略将原始的三个类别分为两个。
首先,你需要安装必要的库,如果你还没有,可以在Spyder环境中运行:
```python
!pip install scikit-learn matplotlib seaborn
```
接着,我们可以按照以下步骤使用Iris数据集和SVM(支持向量机)进行二分类,并绘制ROC曲线:
1. 导入所需的库:
```python
import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.svm import SVC
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme(style="whitegrid")
```
2. 加载并预处理Iris数据:
```python
iris = datasets.load_iris()
X = iris.data[:, :2] # 取前两个特征进行二维空间的可视化
y = iris.target
# 将分类标签转换为0和1
le = LabelEncoder()
y = le.fit_transform(y)
y_binary = (y != 0).astype(int) # 鸢尾花的第三个类作为正类
```
3. 划分训练集和测试集:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y_binary, test_size=0.3, random_state=42)
```
4. 训练模型并预测概率:
```python
model = SVC(probability=True)
model.fit(X_train, y_train)
y_scores = model.predict_proba(X_test)[:, 1] # 获取正类的概率
```
5. 绘制ROC曲线:
```python
fpr, tpr, _ = roc_curve(y_test, y_scores)
roc_auc = auc(fpr, tpr)
plt.figure(figsize=(8, 6))
plt.plot(fpr, tpr, color='darkorange', lw=2, label=f"ROC curve (area = {roc_auc:.2f})")
plt.plot([0, 1], [0, 1], color='navy', linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic')
plt.legend(loc="lower right")
plt.show()
```
这将显示一个ROC曲线图,其中横轴是假阳性率(FPR),纵轴是真阳性率(TPR)。
针对鸢尾花数据集,使用seaborn库绘制鸢尾花数据集的散点图矩阵
在Python中,我们可以使用seaborn库来绘制鸢尾花(Iris dataset)数据集的散点图矩阵。鸢尾花数据集是一个经典的多变量分类问题数据集,包含了三个特征(例如花瓣长度、花瓣宽度、萼片长度、萼片宽度),通常用作机器学习入门示例。
首先,你需要安装必要的库,如`pandas`, `matplotlib`, 和 `seaborn`。然后,你可以按照以下步骤操作:
```python
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris = load_iris()
data = pd.DataFrame(data=iris.data, columns=iris.feature_names)
target = iris.target
# 创建散点图矩阵
sns.pairplot(data, hue="target", vars=iris.feature_names, diag_kind='kde') # 'kde'用于密度估计,显示每个变量的分布情况
plt.title("Scatter Matrix of Iris Dataset")
plt.show()
```
这将生成一个二维的散点图矩阵,每行和每列代表一个特征,颜色区分不同的鸢尾花类别(0, 1, 或 2)。通过这个矩阵,你可以直观地看到各特征之间的关系以及它们如何帮助我们区分不同的花朵种类。
阅读全文