iT邦幫忙

2023 iThome 鐵人賽

DAY 3
1
AI & Data

深入探索AI模型系列 第 3

【Day 03】 MLP實作

  • 分享至 

  • xImage
  •  

講完MLP的理論過後,我們來利用python來實作簡單的MLP,看看應該怎麼在python上實際應用。為了方便使用,我們選擇採用python中scikit-learn最著名的iris鳶尾花資料集進行預測。

一開始我們直接引入scikit-learn中的datasets,將鳶尾花的資料給讀出來。之後利用pandas套件將資料轉換成pandas中的dataframe資料型態,這樣可以更好的觀察我們的資料長什麼樣子。

from sklearn import datasets
import pandas as pd

iris = datasets.load_iris()
features = pd.DataFrame(data = iris.data, columns = iris.feature_names)
labels = pd.DataFrame(data = iris.target)

display(features)
display(labels)

以下兩張圖片便是利用pandas中的display函式來展示dataframe,可以看到我們的features有sepal length(cm)萼片長度、sepal width(cm)萼片寬度、petal length(cm)花瓣長度以及petal width(cm)花瓣寬度。
https://ithelp.ithome.com.tw/upload/images/20230709/2015078458yu4g1nLz.png
https://ithelp.ithome.com.tw/upload/images/20230709/20150784ZmTx5RRez1.png

將資料分為features以及labels過後,利用scikit-learn中的train_test_split函式將訓練及以及測試及給分開,筆者此處所採用的比例為訓練集:測試集 = 2 : 1(程式碼中為test_size = 0.33))。

from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(features, labels, test_size = 0.33, random_state = 42)

有了訓練集以及測試集過後,我們就可以利用scikit-learn來訓練我們的MLP模型啦!首先宣告一個MLPClassifier物件,但目前這只代表一個空的模型,我們還需要給他訓練集feature以及label,讓模型學習應該如何去做判斷。

from sklearn.neural_network import MLPClassifier

clf = MLPClassifier()
clf.fit(x_train, y_train)

訓練完模型過後,我們先定義一個函式accuracy,等等就可以直接用這個函式來看預測的準確度是多少。

def accuracy(predict, real):
    n = 0
    for i in range(len(predict)):
        if (predict[i] == real[i]):
            n += 1
    
    return n / len(predict)

我們利用predict函式先得出對於x_test的預測結果,之後將結果跟正確答案y_test丟進剛剛定義的accuracy函式,就可以印出結果,筆者這邊所得出的結果為98%,可以得出結論scikit-learn的鳶尾花資料適合使用MLP模型來預測。

result = clf.predict(x_test)
print(f"Accuracy: {accuracy(result, y_test[0].values) * 100} %")

如果懶得自己定義函式來看正確率的話,scikit-learn其實也有提供函式來做計算正確率的功能。我們可以直接將預測結果和正確結果丟進accuracy_score函式中,就會得出正確率囉!

from sklearn.metrics import accuracy_score

result = clf.predict(x_test)
print(f"Accuract: {accuracy_score(result, y_test) * 100} %")

上一篇
【Day 02】 MLP(多層感知機Multi-Layer Perceptron)
下一篇
【Day 04】 CNN(卷積神經網路Convolution Neural Network)
系列文
深入探索AI模型30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
whoami
iT邦新手 2 級 ‧ 2023-09-03 13:36:34

Ya. Keep going ~

我要留言

立即登入留言