keras环境搭建
#Install numpy and scipy
sudo apt-get install gfortran libopenblas-dev liblapack-dev libatlas-base-dev python-pip g++ libopenblas-dev git python-nose python-pip python-dev python-tk
sudo apt-get remove python-numpy python-scipy
sudo pip install numpy
python -c "import numpy;numpy.test()"
sudo pip install scipy
python -c "import scipy;scipy.test()"
#Install sklearn
sudo pip install sklearn
#Install pandas
sudo pip install pandas
#Install pyyaml
sudo pip install pyyaml
#Install matplotlib
sudo pip install matplotlib
#Theano Install
sudo pip install Theano
#Tenserflow without GPU
export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0rc0-cp27-none-linux_x86_64.whl
sudo pip install --upgrade $TF_BINARY_URL
#Theano Keras
sudo pip install Keras
Pip安装时会因为网络环境安装失败,也会缺少依赖此时可以用apt-get install 安装 例如
pip install pandas
替换为
sudo apt-get install python-pandas
tensorflow如果安装失败,可以换下面这种方法
sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
Lstm介绍
http://www.cnblogs.com/arkenstone/p/5794063.html
Keras主要模块介绍及 LSTM代码分析
http://www.infocool.net/kb/Other/201610/203183.html
基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ
基于Theano的深度学习(Deep Learning)框架Keras学习随笔-02-Example
基于Theano的深度学习(Deep Learning)框架Keras学习随笔-05-模型
以下是广东航空大赛的一个时间序列预测代码(sequence-to-sequence)
import osfrom os import pathimport pandas as pd from random import randomimport numpy as npimport pylab as pl def _load_data(data, lookback = 10): docX, docY = [], [] for i in range(len(data)-lookback):# docX.append(data.iloc[i:i+lookback].as_matrix()) docY.append(data.iloc[i+lookback].as_matrix()) alsX = np.array(docX) alsY = np.array(docY) #print('alsX.shape:'+str(alsX.shape)) #print('alsY.shape:'+str(alsY.shape)) return alsX, alsY def train_test_split(df,lookback=10): X_train, y_train = _load_data(df.iloc[0:len(df)],lookback) #X_test=np.array([df.iloc[len(df)-1-lookback:len(df)-1].as_matrix()]) X_test=np.array([df.iloc[len(df)-lookback:len(df)].as_matrix()]) print(X_test.shape) print(y_train.shape) #y_test=np.array([df.iloc[len(df)-1].as_matrix()]) #print(y_test.shape) #return (X_train, y_train), (X_test, y_test) return (X_train, y_train), (X_test) def find_files(path,endswith):# the return type is a list names=[name for name in os.listdir(path) if os.path.isfile(os.path.join(path,name)) and name.endswith(endswith)] if(path.endswith('/')): for i in range(len(names)): names[i]=path+names[i] else: for i in range(len(names)): names[i]=path+'/'+names[i] return names def switch(i): return{0:'5-0',1:'5-1',2:'5-2',3:'5-3',4:'5-4',5:'5-5',6:'6-0',7:'6-1',8:'6-2',9:'6-3',10:'6-4',11:'6-5',12:'7-0',13:'7-1',14:'7-2',15:'7-3',16:'7-4',17:'7-5'}.get(i,[9,'float32']) from keras.models import Sequential from keras.layers.core import Dense, Activation from keras.layers.recurrent import LSTM in_neurons = 18 out_neurons = 18 batch_size=1;#params that can be tuned hidden_neurons = 36 lookback=36; nb_epoch=100; files=find_files('./dataset_vec_new','.csv')for srcfile in files: data = pd.read_csv(srcfile, engine='python') wifiname=srcfile[18:] print "wifiname" wifiname=wifiname.replace('_10min_vec.csv','') print wifiname print('begin processing '+wifiname+'......') model = Sequential() model.add(LSTM(output_dim=hidden_neurons, input_dim=in_neurons, return_sequences=False)) model.add(Dense(input_dim=hidden_neurons,output_dim=out_neurons)) model.add(Activation("linear")) model.compile(loss="mean_squared_error", optimizer="rmsprop") (X_train, y_train), (X_test) = train_test_split(data,lookback) # retrieve data #print(X_test[0,9,:]) #print(y_train[2093,:]) model.fit(X_train, y_train, batch_size=batch_size, nb_epoch=nb_epoch, validation_split=0.05) predicted = model.predict(X_test) #rmse = np.sqrt(((predicted - y_test) ** 2).mean(axis=0)).mean() #print('RMSE:'+str(rmse)) fobj=open('dataset_results/'+wifiname+'_results.csv','w') print(predicted[0,:]) for i in range(len(predicted[0,:])): fobj.write(wifiname+','+str(predicted[0,i])+','+'2016-09-25-1'+switch(i)+'\n') fobj.close() print('end processing '+wifiname+'......') #print(predicted.shape) #print(y_test) #print(X_test[0,9,:]) # and maybe plot it #pd.DataFrame(predicted[:100]).to_csv("predicted.csv") #pd.DataFrame(y_test[:100]).to_csv("test_data.csv") #pl.plot(predicted[0,:],'*') #pl.plot(y_test[0,:],'*') #pl.show() #pd.DataFrame(predicted[0,:]).plot(kind='dot') #pd.DataFrame(y_test[0,:]).plot(kind='line')
数据集保存在文件中