鸢尾花案例,分类问题。利用sklearn预置数据集进行案例练习。鸢尾花数据集里有鸢尾花特征,通过这些特征可以判断样本属于那一类型的鸢尾花。
from sklearn.datasets import load_iris import seaborn as sns import matplotlib.pyplot as plt import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score # 1、加载sklearn预置的数据集,鸢尾花 iris_data = load_iris() # print(iris_data) # print(iris_data.data) # print(iris_data.target) # 2、将获取数据集中的部分内容,组成DataFrame。原数据集是json格式,取data字段作为特征列,列名取feature_names字段 # 增加label列作为标签,取target字段 iris_df = pd.DataFrame(iris_data['data'], columns=iris_data.feature_names) iris_df['label'] = iris_data.target # print(iris_df.head(5)) # print(iris_data.feature_names) # 3、画图,指定xy轴名称,这个名称要求是数据集中存在的,可查看feature_names字段,数据是iris_df,hue颜色是label # 这一步是对陌生数据理解过程,找出数据中的规律,但不是模型训练的必要步骤 # sns.lmplot(x='sepal length (cm)',y='sepal width (cm)',data=iris_df,hue='label') # plt.show() # 4、划分数据集,即划分训练集、测试集,一般是8:2、7:3 # test_size测试集大小,random_state随机数种子 # train_test_split(特征、目标值、测试集大小、随机数种子) # train_test_split返回值的接收顺序是固定的 x_train, x_test, y_train, y_test = train_test_split(iris_data.data, iris_data.target, test_size=0.3, random_state=22) # print(len(iris_data.data)) # print(len(x_train)) # 5、特征预处理,标准化。先创建标准化对象,训练集特征、测试集特征调用方法是不一样的 process = StandardScaler() x_train = process.fit_transform(x_train) x_test = process.transform(x_test) # 6、训练模型,将训练集特征、目标值传入进行训练 model = KNeighborsClassifier(n_neighbors=3) model.fit(x_train,y_train) # 7、模型预测、评估 # 自定义了一个测试样本x # 同时要将x进行标准化处理,达到与训练集数据一致的水平,transform # 将标准化后的x传入模型进行预测,并得到目标值,predict # predict_proba方法,[[1. 0. 0.]],是指目标值0,1,2那么0为1.是最接近的目标值,即目标值是0 x = [[5.1,3.5,1.4,0.2]] x = process.transform(x) y_predict = model.predict(x) print(y_predict) print(model.predict_proba(x)) # 模型评估 # 使用测试集进行模型评估,最终输出acc得分 # y_predict = model.predict(x_test) # acc = accuracy_score(y_test,y_predict) # print(acc)