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

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

1、问题背景

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

数据挖掘——用sklearn中KNN对UCI Iris.data分类_第1张图片

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

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

数据挖掘——用sklearn中KNN对UCI Iris.data分类_第2张图片

数据挖掘——用sklearn中KNN对UCI Iris.data分类_第3张图片 下载完成后,修改后缀名为csv. 

c9c53975bc3842fb91b3ba1a4efe5b01.png

数据挖掘——用sklearn中KNN对UCI Iris.data分类_第4张图片

 将该数据上传到Jupiter Notebook.

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

打开是这样的:

数据挖掘——用sklearn中KNN对UCI Iris.data分类_第5张图片

 二、模型

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

你可能感兴趣的:(数据挖掘,分类,机器学习)