使用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}')
相关推荐
纠结哥_Shrek8 分钟前
PyTorch 与 Python 版本对应关系
人工智能·pytorch·python
Lostgreen34 分钟前
线性回归简介:从理论到应用
python·机器学习·回归·线性回归
游王子1 小时前
Python NumPy(7):连接数组、分割数组、数组元素的添加与删除
开发语言·python·numpy
SteveKenny3 小时前
Python 梯度下降法(四):Adadelta Optimize
开发语言·python·深度学习·机器学习·numpy·matplotlib
JovaZou4 小时前
[Python学习日记-80] 用 socket 实现文件传输功能(上传下载)
开发语言·网络·python·websocket·学习
Luzem03195 小时前
使用scikit-learn中的线性回归包对自定义数据集进行拟合
python·线性回归·scikit-learn
〖是♂我〗5 小时前
使用scikit-learn中的KNN包实现对鸢尾花数据集或者自定义数据集的的预测
机器学习·分类·scikit-learn
弥树子11 小时前
使用 Python 和 scikit-learn 实现 KNN 分类:以鸢尾花数据集为例
python·分类·scikit-learn
Ronin-Lotus11 小时前
程序代码篇---Python随机数
前端·python·学习·随机数