通过python库获取鸢尾花数据集并生成随机样本或者自定义样本,基于KNN模型给出样本类别预测结果。
时间: 2024-11-03 13:15:04 浏览: 22
在Python中,你可以使用sklearn库来获取鸢尾花(Iris)数据集,这是一个经典的机器学习数据集,包含三种不同种类的鸢尾花测量值。首先,你需要安装必要的库,如`pandas`用于数据处理,`matplotlib`用于可视化,以及`sklearn`用于数据预处理、模型训练和分类。
以下是获取数据集并进行KNN(K-Nearest Neighbors)分类的一个简单步骤:
1. **导入所需库**:
```python
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
```
2. **加载鸢尾花数据集**:
```python
iris = datasets.load_iris()
```
3. **查看数据和目标变量**:
```python
print(iris.data.shape) # (150, 4) - 每一行是一个样本,共有4个特征
print(iris.target_names) # ['setosa', 'versicolor', 'virginica'] - 类别名称
```
4. **数据预处理**:
- 分割数据集(通常80%的数据用于训练,20%用于测试)
- 可选:标准化数据,使得每个特征都在相似的尺度上,有助于KNN算法性能
```python
X_train, X_test, y_train, y_test = train_test_split(
iris.data, iris.target, test_size=0.2, random_state=42)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
```
5. **创建KNN模型并训练**:
```python
knn = KNeighborsClassifier(n_neighbors=3) # 选择一个K值
knn.fit(X_train_scaled, y_train)
```
6. **生成随机样本或自定义样本**:
- 对于随机样本,可以使用`numpy`库生成随机数值然后转换成鸢尾花数据集的格式
- 对于自定义样本,直接创建一个具有四个特征值的列表
7. **预测新样本的类别**:
```python
# 预测新的随机样本
random_sample = np.random.rand(4) * (np.max(X_test_scaled, axis=0) - np.min(X_test_scaled, axis=0)) + np.min(X_test_scaled, axis=0)
predicted_class = knn.predict([random_sample])
print(f"预测的类别:{iris.target_names[predicted_class]}")
```
阅读全文