赞
踩
使用sklearn和keras两种不同的机器学习方法分别训练iris数据集,并评估模型的准确性。其中,sklearn使用的是逻辑回归,而keras通过构建神经网络模型来进行训练。
#导入相关库 import seaborn as sns import numpy as np #机器学习:sklearn from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegressionCV #深度学习:keras from keras.models import Sequential from keras.layers import Dense from keras import utils #加载数据 iris = sns.load_dataset('iris') #获取数据集的特征和目标值 x = iris.values[:,:4] y = iris.values[:,4] #分割数据集 x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.5,random_state=0) #使用sklearn进行训练 lr = LogisticRegressionCV() lr.fit(x_train,y_train) #模型评估 print("score:",lr.score(x_test,y_test)) #使用keras进行训练 #数据处理 #目标值的热编码 def one_hot_encode(arr): #获取目标值中的所有类别并进行热编码 uniques,ids = np.unique(arr,return_inverse=True) return utils.to_categorical(ids,len(uniques)) #对目标值进行编码 y_train_hot = one_hot_encode(y_train) y_test_hot = one_hot_encode(y_test) #构建模型 model = Sequential([ #隐藏层 Dense(10,activation="relu",input_shape=(4,)), #隐藏层 Dense(10,activation="relu"), #输出层 Dense(3,activation="softmax") ]) #查看模型结构 print(model.summary()) # 可视化 # utils.plot_model(model,show_shapes=True) #模型编译 model.compile(optimizer="adam",loss="categorical_crossentropy",metrics=["accuracy"]) #类型转换 x_train = np.array(x_train,dtype=np.float32) x_test = np.array(x_test,dtype=np.float32) #模型训练 model.fit(x_train,y_train_hot,epochs=10,batch_size=1,verbose=1) #模型评估 loss,accuracy = model.evaluate(x_test,y_test_hot,verbose=1) print("loss:{0},accuracy:{1}".format(loss,accuracy))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。