k近邻算法预测鸢尾花品种

鸢尾花品种识别:Python实现K近邻算法

这学期数据挖掘和图像处理都涉及了机器学习,无奈上课走神,只能自学一哈了~

简单实例–k近邻算法预测鸢尾花品种

1.这个例子在做什么事

已有的鸢尾花三个品种(setosa、versicolor,virginica)的大量特征数据(花萼长度,宽度…),现在新发现野外有一个鸢尾花,测出这株花的特征数据,让python根据已有数据来预测这株花是三个品种中的哪一个

2.用什么算法来预测–k近邻法

原理很简单,在已有数据中找到和新发现的鸢尾花特征最相似的一株鸢尾花a,则a是什么品种算法就认为新花是什么品种

3.大致思路

鸢尾花的已知数据直接用load_iris()函数即可获取,不需要自己下载,将这些数据分为训练集和测试集,顾名思义一部分让机器训练,另一部分测试训练效果
我们可以看一看load_iris()
第一部分是data,也就是特征数值
在这里插入图片描述
第二部分是target,就是对应的品种,用0,1,2表示
在这里插入图片描述

4.源代码

环境:jupyter notebook(pycharm需要修改)
可能遇到的错误:No Module named ‘mglearn’,在anaconda文件夹打开anaconda promt.exe,输入 pip install mglearn,回车

from sklearn.datasets import load_iris
iris_dataset = load_iris()


from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
        iris_dataset['data'], iris_dataset['target'], random_state=0)

import numpy as np
import pandas as pd
import mglearn
from pandas import DataFrame
iris_dataframe = pd.DataFrame(X_train, columns=iris_dataset.feature_names)

from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit
### 实现 Scikit-learn K近邻算法鸢尾花种类分类的教程 #### 1. 导入所需的库 在开始之前,确保安装了必要的库,如 `scikit-learn` 和 `numpy`。以下是一个简单的导入示例: ```python from sklearn.neighbors import KNeighborsClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score import numpy as np ``` #### 2. 加载鸢尾花数据集 使用 `load_iris()` 函数加载鸢尾花数据集,该数据集包含了花的特征和对应的类别。 ```python iris = load_iris() X = iris.data # 特征(花瓣和花萼的尺寸) y = iris.target # 目标(花的品种) ``` #### 3. 划分训练集和测试集 使用 `train_test_split()` 函数将数据集划分为训练集和测试集。通常情况下,测试集占数据集的 30%。 ```python X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, random_state=42 ) ``` #### 4. 创建 KNN 分类器 选择一个合适的 K 值,创建 KNN 分类器。例如,选择 K=5。 ```python knn = KNeighborsClassifier(n_neighbors=5) ``` #### 5. 训练模型 使用训练集数据训练 KNN 模型。 ```python knn.fit(X_train, y_train) ``` #### 6. 预测测试集 使用训练好的模型对测试集进行预测。 ```python y_pred = knn.predict(X_test) ``` #### 7. 评估模型准确率 通过 `accuracy_score()` 函数评估模型在测试集上的准确率。 ```python accuracy = accuracy_score(y_test, y_pred) print(f"模型准确率: {accuracy:.2%}") ``` #### 8. 预测新样本 输入新的花样本特征,使用训练好的模型进行预测。 ```python new_sample = [[5.1, 3.5, 1.4, 0.2]] # 新花样本的特征 prediction = knn.predict(new_sample) print(f"预测类别: {iris.target_names[prediction][0]}") # 输出花品种名称 ``` #### 9. 选择合适的 K 值 K 值的选择对模型性能有重要影响。可以通过实验对比不同 K 值的效果。 ```python def experiment_KNN(k=5): model = KNeighborsClassifier(n_neighbors=k) model.fit(X_train, y_train) train_score = model.score(X_train, y_train) test_score = model.score(X_test, y_test) print(f"KNN experiment with 'k={k}'") print(f'\t trainScore:{train_score} \n\t testScore:{test_score}\n') y_test_predict = model.predict(X_test) # 测试不同的 K 值 for k in [1, 3, 5, 7, 9, 20, 30]: experiment_KNN(k) ``` #### 10. 可视化分类结果 可以使用 `matplotlib` 或其他可视化工具绘制分类结果,帮助更直观地理解模型的表现。 ```python import matplotlib.pyplot as plt def plotSamplesPoints(X, y): plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis', edgecolor='k', s=20) plt.xlabel('Feature 1') plt.ylabel('Feature 2') plt.title('KNN Classification Results') plt.show() # 假设只使用两个特征进行可视化 plotSamplesPoints(X_test[:, [1, 3]], y_test_predict) ``` ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值