神经网络CNN的简单实现

(一)神经网络图解和算法的推导
(二)神经网络代码的实现

from sklearn.neural_network import MLPRegressor
import xlrd ,xlwt
import pandas as pd 
import numpy as np
from sklearn.cross_validation import train_test_split

X = [[0., 0.], [1., 1.]]
y = [0, 1]
clf = MLPRegressor(solver='lbfgs', alpha=1e-5,
                     hidden_layer_sizes=(5, 2), random_state=1)

X_train_raw, X_test_raw, y_train, y_test = train_test_split(df[best_names],df['效率'],
                                                            test_size=0.3,random_state=123)
# 参数详解                        
MLPRegressor(activation='relu' #有四种不同 的方法{‘identity’, ‘logistic’, ‘tanh’, ‘relu’},
             , alpha=1e-05 #惩罚系数
             , batch_size='auto' #用于随机优化器的小型机的大小。 如果求解器是'lbfgs',则分类器将不使用minibatch。 设置为“auto”时,batch_size = min(200,n_samples)
             , beta_1=0.9 #亚当中第一时刻向量估计的指数衰减率应为[0,1]。 仅在solver ='adam'时使用
             , beta_2=0.999 #亚当中二阶矩矢量估计的指数衰减率应为[0,1]。 仅在solver ='adam'时使用
             , early_stopping=False #当验证评分没有改善时,是否使用提前停止来终止培训。 如果设置为true,它将自动留出10%的训练数据作为验证,
                                    #并在验证得分没有提高至少两个连续时期的tol时终止训练。 仅在solver ='sgd'或'adam'时有效
             , epsilon=1e-08           #亚当数值稳定性的价值。 仅在solver ='adam'时使用
             , hidden_layer_sizes=(5, 2) #隐藏层的数量和神经单元的数量
             , learning_rate='constant' #{‘constant’, ‘invscaling’, ‘adaptive’}, default ‘constant’
                                        #权重更新的学习率计划
             , learning_rate_init=0.001 #控制跟新迭代的步长
             , max_iter=200  #最大迭代次数,理论上迭代次数越多效果越好
             , momentum=0.9 #梯度下降更新的动量。 应该在0和1之间。仅在solver ='sgd'时使用。
             , nesterovs_momentum=True #是否使用Nesterov的势头。 仅在solver ='sgd'和momentum> 0时使用
             , power_t=0.5      #反缩放学习率的指数。 当learning_rate设置为“invscaling”时,它用于更新有效学习率。 仅在solver ='sgd'时使用。
             , random_state=1 #随机种子,用于还原算法
             , shuffle=True #是否在每次迭代的时候进行洗牌
             , solver='lbfgs' #权重的优化方案 有三个参数可以选择{‘lbfgs’, ‘sgd’, ‘adam’}  
                              #默认 ‘adam’-随机梯度下降  'lbfgs'是准牛顿方法族的优化者
             , tol=0.0001  # 优化容差当损失或分数在两次连续迭代中没有提高至少tol时,除非将learning_rate设置为“自适应”,否则认为会达到收敛并且训练停止
             , validation_fraction=0.1  #将训练数据的比例留作早期停止的验证集。
                                        #必须介于0和1之间。仅在early_stopping为True时使用
             , verbose=False  #是否将进度消息打印到stdout。
             ,warm_start=False) #设置为True时,重用上一次调用的解决方案以适合初始化,否则,只需擦除以前的解决方案。
#预测结果
y1=clf.predict(X_test_raw) 
# 计算误差实现以下函数并输出所选直线的MSE
def calculateMSE(X,Y):
    in_bracket = []
    for i in range(len(X)):
        num = (X[i]-Y[i])**2
        in_bracket.append(num)     
    all_sum = sum(in_bracket)
    MSE = all_sum / len(X)
    return MSE

你可能感兴趣的:(神经网络CNN的简单实现)