(input_layer_size,hidden_layer_size,out_put_layer)
| 11 | import time |
| 12 | |
| 13 | def neuralNetwork(input_layer_size,hidden_layer_size,out_put_layer): |
| 14 | data_img = loadmat_data("data_digits.mat") |
| 15 | X = data_img['X'] |
| 16 | y = data_img['y'] |
| 17 | |
| 18 | '''scaler = StandardScaler() |
| 19 | scaler.fit(X) |
| 20 | X = scaler.transform(X)''' |
| 21 | |
| 22 | m,n = X.shape |
| 23 | """digits = datasets.load_digits() |
| 24 | X = digits.data |
| 25 | y = digits.target |
| 26 | m,n = X.shape |
| 27 | |
| 28 | scaler = StandardScaler() |
| 29 | scaler.fit(X) |
| 30 | X = scaler.transform(X)""" |
| 31 | |
| 32 | ## 随机显示几行数据 |
| 33 | rand_indices = [t for t in [np.random.randint(x-x, m) for x in range(100)]] # 生成100个0-m的随机数 |
| 34 | display_data(X[rand_indices,:]) # 显示100个数字 |
| 35 | |
| 36 | #nn_params = np.vstack((Theta1.reshape(-1,1),Theta2.reshape(-1,1))) |
| 37 | |
| 38 | Lambda = 1 |
| 39 | |
| 40 | initial_Theta1 = randInitializeWeights(input_layer_size,hidden_layer_size); |
| 41 | initial_Theta2 = randInitializeWeights(hidden_layer_size,out_put_layer) |
| 42 | |
| 43 | initial_nn_params = np.vstack((initial_Theta1.reshape(-1,1),initial_Theta2.reshape(-1,1))) #展开theta |
| 44 | #np.savetxt("testTheta.csv",initial_nn_params,delimiter=",") |
| 45 | start = time.time() |
| 46 | result = optimize.fmin_cg(nnCostFunction, initial_nn_params, fprime=nnGradient, args=(input_layer_size,hidden_layer_size,out_put_layer,X,y,Lambda), maxiter=100) |
| 47 | print (u'执行时间:',time.time()-start) |
| 48 | print (result) |
| 49 | '''可视化 Theta1''' |
| 50 | length = result.shape[0] |
| 51 | Theta1 = result[0:hidden_layer_size*(input_layer_size+1)].reshape(hidden_layer_size,input_layer_size+1) |
| 52 | Theta2 = result[hidden_layer_size*(input_layer_size+1):length].reshape(out_put_layer,hidden_layer_size+1) |
| 53 | display_data(Theta1[:,1:length]) |
| 54 | display_data(Theta2[:,1:length]) |
| 55 | '''预测''' |
| 56 | p = predict(Theta1,Theta2,X) |
| 57 | print (u"预测准确度为:%f%%"%np.mean(np.float64(p == y.reshape(-1,1))*100)) |
| 58 | res = np.hstack((p,y.reshape(-1,1))) |
| 59 | np.savetxt("predict.csv", res, delimiter=',') |
| 60 | |
| 61 | |
| 62 | # 加载mat文件 |
no test coverage detected