1. 鸢尾花分类-神经网络
from keras.layers import Dense
from keras.models import Sequential
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelBinarizer
iris = pd.read_csv('G:/鸢尾花数据集/iris.csv')
cls = iris['Name'].unique()
dic = dict(zip(cls, range(len(cls))))
iris['cla'] = iris['Name'].apply(lambda x: dic[x])
lb = LabelBinarizer()
lb.fit(iris['Name'])
y = lb.transform(iris['Name'])
x = iris.iloc[:, 0: 4].values
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=5)
model = Sequential()
model.add(Dense(10, input_shape=(4,), activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(6, activation='relu'))
model.add(Dense(3, activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=100, batch_size=1, verbose=2)
y_pre = model.predict(x_test)
y_p = np.argmax(y_pre, axis=1)
y_t = np.argmax(y_test, axis=1)
tar = iris['Name'].unique()
print(classification_report(y_t, y_p, target_names=tar))
Epoch 100/100
- 0s - loss: 0.0570 - acc: 0.9833
precision recall f1-score support
Iris-setosa 1.00 1.00 1.00 8
Iris-versicolor 1.00 0.64 0.78 11
Iris-virginica 0.73 1.00 0.85 11
accuracy 0.87 30
macro avg 0.91 0.88 0.87 30
weighted avg 0.90 0.87 0.86 30