import tensorflow as tf
import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline

读取csv数据

1
data = pd.read_csv('Advertising.csv')
1
2
#打印数据
data.head() #head打印前5行
Unnamed: 0 TV radio newspaper sales
0 1 230.1 37.8 69.2 22.1
1 2 44.5 39.3 45.1 10.4
2 3 17.2 45.9 69.3 9.3
3 4 151.5 41.3 58.5 18.5
4 5 180.8 10.8 58.4 12.9

散点图绘制

1
plt.scatter(data.TV,data.sales)

1
plt.scatter(data.radio,data.sales)

1
plt.scatter(data.newspaper,data.sales)

数据处理

1
2
x = data.iloc[:,1:-1]#取所有x行,列取1到倒数第一个
y = data.iloc[:,-1]#取每一行的最后一个sales值

模型搭建

1
2
3
model = tf.keras.Sequential([tf.keras.layers.Dense(10,input_shape=(3,),activation='relu'),#activation激活函数#Dense(隐藏层,层数越大拟合越强)
tf.keras.layers.Dense(1)]#输出层,输出维度为1
)

模型情况

1
model.summary()

模型优化函数等设置

1
2
3
model.compile(optimizer='adam',
loss='mse'
)

模型训练

1
model.fit(x,y,epochs=100)

模型测试

1
2
3
test = data.iloc[:10,1:-1]
model.predict(test)
data.iloc[:10,-1]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
test
TV radio newspaper
0 230.1 37.8 69.2
1 44.5 39.3 45.1
2 17.2 45.9 69.3
3 151.5 41.3 58.5
4 180.8 10.8 58.4
5 8.7 48.9 75.0
6 57.5 32.8 23.5
7 120.2 19.6 11.6
8 8.6 2.1 1.0
9 199.8 2.6 21.2

model.predict(test)
array([[21.17163 ],
[11.171642 ],
[ 8.011005 ],
[17.562443 ],
[12.576716 ],
[ 4.724884 ],
[10.637545 ],
[11.383933 ],
[ 1.3441222],
[12.117564 ]], dtype=float32)

data.iloc[:10,-1]
0 22.1
1 10.4
2 9.3
3 18.5
4 12.9
5 7.2
6 11.8
7 13.2
8 4.8
9 10.6
Name: sales, dtype: float64