機械学習のsklearn(一)neural_networkライブラリ実現
3411 ワード
sklearn
sklearnは機械学習でよく使われるライブラリで、ライブラリには大量のトレーニングデータセットと大部分の古典的な機械学習アルゴリズムのパッケージが含まれており、Pythonにライブラリで使用する必要があるファイルを直接インポートすればよい.
neural_network
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)