keras入門 簡單資料集的運用

2021-08-09 04:28:50 字數 4163 閱讀 5203

keras:

keras是乙個高層神經網路api,keras由純python編寫而成並基tensorflow、theano以及cntk後端。keras為支援快速實驗而生.

keras的核心資料結構是「模型」,模型是一種組織網路層的方式。keras中主要的模型是sequential模型,sequential是一系列網路層按順序構成的棧。

下面我就用兩個經典資料集iris 和 mnist 來解釋keras是如何完成邏輯分類的

iris

# coding=utf-8

import matplotlib.pyplot as plt

import seaborn as sns

import numpy as np

from sklearn.cross_validation import train_test_split

from sklearn.linear_model import logisticregressioncv

from keras.models import sequential

from keras.layers.core import dense, activation

from keras.utils import np_utils

這裡用到sklearn的兩種切分資料集的方法:

from sklearn.model_selection import shufflesplit

rs = shufflesplit(n_splits=1, train_size=0.6, test_size=0.4, random_state=1)

#n_splits表示只需要乙個樣本結果,現在訓練-驗證集比例為: 6:4, random_state為洗牌次數

rs.get_n_splits(x)

x_trainset = none

x_testset = none

y_trainset = none

y_testset = none

for train_index, test_index in rs.split(x, y):

x_trainset, x_testset = x[train_index], x[test_index]

y_trainset, y_testset = y[train_index], y[test_index]

from sklearn.cross_validation import train_test_split

train_x, test_x, train_y, test_y = train_test_split(x, y, train_size=0.1, random_state=0)

#隨機切分

所有的y都轉化為one-hot函式:

def one_hot_encode_object_array(arr):

uniques, ids = np.unique(arr, return_inverse=true)

return np_utils.to_categorical(ids, len(uniques))

iris = sns.load_dataset("iris")

# 匯入資料集iris

x = iris.values[:, :4]

y = iris.values[:, 4]

#劃分資料集

train_x, test_x, train_y, test_y = train_test_split(x, y, train_size=0.6, random_state=0)

print train_x

train_y_ohe = one_hot_encode_object_array(train_y)

test_y_ohe = one_hot_encode_object_array(test_y)

模型:

#定義模型

model = sequential()

# 輸入層大小,隱含層大小,啟用函式

model.add(dense(200,input_shape=(4,)))

model.add(activation('relu'))

#輸出層大小,啟用函式,兩層網路

model.add(dense(3))

model.add(activation('softmax'))

#編譯模型

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=["accuracy"])

#訓練模型

model.fit(train_x, train_y_ohe, nb_epoch=100, batch_size=1, verbose=1)

#評估模型成績

# predict_y = model.predict_proba(test_x)

# print predict_y

loss, accuracy = model.evaluate(test_x,test_y_ohe,verbose=0)

print ("accuracy = ".format(accuracy))

mnist:

import numpy as np

import keras

np.random.seed(1337)

#隨機種子

from keras.datasets import mnist

from keras.models import sequential

from keras.layers import dense

from keras.utils import np_utils

batch_size = 128

nb_classes = 10

#類別,數字0-9

np_epoch = 10

#梯度下降迴圈訓練次數

img_size = 28*28

#輸入大小

(x_train,y_train),(x_test,y_test) = mnist.load_data()

#載入資料集,已經劃分好,shuffle-split

x_train = x_train.reshape(y_train.shape[0],img_size).astype("float32")/255

x_test = x_test.reshape(y_test.shape[0],img_size).astype("float32")/255

#生成向量,顏色1-255

print x_train.shape

print x_test.shape

#老規矩,把y變為one-hot編碼

y_train = np_utils.to_categorical(y_train,nb_classes)

y_test = np_utils.to_categorical(y_test,nb_classes)

model = sequential([dense(10,input_shape=(img_size,),activation="softmax"),])

#優化模型,隨機梯度下降(rmsprop),loss_funtion(交叉熵)

model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])

model.fit(x_train,y_train,batch_size=batch_size,nb_epoch=1,verbose=1,validation_data=(x_test,y_test))

評估模型成績:

score = model.evaluate(x_test,y_test,verbose=0)

print ('accuracy:{}'.format(score[1]))

my github:

入門簡單資料探勘步驟

由於自己是資料分析與大資料技術專業的,並且最近剛入門資料探勘與機器學習,如有不當之處希望各位讀者指正。在本文開始之前先引入幾個概念。資料集 是資料的集合,所謂的集合表現就是一張資料庫 例如excel表 乙個資料庫 例如會員庫 乙個資料檔案 例如.csv檔案 等,iris.csv就是乙個資料集,裡面包...

keras筆記 mnist資料集上的簡單訓練

學習了keras已經好幾天了,之前一直拒絕使用keras,但是現在感覺keras是真的好用啊,可以去嘗試一下啊。首先展示的第乙個 還是mnist資料集的訓練和測試,以下是 from keras.models import sequential from keras.layers.core impor...

MySQL入門之簡單資料查詢

include include include include include int main con mysql real connect mysql,localhost root 123456 mydb2 0,null,0 if con null else 執行sql查詢 mysql quer...