使用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}')
相关推荐
QC·Rex7 分钟前
AI Agent 任务规划实战:从 ReAct 到 Plan-and-Solve 的完整指南
人工智能·python·react
kcuwu.1 小时前
Python面向对象:封装、继承、多态
开发语言·python
YuanDaima20481 小时前
LangChain基础配置与对话模型实战
人工智能·python·langchain·大模型·智能体·langgraph
河西石头1 小时前
分享python项目与开源python项目中的效率法宝--requirements文件的使用
开发语言·python·requirements文件·批量安装python依赖·python虚拟环境配置
不懒不懒1 小时前
【卷积神经网络作业实现人脸的关键点定位功能】
开发语言·python
Bert.Cai1 小时前
Python集合简介
开发语言·python
tryCbest1 小时前
Java和Python开发项目部署简介
java·开发语言·python
ZTLJQ1 小时前
任务调度的艺术:Python分布式任务系统完全解析
开发语言·分布式·python
MinterFusion2 小时前
在数据可视化中需要考虑的人类视觉特性
信息可视化·ue
敏编程2 小时前
一天一个Python库:isodate - 处理 ISO 8601 日期时间格式
python