from sklearn import datasets #导入内置数据集模块
from sklearn.neighbors import KNeighborsClassifier
#导入sklearn.neighbors模块中KNN类
import numpy as np
from sklearn import preprocessing#对数据进行归一化处理`
from sklearn.model_selection import train_test_split
iris=datasets.load_iris() #导入鸢尾花的数据集
iris_x=iris.data
#样本数据150*4二维数据,代表150个样本每个样本4个属性分别
为花瓣和花萼的长、宽
iris_y=iris.target
#长150的以为数组,样本数据的标签
iris_x = preprocessing.scale(iris_x)# 对数据进行归一化处理
iris=np.array(iris)#将数组转换为向量
indices = np.random.permutation(len(iris_x))
#permutation接收一个数作为参数(150),产生一个0-149一维数组,
只不过是随机打乱的,当然她也可以接收一个一维数组作为参数,
结果是直接对这个数组打乱
ris_x_train,
iris_x_test ,
iris_y_train,
iris_y_test = train_test_split(iris_x,iris_y,test_size = 0.2)#对原始数据集进行分割
knn = KNeighborsClassifier(10) #定义一个knn分类器对象
knn.fit(iris_x_train, iris_y_train) #调用该对象的训练方法,主要接收两个参数:训练数据集及其样本标签,训练模型
iris_y_predict = knn.predict(iris_x_test) #调用该对象的测试方法,主要接收一个参数:测试数据集
knn.score(iris_x_test,iris_y_test)#KNN自带的评分函数
from sklearn.metrics import mean_squared_error
import math
meanSquaredError=mean_squared_error(iris_y_predict, iris_y_test)
#均方误差
print("MSE:", meanSquaredError)
rootMeanSquaredError = math.sqrt(meanSquaredError)
#均方根误差
print("RMSE:", rootMeanSquaredError)
(120, 4) (120,) (30, 4) (30,)#数据集的分割
0.9666666666666667#模型的评分
MSE: 0.03333333333333333
RMSE: 0.18257418583505536