keras_线性回归

2018-09-04  本文已影响0人  魔童转世
image.png

机器学习太难了 引用一句话'tensorflow是给那些天星人用的' 每天进步一丢丢吧

from keras.layers import Dense, np
from keras.models import Sequential
import matplotlib.pyplot as plt

#--------------数据伪造阶段
X = np.linspace(-1,1,200)#在指定的间隔内返回均匀间隔的数字
np.random.shuffle(X) #打乱X数据顺序
Y=0.5*X+2+np.random.normal(0,0.05,(200,))  通过后面的随机数 是数据产生误差  

#-------------打印输出 查看形状
plt.scatter(X,Y)
plt.show()

#-------------------获取前160个数据 作为训练数据 后面40个作为测试数据
x_train,y_train=X[:160],Y[:160]
x_test,y_test=X[160:],Y[160:]




#----------------开始建模
model = Sequential() 
model.add(Dense(output_dim=1,input_dim=1)) 
model.compile(loss='mse',optimizer='sgd') 
#loss 是损失函数例如:y=a*x+b 的损失函数为y(p) = (预测值- y)*(预测值- y)  平方没法打  
#optimizer 为梯度下降法 意思就是 每循环一次 X=X-2 


#-----开始训练
for sep in range(500):
 #-------按批次获取数据训练
   cost =  model.train_on_batch(x_train,y_train)
   if sep%100==0:
       print('train cost:',cost)

print('test-----')


#----评价模型  没搞明白为啥要这样做
cost = model.evaluate(x_test,y_test)

print('test cost:',cost)
#----------得到训练结果的权重
w,b = model.layers[0].get_weights()
print('weights=',w,'\nbiascs=',b)


#------预测x_test---
y_pred = model.predict(x_test)
plt.scatter(x_test,y_test)
plt.plot(x_test,y_pred,color='#00161a')
plt.show()

上一篇下一篇

猜你喜欢

热点阅读