機械学習のsklearn(一)neural_networkライブラリ実現


sklearn
sklearnは機械学習でよく使われるライブラリで、ライブラリには大量のトレーニングデータセットと大部分の古典的な機械学習アルゴリズムのパッケージが含まれており、Pythonにライブラリで使用する必要があるファイルを直接インポートすればよい.
neural_network
neural_Networkはsklearnライブラリのファイルであり、ニューラルネットワークモデルのトレーニングに使用されます.
コードセクション
ライブラリ部分
#                
#             :     28*28    ,             ,   0-255  
#             ,        
import numpy as np #  numpy     ,          
#                  ,         
from sklearn.neural_network import MLPClassifier
#     sklearn              ,          
from sklearn.metrics import confusion_matrix,classification_report

データ読み出し処理部
#  txt      ,   numpy            ,     
X_data = np.loadtxt(r'imagesData.txt',delimiter=',') # r           ,     
y_data = np.loadtxt(r'labelsData.txt',delimiter=',')
#          
def preprocess(X,y):
	#                   ,           ,          
	#     
	#     
	X_min = np.min(X)
	X_max = np.max(X)
	X = (X - X_min) / (X_max - X_min)
	#      
	X = np.c_[np.ones(len(X)),X]
	y = np.c_[y]
	#     
	np.random.seed(1)
	m = len(X)
	o = np.random.permutation(m)
	X = X[o]
	y = y[o]
	#     
	d = int(0.7 * m)
	X_train,X_test = np.split(X,[d])
	y_train,y_test = np.split(y,[d])
	#         ,        
	return X_train,X_test,y_train,y_test
#         ,        
X_train,X_test,y_train,y_test = preprocess(X_data,y_data)

モデルの呼び出し
"""
	    :
	hidden_layer_sizes:       (tuple), (100,100,100,50)
	activation :     ,{‘identity’, ‘logistic’, ‘tanh’, ‘relu’},    ‘relu‘; [f(x) = x, 1/(1+exp(-x)), tanh(x), max(0, x)]
	solver :    , {‘lbfgs’, ‘sgd’, ‘adam’},    ‘adam’; [   ,      ,    momemtum] 
	alpha : L2     ,float,   ,  0.0001
	batch_size :   ,  ,     ’lbfgs’,    ‘auto‘,   ,batch_size=min(200, n_samples)`
	learning_rate :    , {‘constant’, ‘invscaling’, ‘adaptive’},    ‘constant’,         sgd
	learning_rate_init :       ,   ,    0.001,     sgd adam
	power_t :     ,   ,    0.5,     ’invscaling’,learning_rate_init/pow(t,power_t),     sgd
	max_iter :      ,   ,   200,          ,  sgd/adam,     epochs  ,      
	shuffle :     ,     ,   ,   True,    sgd adam
	random_state:   None;  int,       seed,  RandomStates  ,       ,  None, np.random
	tol :    ,   ,   le-4,       loss     ,     ’adaptive’,  ,     ,
	beta_1 : adam      1,  ,   0.9
	beta_2 : adam      2,  ,   0.999
	epsilon : adam     ,  ,  1e-8
"""
#   ,               Java    
#          ,    ,      ,           ,       ,        
mlp = MLPClassifier(hidden_layer_sizes=(400,100),alpha=0.01,max_iter=300) 
#   fit           ,                fit()
mlp.fit(X_train,y_train.ravel()) #   y     ,       
#          ,                     
#        
print('        :',mlp.score(X_train,y_train))
#           
print('        :',mlp.loss_)
#       theta   
print('        :',mlp.coefs_)


混同マトリクスと分類レポート
#                         
#                          ,                  
matrix_train = confusion_matrix(y_train,mlp,predict(X_train))
print('         :',matrix_train)
#                    。
'''
	TP:    1(Positive),    1(Truth-    )
	TN:    0(Negative),    0(Truth-    )
	FP:    1(Positive),   0(False-    )
	FN:    0(Negative),   1(False-    )
'''
report_train = classification_report(y_train,mlp.predict(X_train))
print('         :'report_train)