1.Iris数据集介绍
Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都有 4 项特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,可以通过这4个特征预测鸢尾花卉属于(iris-setosa, iris-versicolour, iris-virginica)中的哪一品种。
2.实验总要求:
利用scikit-learn库中的KNeighborsClassifier分类算法,对iris数据的 4 项特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度进行分类测试,并给出准确率。
实验过程:
1.利用pandas将iris数据导入到dataframe
import pandas as pd
import numpy as np
dataframe = pd.read_csv("iris.data.txt",
header=None,names=["花萼长度","花萼宽度","花瓣长度","花瓣宽度","花类品质"])
Dataframe
2.对iris数据集4 项特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度数据归一化处理
import numpy as np max_min_scaler = lambda x : (x-np.min(x))/(np.max(x)-np.min(x)) scaler_data = dataframe[['花萼长度','花萼宽度','花瓣长度','花瓣宽度']].apply(max_min_scaler) scaler_data['花类品质'] = dataframe['花类品质'] scaler_data.head()
3. 使用numpy或dataframe的切片将数据切分为训练集和测试集,第一类0:40,第二类50-90,第三类100-140为训练集,其余数据为测试集
train_data1 = scaler_data.iloc[0:40] train_data2 = scaler_data.iloc[50:90] train_data3 = scaler_data.iloc[100:140] train_data=pd.concat([train_data1,train_data2,train_data3],ignore_index=True) test_data1 = scaler_data.iloc[40:50] test_data2 = scaler_data.iloc[90:100] test_data3 = scaler_data.iloc[140:150] test_data=pd.concat([test_data1,test_data2,test_data3],ignore_index=True) print(train_data,test_data)
4.使用KNeighborsClassifier分类算法预测iris测试集
X = train_data[['花萼长度','花萼宽度','花瓣长度','花瓣宽度']] y = train_data[["花类品质"]] from sklearn.neighbors import KNeighborsClassifier neigh = KNeighborsClassifier(n_neighbors=10) neigh.fit(X, y) y_predict = neigh.predict(test_data[['花萼长度','花萼宽度','花瓣长度','花瓣宽度']]) y_predict
5.准确率统计:将预测的类别信息与数据集的species类别进行比对,并分析分类是否有效
from sklearn.metrics import accuracy_score accuracy_score(y_predict, test_data[["花类品质"]])
创作不易,认为有帮助的同学可以点个赞!!!



