数据挖掘——用sklearn中KNN对UCI Iris.data分类

一、问题背景及数据下载部署

1、问题背景

https://archive.ics.uci.edu/ml/datasets/Iris

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR2FydmV5UHl0aG9u,size_20,color_FFFFFF,t_70,g_se,x_16

 根据根据Iris花的4个特征萼片长度、萼片宽度、花瓣长度、花瓣宽度对Iris花分类。已知包括三种类别(Iris-setosa、Iris-versicolor、Iris Virginica)的Iris花的150条记录。

对采集到的数据进行训练,如果再给你一条Iris花的记录,预测其所属类别,完成分类。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR2FydmV5UHl0aG9u,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR2FydmV5UHl0aG9u,size_20,color_FFFFFF,t_70,g_se,x_16 下载完成后,修改后缀名为csv. 

c9c53975bc3842fb91b3ba1a4efe5b01.png

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR2FydmV5UHl0aG9u,size_15,color_FFFFFF,t_70,g_se,x_16

 将该数据上传到Jupiter Notebook.

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR2FydmV5UHl0aG9u,size_20,color_FFFFFF,t_70,g_se,x_16

打开是这样的:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR2FydmV5UHl0aG9u,size_7,color_FFFFFF,t_70,g_se,x_16

 二、模型

sklearn简化了由算法部署到代码的过程,但我们还是有必要学习以下,参考:

机器学习入门 —— 超级详细的KNN算法学习笔记、KNN算法的三要素、KNN算法的优缺点_SongyangJi-CSDN博客_knn算法三要素文章目录KNN(K nearest neighbors)K值的选择和影响k取值偏小k取值偏大样本点距离的计算方式闵可夫斯基距离曼哈顿距离欧几里得距离切比雪夫距离余弦距离决策函数的选择用于分类的多票表决法用于回归的平均值法KNN算法的优缺点KNN(K nearest neighbors)简介K近邻 (k-Nearest Neighbors, KNN) 算法是一种分类与回归算法,是机器学习算法中最基础、最简单的算法之一, 1968年由 Cover和 Hart 提出, 应用场景有字符识别、 文本分类、https://blog.csdn.net/qq_44846324/article/details/114270003?utm_source=app&app_version=5.0.1&code=app_1562916241&uLinkId=usr1mkqgl919blen机器学习之KNN最邻近分类算法_pengjunlee的博客-CSDN博客_knn分类KNN算法简介KNN(K-Nearest Neighbor)最邻近分类算法是数据挖掘分类(classification)技术中最简单的算法之一,其指导思想是”近朱者赤,近墨者黑“,即由你的邻居来推断出你的类别。KNN最邻近分类算法的实现原理:为了判断未知样本的类别,以所有已知类别的样本作为参照,计算未知样本与所有已知样本的距离,从中选取与未知样本距离最近的K个已知样本,根据少数服从多数...https://blog.csdn.net/pengjunlee/article/details/82713047?utm_source=app&app_version=5.0.1&code=app_1562916241&uLinkId=usr1mkqgl919blen

三、问题解决

若无sklearn,cmd中输入如下命令安装sklearn

pip install sklearn

 1.导入包

from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

import numpy as np

import pandas as pd

2. 数据导入与预处理 

cols_name = ['SepalLen','SepalWid','PetalLen','PetalWid','class']#增加表头
df = pd.read_csv('iris.csv',names=cols_name)
df['class'] = pd.Categorical(df['class'])
df['class'] = df['class'].cat.codes#将三种花的分类名称转换为数据0,1,2
#print(df)
#df.head()#展示前几条记录
iris_X= df.iloc[:,0:4].values#分割 DataFrame
iris_y = (df['class']).values
x_train, x_test, y_train, y_test = train_test_split(iris_X, iris_y, test_size=0.2)#80%用于训练,20%用于后续测试评价

3.KNN算法套用

distance代表由距离确定的权重不一样。

clf = KNeighborsClassifier(n_neighbors = 3 , weights = 'distance')
clf.fit(x_train,y_train)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR2FydmV5UHl0aG9u,size_12,color_FFFFFF,t_70,g_se,x_16

 4.测试与评价

y_pred = clf.predict(x_test)
print(accuracy_score(y_pred, y_test))  # 计算准确率

data=[[4.75,3.8,1.43,0.4]] #预测数据分类
print(clf.predict(data))

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR2FydmV5UHl0aG9u,size_14,color_FFFFFF,t_70,g_se,x_16

 四、总结

本文适合新手入门机器学习的分类算法。另外,在数据处理中本文对待也比较简单,仅仅是将文本数据用0,1,2代替。其实,其他数据也可以考虑无量纲化。总之,本文的漏洞还是很多的,但是适合新手熟悉数据的导入(pd,np的运用),以及体会分类的概念与流程。

Python数据预处理:彻底理解标准化和归一化_简说Python的博客-CSDN博客文章来源:机器学习算法与Python实战作者:为胡同学点赞数据预处理数据中不同特征的量纲可能不一致,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果,因此,需要对数据按照一定比...https://blog.csdn.net/qq_39241986/article/details/107031900?ops_request_misc=%7B%22request_id%22%3A%22164614376016780271931846%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=164614376016780271931846&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-2-107031900.pc_search_insert_es_download&utm_term=Python%E5%BD%92%E4%B8%80%E5%8C%96&spm=1018.2226.3001.4187

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GarveyPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值