Keras學習---資料預處理篇
A. 設定隨機種子
np.random.seed(1337) # for reproducibility B. 輸入資料維度規格化,這裡每個樣本只是size為784的一維陣列。
X_train = X_train.reshape(60000, 784) 將類別標籤轉換為one-hot encoding, 這一步對多分類是必須的
one_hot_labels = keras.utils.np_utils.to_categorical(labels, num_classes=10) train sets 和test sets可能需要shuffle處理?
C. 輸入資料型別轉換,數值歸一化 X_train = X_train.astype('float32')
X_train /= 255 MNIST dataset的MLP完整程式碼如下:
'''Trains a simple deep NN on the MNIST dataset. Gets to 98.40% test accuracy after 20 epochs (there is *a lot* of margin for parameter tuning). 2 seconds per epoch on a K520 GPU. ''' from __future__ import print_function import numpy as np np.random.seed(1337) # for reproducibility from keras.datasets import mnist from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activation from keras.optimizers import SGD, Adam, RMSprop from keras.utils import np_utils batch_size = 128 nb_classes = 10 nb_epoch = 20 # the data, shuffled and split between train and test sets (X_train, y_train), (X_test, y_test) = mnist.load_data() X_train = X_train.reshape(60000, 784) X_test = X_test.reshape(10000, 784) X_train = X_train.astype('float32') X_test = X_test.astype('float32') X_train /= 255 X_test /= 255 print(X_train.shape[0], 'train samples') print(X_test.shape[0], 'test samples') # convert class vectors to binary class matrices Y_train = np_utils.to_categorical(y_train, nb_classes) Y_test = np_utils.to_categorical(y_test, nb_classes) model = Sequential() model.add(Dense(512, input_shape=(784,))) model.add(Activation('relu')) model.add(Dropout(0.2)) model.add(Dense(512)) model.add(Activation('relu')) model.add(Dropout(0.2)) model.add(Dense(10)) model.add(Activation('softmax')) model.summary() #model.compile(loss='categorical_crossentropy', # optimizer=RMSprop(), # metrics=['accuracy']) model.compile(loss='categorical_crossentropy', optimizer=SGD(lr=0.02), metrics=['accuracy']) history = model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=1, validation_data=(X_test, Y_test)) score = model.evaluate(X_test, Y_test, verbose=0) print('Test score:', score[0]) print('Test accuracy:', score[1])
2. 如果輸入資料是影象,並且使用的是CNN模型,輸入資料的維度處理會稍微複雜些。 先了解下Keras 1.x中的image_dim_ordering引數。 “channels_last”對應原本的“tf”,“channels_first”對應原本的“th”。 以128x128的RGB影象為例,“channels_first”應將資料組織為(3,128,128),而“channels_last”應將資料組織為(128,128,3)。 MNIST dataset的CNN模型完整程式碼如下,特別需要注意input_shape和X_train/X_test。
'''Trains a simple convnet on the MNIST dataset. Gets to 99.25% test accuracy after 12 epochs (there is still a lot of margin for parameter tuning). 16 seconds per epoch on a GRID K520 GPU. ''' from __future__ import print_function import numpy as np np.random.seed(1337) # for reproducibility from keras.datasets import mnist from keras.models import Sequential from keras.layers import Dense, Dropout, Activation, Flatten from keras.layers import Convolution2D, MaxPooling2D from keras.utils import np_utils from keras import backend as K batch_size = 128 nb_classes = 10 nb_epoch = 12 # input image dimensions img_rows, img_cols = 28, 28 # number of convolutional filters to use nb_filters = 32 # size of pooling area for max pooling pool_size = (2, 2) # convolution kernel size kernel_size = (3, 3) # the data, shuffled and split between train and test sets (X_train, y_train), (X_test, y_test) = mnist.load_data() #import gzip #from six.moves import cPickle #path=r'C:\Users\ll\.keras\datasets\mnist.pkl.gz' #f = gzip.open(path, 'rb') #(X_train, y_train), (x_valid,y_valid),(X_test, y_test) = cPickle.load(f, encoding='bytes') #f.close() if K.image_dim_ordering() == 'th': X_train = X_train.reshape(X_train.shape[0], 1, img_rows, img_cols) X_test = X_test.reshape(X_test.shape[0], 1, img_rows, img_cols) input_shape = (1, img_rows, img_cols) else: X_train = X_train.reshape(X_train.shape[0], img_rows, img_cols, 1) X_test = X_test.reshape(X_test.shape[0], img_rows, img_cols, 1) input_shape = (img_rows, img_cols, 1) X_train = X_train.astype('float32') X_test = X_test.astype('float32') X_train /= 255 X_test /= 255 print('X_train shape:', X_train.shape) print(X_train.shape[0], 'train samples') print(X_test.shape[0], 'test samples') # convert class vectors to binary class matrices Y_train = np_utils.to_categorical(y_train, nb_classes) Y_test = np_utils.to_categorical(y_test, nb_classes) model = Sequential() model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1], border_mode='valid', input_shape=input_shape)) model.add(Activation('relu')) model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1])) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=pool_size)) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(128)) model.add(Activation('relu')) model.add(Dropout(0.5)) model.add(Dense(nb_classes)) model.add(Activation('softmax')) model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy']) model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=1, validation_data=(X_test, Y_test)) score = model.evaluate(X_test, Y_test, verbose=0) print('Test score:', score[0]) print('Test accuracy:', score[1])
相關推薦
Keras學習---資料預處理篇
1. 資料預處理是必要的,這裡以最簡單的MNIST dataset的輸入資料預處理為例。 A. 設定隨機種子 np.random.seed(1337) # for reproducibility B. 輸入資料維度規格化,這裡每個樣本只是si
機器學習資料預處理(sklearn庫系列函式)
【1】 sklearn.preprocessing.PolynomialFeatures PolynomialFeatures有三個引數 degree:控制多項式的度 interaction_
機器學習——資料預處理
基礎 機器學習主要有兩種,監督學習和非監督學習。監督學習就是督促計算機去學習,明確告訴它目標是什麼,非監督學習是讓計算機“自學成才”,沒有設定目標,學習完告訴我你學到了什麼 1 # encoding=utf-8 2 3 from sklearn import linear_model 4 im
學習資料預處理
# GB18030,全稱:國家標準GB18030 - 2005《資訊科技中文編碼字符集》,是中華人民共和國現時最新的內碼字集, # 是GB18030 - 2000《資訊科技資訊交換用漢字編碼字符集基本集的擴充》的修訂版。GB18030與GB2312 - 1980和GBK相容,共收錄漢字70244個
Python機器學習-資料預處理技術 標準化處理、歸一化、二值化、獨熱編碼、標記編碼總結
資料預處理技術 機器是看不懂絕大部分原始資料的,為了讓讓機器看懂,需要將原始資料進行預處理。 引入模組和資料 import numpy as np from sklearn import preprocessing data = np.array([[3,-1.5,2,-5.4], &nbs
深度學習-----資料預處理是必要的,一些經驗化的預處理措施
資料歸一化 更多詳細資訊,參照網址:非常值得一看: http://blog.csdn.net/qq_26898461/article/details/50463052 http://blog.csdn.net/bea_tree/article/details/5
【深度學習資料預處理2】使用Matlab批量生成聲譜圖
接上篇裁剪音樂檔案。給深度學習做資料準備,通過Matlab生成聲譜圖。 function cut_wavs(file_dir,output_dir,t,t_overlap) files=dir(file_dir); count=0; for i =3:le
閒扯淡之機器學習——資料預處理
上篇文章我們針對ML閒扯了一番,並在最後又借鑑Data Mining的CRISP-DM模型分析了一個ML專案的開發過程。 今天說點什麼呢?我猶豫了,我迷茫了!先給大家講個故事吧! 有一天你的boss找到你說:XX聽說你對ML很熟悉啊,正好我們公司有很多*
機器學習 第2篇:資料預處理(缺失值)
在真實的世界中,缺失資料是經常出現的,並可能對分析的結果造成影響。我們需要了解資料缺失的原因和資料缺失的型別,並從資料中識別缺失值,探索資料缺失的模式,進而處理缺失的資料。本文概述處理資料缺失的方法。 一,資料缺失的原因 首先我們應該知道:資料為什麼缺失?資料的缺失是我們無法避免的,可能的原因有很多種,博主總
機器學習 第3篇:資料預處理(使用插補法處理缺失值)
插補法可以在一定程度上減少偏差,常用的插補法是熱卡插補、擬合插補和多重插補。擬合插補,要求變數間存在強的相關性;多重插補(MCMC法),是在高缺失率下的首選插補方法,優點是考慮了缺失值的不確定性。 一,熱卡插補 熱卡填充(Hot deck imputation)也叫就近補齊,對於一個包含空值的物件,熱卡填充法
機器學習 第4篇:資料預處理(sklearn 插補缺失值)
由於各種原因,現實世界中的許多資料集都包含缺失值,通常把缺失值編碼為空白,NaN或其他佔位符。但是,此類資料集與scikit-learn估計器不相容,這是因為scikit-learn的估計器假定陣列中的所有值都是數字,並且都存在有價值的含義。如果必須使用不完整資料集,那麼處理缺失資料的基本策略是丟棄包含缺失值
機器學習一:資料預處理
最近一直在學習機器學習的知識,入門很難。之前跟著吳恩達老師的視訊在學習,發現還是有很多的知識點難以理解。前不久,《機器學習A-Z》出了中文翻譯,老師講的非常淺顯易懂,所以開始跟著學起來了。 為了能更系統的整理到學的知識進行一個整理,也作為一個自我監督,接下來就把較為系統的知識點都整理到部落格上。相應的程式碼
Python機器學習之資料預處理
# -*- coding: utf-8 -*- """ Created on Sat Sep 29 22:39:26 2018 @author: Lxiao217 email:[email protected] """ #資料預處理 #CSV(comma-srpared values,
機器學習中的資料預處理
資料的預處理總共可以大致分為6步。 匯入需要的庫 這兩個是我們每次都需要匯入的庫 Numpy包含數學計算函式 Pandas用於匯入和管理資料集 匯入資料集 資料集通常是.csv格式。csv檔案以文字形式儲存表格資料。檔案的每一行是一條資料記錄。我們使用pandas的r
程世東老師TensorFlow實戰——個性化推薦,程式碼學習筆記之資料匯入&資料預處理(上)
程式碼來自於知乎:https://zhuanlan.zhihu.com/p/32078473 /程式碼地址https://github.com/chengstone/movie_recommender/blob/master/movie_recommender.ipynb 下一篇有一些資料的
程世東老師TensorFlow實戰——個性化推薦,程式碼學習筆記之資料匯入&資料預處理(下)
這篇主要是進行程式碼中的一些數值視覺化,幫助理解 程式碼來自於知乎:https://zhuanlan.zhihu.com/p/32078473 /程式碼地址https://github.com/chengstone/movie_recommender/blob/master/movie_re
【ECG理論篇】(2)AI實現心律失常判別:心電資料預處理
我們做心律失常判別的第一步就是拿到資料後,對心電資料進行預處理,資料預處理的核心重點就是去除噪聲。那麼,我們首先就要了解一下心電資料中的噪聲來源 心電訊號資料中的噪聲來源 心電訊號資料中的噪聲主要可以分為三類:工頻干擾,基線漂移,肌電干擾 工頻干擾:工頻干擾主要是由
機器學習100天——資料預處理(第一天)
有個叫Avik Jain的老外在github上發起了一個100天學習機器學習的專案,每天花一個小時學習機器學習,學習內容由淺入深。今天是第一天,內容是如何進行資料預處理。該教程的程式語言是Python。 資料預處理分為6步: 第一步:匯入NumPy和Pandas庫。NumPy和Pandas是每次都
《深度學習網路訓練--第一講》資料採集與資料預處理
經過專案的實踐,我感受到要想訓練出一個性能優良的模型網路,資料採集與預處理是多麼的艱難與重要。 資料的採集 資料的採集是一個費時費力的過程。對於人臉資料來說,針對產品的應用場景,需要採集不同環境變數的人臉影象。對於我的經驗來說,公司想要做一個人臉識別的A
資料預處理程式碼分享——機器學習與資料探勘
資料預處理分為6步: 第1步:匯入NumPy和Pandas庫。NumPy和Pandas是每次都要匯入的庫,其中Numpy包含了數學計算函式,Pnadas是一個用於匯入和管理資料集(Data Sets)的類庫。 第2步:匯入資料集。資料集一般都是.csv格式,csv