对鸢尾花数据集进行预测

1.步骤:

(1)从sklearn导入鸢尾花数据集
(2)对数据集进行训练数据和测试数据划分,测试部分用来进行预测。
(3)均值方差法进行数据归一化(注意:训练数据和测试数据都要进行)
(4)网格搜索对三个参数(weights、p、n_neighbors)查找最优值。
(1)knn算法生成器
(2)打印最有参数和最好的预测率
(3)对测试数据集里面的测试数据进行预测

#从sklearn导入鸢尾花数据集
from sklearn import datasets
#加载数据集
iris=datasets.load_iris()
# print(iris)
#获取数据集的特征矩阵和标签向量,并存储
X_iris=iris.data
y_iris=iris.target

#对数据集进行训练数据和测试数据划分,测试部分用来进行预测
from sklearn.model_selection import train_test_split
#train_test_split划分数据,返回四个值,对应如下
X_train,X_test,y_train,y_test=train_test_split(X_iris,y_iris,test_size=0.10)



#均值方差法进行数据归一化
from sklearn.preprocessing import StandardScaler
#生成对象
std=StandardScaler()
#fit生成均值和方差
std.fit(X_train)
#存放均值的成员变量 std.mean_
#存放方差的成员变量std.scale_
#对训练数据和测试数据进行归一化
X_train_stand=std.transform(X_train)
X_test_stand=std.transform(X_test)

#最大值或者最小值进行数据归一化
from sklearn.preprocessing import MinMaxScaler
#生成对象
std=MinMaxScaler()
#fit生成均值和方差
std.fit(X_train)
#存放均值的成员变量 std.mean_
#存放方差的成员变量std.scale_
#对训练数据和测试数据进行归一化
X_train_minmax=std.transform(X_train)
X_test_minmax=std.transform(X_test)

#knn算法
from sklearn.neighbors import KNeighborsClassifier
knn=KNeighborsClassifier()


#网格搜索对三个参数(weights、p、n_neighbors)查找最优值。
param=[
    {
        "weights":["uniform"],
        "n_neighbors":[i for i in range(1,11)]
    },
    {
        "weights": ["distance"],
        "p":[i for i in range(1, 5)],
        "n_neighbors": [i for i in range(1, 11)]
    },
]
from sklearn.model_selection import GridSearchCV
#生成对象
gs=GridSearchCV(knn,param)
#通过数据进行搜索最优参数
gs.fit(X_train_minmax,y_train)
#fit运行完,最优参数和最高成绩都存放到gs的成员变量
print(gs.best_params_)
print(gs.best_score_)


#预测(使用最有参数进行对测试数据的预测)
y_predicty=gs.predict(X_test_minmax)
print(y_predicty)
#真是值
print(y_test)
发布了26 篇原创文章 · 获赞 35 · 访问量 738

猜你喜欢

转载自blog.csdn.net/csdnliu123/article/details/105587505