def test(): DS = loadPybrainData() train, test = DS.splitWithProportion(0.1) fnn = joblib.load(PKL) # 预测test情况 output = fnn.activateOnDataset(test) # ann.activate(onedata)可以只对一个数据进行预测 outputs = [] target = [] count = 0 for out in output: outs = out.argmax() outputs.append(outs) for tar in test['target']: ta = tar.argmax() target.append(ta) for i in range(0, len(target)): if outputs[i] == target[i]: count += 1 right = count / len(target) #单个字符正确率 rate = (right**4) print("分类正确率是:%.4f%%" % (rate * 100)) v = Validator() print(u'均方和差为:', v.MSE(output, test['target'])) #计算test的原始值和预测值的均方差和,两者格式必须相等
def nn(): DS = ClassificationDataSet(28, 1, nb_classes=4) train = pickle.load(open('train_extracted_df.pkl', 'r')) y = train["median_relevance"] kfold_train_test = pickle.load(open('kfold_train_test.pkl', 'r')) features = ['query_tokens_in_title', 'query_tokens_in_description', 'percent_query_tokens_in_description', 'percent_query_tokens_in_title', 'query_length', 'description_length', 'title_length', 'two_grams_in_q_and_t', 'two_grams_in_q_and_d', 'q_mean_of_training_relevance', 'q_median_of_training_relevance', 'avg_relevance_variance', 'average_title_1gram_similarity_1', 'average_title_2gram_similarity_1', 'average_title_1gram_similarity_2', 'average_title_2gram_similarity_2', 'average_title_1gram_similarity_3', 'average_title_2gram_similarity_3', 'average_title_1gram_similarity_4', 'average_title_2gram_similarity_4', 'average_description_1gram_similarity_1', 'average_description_2gram_similarity_1', 'average_description_2gram_similarity_2', 'average_description_1gram_similarity_2', 'average_description_1gram_similarity_3', 'average_description_2gram_similarity_3', 'average_description_1gram_similarity_4', 'average_description_2gram_similarity_4'] train = train[features] for i in range(len(y)): DS.addSample(train.values[i],y[i]) X = DS['input'] Y = DS['target'] dataTrain, dataTest = DS.splitWithProportion(0.8) xTrain, yTrain = dataTrain['input'], dataTrain['target'] xTest, yTest = dataTest['input'], dataTest['target'] #fnn = RecurrentNetwork() fnn = FeedForwardNetwork() #fnn=buildNetwork(1,40,1,hiddenclass=TanhLayer, bias=True, outclass=SoftmaxLayer) #fnn=buildNetwork(1,40,1,hiddenclass=LSTMLayer, bias=True, outclass=SoftmaxLayer) inLayer = LinearLayer(28, name='inLayer') hiddenLayer = SigmoidLayer(40, name='hiddenLayer0') outLayer =LinearLayer(4, name='outLayer') fnn.addInputModule(inLayer) fnn.addModule(hiddenLayer) fnn.addOutputModule(outLayer) in_to_hidden = FullConnection(inLayer, hiddenLayer) hidden_to_out = FullConnection(hiddenLayer, outLayer) fnn.addConnection(in_to_hidden) fnn.addConnection(hidden_to_out) fnn.sortModules() trainer = BackpropTrainer(fnn, DS, verbose = True, learningrate=0.01) #trainer.trainUntilConvergence(maxEpochs=1000) trainer.trainEpochs(epochs=5) prediction = fnn.activateOnDataset(dataTest) out=[] total_score = 0 for i in prediction: class_index = max(xrange(len(i)), key=i.__getitem__) out.append(class_index+1) print str((class_index+1-yTest[class_index+1])/yTest[class_index+1]) df=pd.DataFrame(out,columns=['predict']) df['real']=dataTest['target'] coun = 0 for i,row in df.iterrows(): if row[0]== row[1]: coun+=1 print coun print "df['real']", df['real'],type(df['real'][0]) print "df['predict']",df['predict'],type(df['predict'][0]) print df v=Validator() #v.MSE(out,dataTest['target']) print "out",out print "dataTest['target']",dataTest['target']
pylab.plot(tsts['input'], ctsts, c='g') pylab.xlabel('x') pylab.ylabel('y') pylab.title('Neuron Number:' + str(nneuron)) pylab.grid(True) plotname = os.path.join(plotdir, ('jpq2layers_plot' + str(iter))) pylab.savefig(plotname) # set-up the neural network nneuron = 5 mom = 0.98 netname = "LSL-" + str(nneuron) + "-" + str(mom) mv = ModuleValidator() v = Validator() #create the test DataSet x = numpy.arange(0.0, 1.0 + 0.01, 0.01) s = 0.5 + 0.4 * numpy.sin(2 * numpy.pi * x) tsts = SupervisedDataSet(1, 1) tsts.setField('input', x.reshape(len(x), 1)) tsts.setField('target', s.reshape(len(s), 1)) #read the train DataSet from file trndata = SupervisedDataSet.loadFromFile(os.path.join(os.getcwd(), 'trndata')) myneuralnet = os.path.join(os.getcwd(), 'myneuralnet.xml') if os.path.isfile(myneuralnet): n = NetworkReader.readFrom(myneuralnet, name=netname) #calculate the test DataSet based on the trained Neural Network ctsts = mv.calculateModuleOutput(n, tsts)