用python的keras库建立神经网络预测销售高低,建立的神经网络有3个输入节点、10个隐藏节点和1个输出节点,并显示混淆矩阵可视化结果
时间: 2023-12-10 12:37:48 浏览: 65
利用keras使用神经网络预测销量操作
好的,首先我们需要准备数据集,以便训练和测试我们的神经网络。这里我使用了UCI Machine Learning Repository上的销售数据集,包含了一些关于销售的特征,以及销售额的标签。
```python
import pandas as pd
import numpy as np
# 读取数据
data = pd.read_csv('sales_data.csv')
# 将标签转换为0和1
data['sale'] = np.where(data['sale'] > 5000, 1, 0)
# 将特征和标签分开
X = data.drop('sale', axis=1)
y = data['sale']
```
接下来,我们可以开始建立神经网络模型。这里我使用了Keras库,并使用了Sequential模型。
```python
from keras.models import Sequential
from keras.layers import Dense
# 建立模型
model = Sequential()
model.add(Dense(10, input_dim=3, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
```
模型建立好后,我们可以对其进行训练。这里我将数据集分为训练集和测试集,用训练集来训练模型,用测试集来评估模型的性能。
```python
from sklearn.model_selection import train_test_split
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练模型
model.fit(X_train, y_train, epochs=50, batch_size=10)
```
训练完模型后,我们可以使用测试集来评估模型的性能。这里我使用了混淆矩阵来可视化结果。
```python
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns
# 预测测试集结果
y_pred = model.predict(X_test)
y_pred = (y_pred > 0.5)
# 计算混淆矩阵
cm = confusion_matrix(y_test, y_pred)
# 可视化混淆矩阵
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.show()
```
完整代码如下:
```python
import pandas as pd
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns
# 读取数据
data = pd.read_csv('sales_data.csv')
# 将标签转换为0和1
data['sale'] = np.where(data['sale'] > 5000, 1, 0)
# 将特征和标签分开
X = data.drop('sale', axis=1)
y = data['sale']
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 建立模型
model = Sequential()
model.add(Dense(10, input_dim=3, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# 训练模型
model.fit(X_train, y_train, epochs=50, batch_size=10)
# 预测测试集结果
y_pred = model.predict(X_test)
y_pred = (y_pred > 0.5)
# 计算混淆矩阵
cm = confusion_matrix(y_test, y_pred)
# 可视化混淆矩阵
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.show()
```
阅读全文