数据挖掘——用sklearn中KNN对UCI Iris.data分类
Posted GarveyPython
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据挖掘——用sklearn中KNN对UCI Iris.data分类相关的知识,希望对你有一定的参考价值。
一、问题背景及数据下载部署
1、问题背景
https://archive.ics.uci.edu/ml/datasets/Iris
根据根据Iris花的4个特征萼片长度、萼片宽度、花瓣长度、花瓣宽度对Iris花分类。已知包括三种类别(Iris-setosa、Iris-versicolor、Iris Virginica)的Iris花的150条记录。
对采集到的数据进行训练,如果再给你一条Iris花的记录,预测其所属类别,完成分类。
下载完成后,修改后缀名为csv.
将该数据上传到Jupiter Notebook.
打开是这样的:
二、模型
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)
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))
四、总结
本文适合新手入门机器学习的分类算法。另外,在数据处理中本文对待也比较简单,仅仅是将文本数据用0,1,2代替。其实,其他数据也可以考虑无量纲化。总之,本文的漏洞还是很多的,但是适合新手熟悉数据的导入(pd,np的运用),以及体会分类的概念与流程。
以上是关于数据挖掘——用sklearn中KNN对UCI Iris.data分类的主要内容,如果未能解决你的问题,请参考以下文章