使用scikit-learn中的KNN包实现对鸢尾花数据集或者自定义数据集的的预测。

使用scikit-learn中的KNN包实现对鸢尾花数据集或者自定义数据集的的预测。

python 复制代码
#导入鸢尾花数据集
from sklearn.datasets import load_iris,fetch_20newsgroups
#数据化可视包
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler,StandardScaler
from sklearn.neighbors import KNeighborsClassifier

#获取鸢尾花小规模数据集
iris=load_iris()
# print("鸢尾花的特征值:\n",iris['data'])
# print("鸢尾花的目标值:\n",iris['target'])
# print("鸢尾花的特征的名字:\n",iris['feature_names'])
# print("鸢尾花的目标值的名字:\n",iris['target_names'])
# print("鸢尾花的描述:\n",iris['DESCR'])
#数据可视化----只是为了数据可视化
iris_data1=pd.DataFrame(data=iris['data'],columns=['Sepal_Length', 'Sepal_Width', 'Petal_Length', 'Petal_Width'])
print("")
#填充目标值
iris_data1['target']=iris['target']
#画图展示
def plot_iris(data,col1,col2):
    # x y  x轴和y轴数据索引值
    # data 具体的数据
    # hue 目标值,可以通过不同的目标显示不同的颜色
    # fit_reg 是否进行线性拟合
    sns.lmplot(x=col1, y=col2, data=data, hue='target', fit_reg=False)
    plt.title(r'data show')
    plt.xlabel(col1)
    plt.ylabel(col2)
    plt.show()

plot_iris(iris_data1,'Sepal_Length','Petal_Width')
#数据集的划分
# 机器学习一般的数据集划分分为两部分
#     1. 训练数据:用于训练,构建模型
#     2. 测试数据:在模型校验时使用,用于评估模型是否有效
# 划分比例:
#     1. 训练集 : 70%    80%    75%
#     2. 测试集 : 30%    20%    25%
#数据集的划分
x_train,x_test,y_train,y_test= train_test_split(iris['data'],iris['target'],test_size=0.2,random_state=42)
print("训练集的特征值是 : \n", x_train)
print("测试集的特征值是 : \n", x_test)
print("训练集的目标值是 : \n", y_train)
print("测试集的目标值是 : \n", y_test)

print("训练集的特征值形状 : \n", x_train.shape)
print("测试集的特征值形状 : \n", x_test.shape)
print("训练集的目标值形状 : \n", y_train.shape)
print("测试集的目标值形状 : \n", y_test.shape)

#特征数据预处理API

# 1.实例化
transfer=MinMaxScaler(feature_range=(0, 1))
#2.进行转换,调用fit_transform
ret_maxmin_data=transfer.fit_transform(x_train)
ret_maxmin_data=transfer.fit_transform(x_test)
#特征工程-特征预处理 规划为均值0附近标准差差为1
transfer1=StandardScaler()
ret_train_data=transfer1.fit_transform(x_train)
ret_test_data=transfer1.fit_transform(x_test)
#机器学习 构建KNN
#step1构建KNN并实例化
n_neighbors_num=5
knn_model=KNeighborsClassifier(n_neighbors=n_neighbors_num)
#step2模型训练 输入训练集和训练集标签
knn_model.fit(ret_train_data,y_train)

#step3 评估模型
#使用训练好的模型进行预测
y_pre=knn_model.predict(ret_test_data)
print('预测值是\n',y_pre)
print("预测值和真实值的对比是:\n",y_pre==y_test)
#准确率计算,注意如果是归一化后的数据就得用归一化后的数据进行预测计算准确率,不然效果很差
score=knn_model.score(ret_test_data,y_test)
print(f'准确率是:{score}')
相关推荐
代码山河4 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
在世修行4 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside
梯度下降者5 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
“AI国潮设计-小江”6 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
benchmark_cc7 小时前
用 Python 拉 A 股全市场实时快照:Notebook 请求、结果校验与易错点
python·数据分析·pandas·量化交易·股票数据·quantdash
伞伞悦读8 小时前
【第70期】Adam二阶矩不是方差:偏差校正、动量与AdamW完整实验
python
外收内放8 小时前
Python基础语法练习题(73)
java·前端·python
锋行天下8 小时前
Langgraph HITL 中断运行,用户输入后输出打字效果
人工智能·python
时早玖沐9 小时前
给 AstrBot 写一个天气推送插件:12 次提交、6 个坑
python·开源·ai编程
触底反弹9 小时前
🚀 FastAPI 五大重难点深度剖析:从 500 报错到彻底搞懂 Depends、Pydantic 与 SQLAlchemy
python·fastapi