案例简介

使用Sklearn-learn机器学习模块提供的鸢尾花数据集

案例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

#将数据分为训练集和测试集,训练鞋用于训练模型,测试集用户评估模型的性能,使用train_test_split(),将random——state设置随机值,可保证每次分的训练集和测试集数据比例一致
iris_dataset=load_iris()
X_train,X_test,Y_train,Y_test = train_test_split(iris_dataset['data'],iris_dataset['target'],random_state=0)
print("X_train:{}".format(X_train[:10]))
print("Y_train:{}".format(Y_train[:10]))

#使用k近邻算法训练模型,需要实例化一个算法对象;n_neighbors为传入的k值,1表示只和最近的一个邻居比较;fit()表示训练模型
from sklearn.neighbors import KNeighborsClassifier
knn= KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train,Y_train)

#模型构件好后,新构建一个花的数据点,进行预测
new_iris=np.array([[5,2.9,1,0.2]])
prediction=knn.predict(new_iris)
print("prediction_result:{}".format(prediction))
print("prediction_result_tartget_name:{}".format(iris_dataset['target_names'][prediction]))

#使用score()测试模型的精度
print("test_score:{}".format(knn.score(X_test,Y_test)))

训练结果

1
2
prediction_result:[0]
prediction_result_tartget_name:['setosa']

模型精度

1
test_score:0.9736842105263158