神經網絡1_neuron network原理_python sklearn建模乳腺癌細胞分類器(推薦AAA)

 python機器學習-乳腺癌細胞挖掘(博主親自錄製視頻)html

https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=sharepython

author: Toby,項目合做QQ:231469242

 

https://www.youtube.com/watch?v=lAaCeiqE6CE&list=PLXO45tsB95cJ0U2DKySDmhRqQI9IaGxck算法

人工神經網絡 VS 生物神經網絡 

二者是不同的

 生物神經網絡是大天然通過千億年進化而成,目前最早進人工智能神經網絡沒法達到

 

人工神經網絡 :經過正反饋和負反饋建立或刪除神經元

生物神經網絡  :經過刺激產生新的連接,信號經過新的連接傳遞產生反饋,

目前最早進人工智能神經網絡沒法模擬生物神經網絡

 

卷積神經網絡 CNN (深度學習)應用:

圖片識別,語音識別,藥物發現網絡

 

神經網絡原理:hidden layer是經過函數傳遞值dom

瞭解神經網絡,必須瞭解線性代數機器學習

 

神經網絡對數字識別是一層層分解函數

 

https://blog.csdn.net/gamer_gyt/article/details/51255448學習

scikit-learn博主使用的是0.17版本,是穩定版,固然如今有0.18發行版,二者仍是有區別的,感興趣的能夠本身官網上查看測試

scikit-learn0.17(and 以前)上對於Neural Network算法 的支持僅限於 BernoulliRBM大數據

scikit-learn0.18上對於Neural Network算法有三個  neural_network.BernoulliRBM ,neural_network.MLPClassifier,neural_network.MLPRgression 

Multi-layer Perceptron 多層感知機

MLP是一個監督學習算法,圖1是帶一個隱藏層的MLP模型 
這裏寫圖片描述

 

具體可參考:點擊閱讀

 

1:神經網絡算法簡介

2:Backpropagation算法詳細介紹

3:非線性轉化方程舉例

4:本身實現神經網絡算法NeuralNetwork

5:基於NeuralNetwork的XOR實例

6:基於NeuralNetwork的手寫數字識別實例

7:scikit-learn中BernoulliRBM使用實例

8:scikit-learn中的手寫數字識別實例

 

一:神經網絡算法簡介

1:背景

以人腦神經網絡爲啓發,歷史上出現過不少版本,但最著名的是backpropagation

2:多層向前神經網絡(Multilayer  Feed-Forward Neural Network)

                                                          

多層向前神經網絡組成部分

輸入層(input layer),隱藏層(hiddenlayer),輸出層(output layer)

 

   每層由單元(units)組成
   輸入層(input layer)是由訓練集的實例特徵向量傳入
   通過鏈接結點的權重(weight)傳入下一層,一層的輸出是下一層的輸入
   隱藏層的個數是任意的,輸出層和輸入層只有一個
   每一個單元(unit)也能夠被稱做神經結點,根據生物學來源定義
   上圖稱爲2層的神經網絡(輸入層不算)
   一層中加權的求和,而後根據非線性的方程轉化輸出
   做爲多層向前神經網絡,理論上,若是有足夠多的隱藏層(hidden layers)和足夠大的訓練集,能夠模擬出任何方程
 

3:設計神經網絡結構

    3.1使用神經網絡訓練數據以前,必須肯定神經網絡層數,以及每層單元個數
    3.2特徵向量在被傳入輸入層時一般被先標準化(normalize)和0和1之間(爲了增強學習過程)
    3.3離散型變量能夠被編碼成每個輸入單元對應一個特徵可能賦的值
        好比:特徵值A可能取三個值(a0,a1,a2),可使用三個輸入單元來表明A
                    若是A=a0,那麼表明a0的單元值就取1,其餘取0
                    若是A=a1,那麼表明a1的單元值就取1,其餘取0,以此類推
    3.4神經網絡便可以用來作分類(classification)問題,也能夠解決迴歸(regression)問題
         3.4.1對於分類問題,若是是2類,能夠用一個輸入單元表示(0和1分別表明2類)
                                         若是多於兩類,每個類別用一個輸出單元表示
                因此輸入層的單元數量一般等於類別的數量 
        3.4.2沒有明確的規則來設計最好有多少個隱藏層
               3.4.2.1根據實驗測試和偏差,以及準確度來實驗並改進

4:算法驗證——交叉驗證法(Cross- Validation)

 

 

神經網絡優勢和缺點

優勢:大數據高效,處理複雜模型,處理多維度數據,靈活快速

缺點:數據須要預處理

代替:TensorFlow,Keras

 

 

python sklearn建模處理乳腺癌細胞分類器

# -*- coding: utf-8 -*-
"""
Created on Sun Apr  1 11:49:50 2018

@author: Toby,項目合做QQ:231469242
神經網絡
"""
#Multi-layer Perceptron 多層感知機
from sklearn.neural_network import MLPClassifier
#標準化數據,不然神經網絡結果不許確,和SVM相似
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
import mglearn
import matplotlib.pyplot as plt
mglearn.plots.plot_logistic_regression_graph()
mglearn.plots.plot_single_hidden_layer_graph()

cancer=load_breast_cancer()
x_train,x_test,y_train,y_test=train_test_split(cancer.data,cancer.target,stratify=cancer.target,random_state=42)

mlp=MLPClassifier(random_state=42)
mlp.fit(x_train,y_train)
print("neural network:")    
print("accuracy on the training subset:{:.3f}".format(mlp.score(x_train,y_train)))
print("accuracy on the test subset:{:.3f}".format(mlp.score(x_test,y_test)))

scaler=StandardScaler()
x_train_scaled=scaler.fit(x_train).transform(x_train)
x_test_scaled=scaler.fit(x_test).transform(x_test)

mlp_scaled=MLPClassifier(max_iter=1000,random_state=42)
mlp_scaled.fit(x_train_scaled,y_train)
print("neural network after scaled:")    
print("accuracy on the training subset:{:.3f}".format(mlp_scaled.score(x_train_scaled,y_train)))
print("accuracy on the test subset:{:.3f}".format(mlp_scaled.score(x_test_scaled,y_test)))


mlp_scaled2=MLPClassifier(max_iter=1000,alpha=1,random_state=42)
mlp_scaled.fit(x_train_scaled,y_train)
print("neural network after scaled and alpha change to 1:")    
print("accuracy on the training subset:{:.3f}".format(mlp_scaled.score(x_train_scaled,y_train)))
print("accuracy on the test subset:{:.3f}".format(mlp_scaled.score(x_test_scaled,y_test)))


plt.figure(figsize=(20,5))
plt.imshow(mlp.coefs_[0],interpolation="None",cmap="GnBu")
plt.yticks(range(30),cancer.feature_names)
plt.xlabel("columns in weight matrix")
plt.ylabel("input feature")
plt.colorbar()

  

 

 

 

python信用評分卡建模(附代碼,博主錄製)

相關文章
相關標籤/搜索