1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > KNN算法预测iris数据集

KNN算法预测iris数据集

时间:2022-09-17 19:03:11

相关推荐

KNN算法预测iris数据集

KNN算法预测iris数据集

1.数据集介绍

鸢尾花灰Iris数据集中有150个样本,每个样本有4个特征,1个标签。其中,鸢尾花种类可取0、1、2,分别代表山鸢尾setosa、变色鸢尾versicolor、维吉尼亚鸢尾virginica。

2.代码解析

首先导入iris数据集,在sklearn库里面已经有了。iris.data()是特征数据,iris.target()是标签数据。根据这些我们绘制一个皮尔森相关性系数矩阵。公式如下:

我们只需要关注第一个等号后面的公式。两个变量X,Y的皮尔森相关性系数等于他们之间的协方差cov(X,Y)除以他们各自标准差的乘积。这里我不展开具体描述,详细内容可见/s/blog_69e75efd0102wmd2.html。至于协方差和方差的计算我简要说一下。

方差:方差是各个数据与平均数之差的平方的平均数。在概率论和数理统计中,方差(英文Variance)用来度量随机变量和其数学期望(即均值)之间的偏离程度。在许多实际问题中,研究随机变量和均值之间的偏离程度有着很重要的意义。标准差:方差开根号协方差:在概率论和统计学中,协方差用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。如果有X,Y两个变量,每个时刻的“X值与其均值之差”乘以“Y值与其均值之差”得到一个乘积,再对这每时刻的乘积求和并求出均值,即为协方差。

言归正传,我们利用Python的一些库绘制皮尔森相关性系数矩阵。

from sklearn.datasets import load_irisimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as snsiris = load_iris()all_data = np.insert(iris.data,4,values=iris.target,axis=1)mcorr = pd.DataFrame(all_data).corr(method = 'spearman' )#构造与mcorr同维矩阵 为bool型mask = np.zeros_like(mcorr,dtype = np.bool)# 角分线右侧为True# mask[np.triu_indices_from(mask)] = True#绘制图像plt.figure(figsize=(12,12))#返回matplotlib colormap对象cmap = sns.diverging_palette(220,10,as_cmap=True)#热力图g = sns.heatmap(mcorr,mask=mask,cmap=cmap,square=True,annot=True, fmt = '0.2f')plt.show()

结果如下:

我们把数据分为两部分,80%是训练集,20%是测试集,然后设置K值做预测

#80%训练集,20%测试集x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.20,random_state=33)#设置K值knc = KNN(n_neighbors =3,)knc.fit(x_train,y_train)y_predict = knc.predict(x_test)print('KNN准确率',knc.score(x_test,y_test))

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。