1. 程式人生 > >資料探勘——多層感知器的Python實現

資料探勘——多層感知器的Python實現

# coding=utf-8
from sklearn.cross_validation import train_test_split
from sklearn.neural_network import MultilayerPerceptronClassifier
import numpy as np
"""
讓我們訓練一個多層感知器來近似XOR函式。目前,scikit-learn的0.16.1版本還沒有合併,作者在其github上提供了單獨的MLP模組NeuralNetworks,我們在0.16.1版本基礎上稍作修改,即可完成本書的例子。

請fork作者的NeuralNetworks,將multilayer_perceptron資料夾裡的.py檔案複製到sklearn/neural_network資料夾裡,然後將對__init__.py檔案做如下修改即可:

# __init__.py
from .rbm import BernoulliRBM

from .multilayer_perceptron import MultilayerPerceptronClassifier
from .multilayer_perceptron import MultilayerPerceptronRegressor

__all__ = ["BernoulliRBM",
           "MultilayerPerceptronClassifier",
           "MultilayerPerceptronRegressor"]
另外,在Linux和Mac OS系統裡,複製.py檔案的許可權記得改成chmod 644
"""
# 準備資料 y = [0, 1, 1, 0] * 10000 X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]] * 10000) X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=3) """ 確定隱藏單元和隱藏層的數量有一些首要原則:樣本數量, 訓練資料的噪聲,要被近似的函式複雜性,隱藏單元的激勵函式,學習演算法和使用的正則化方法決定 """ clf = MultilayerPerceptronClassifier(hidden_layer_sizes=[2], activation='logistic'
, random_state=3) clf.fit(X_train, y_train) print '層數 %s ,輸出單元數量:%s' % (clf.n_layers_, clf.n_outputs_) predictions = clf.predict(X_test) print '準確率%s:' % clf.score(X_test, y_test) for i, p in enumerate(predictions[:10]): print '真實值:%s,預測值:%s' % (y_test[i], p)