感知機學習 鳶尾花二分類

2021-10-05 09:26:41 字數 3207 閱讀 1662

感知機二分類模型:?(?)=sign(?⋅?+?)

最小化損失函式:

import pandas as pd

import numpy as np

from sklearn.datasets import load_iris

import matplotlib.pyplot as plt

載入資料集:

iris = load_iris(

)

iris:

『target_names』: array([『setosa』, 『versicolor』, 『virginica』]

『feature_names』: [『sepal length (cm)』, 『sepal width (cm)』, 『petal length (cm)』, 『petal width (cm)』]

將資料以**的形式展示:

加上標籤:

座標圖展示兩類鳶尾花:

plt.scatter(df[:50

]['sepal length'

], df[:50

]['sepal width'

], label=

'0')

plt.scatter(df[50:

100]

['sepal length'

], df[50:

100]

['sepal width'

],label=

'1')

plt.xlabel(

"sepal length"

)plt.ylabel(

"sepal width"

)plt.legend(

)#顯示圖例

提取資料:

data = np.array(df.iloc[

:100,[

0,1,

-1]]

)#提取前100行,第0,1 ,最後一列的資料

x, y = data[:,

:-1]

, data[:,

-1]#x取第0,1列的資料,y取最後一列的資料

y = np.array([1

if i ==

1else-1

for i in y]

)#將y的標籤設定為1或者-1

感知機模型訓練:

class

model

:def

__init__

(self)

: self.w = np.ones(

len(data[0]

)-1, dtype=np.float32)

self.b =

0 self.rate =

0.1def

sign

(self, x, w, b)

: y = np.dot(x, w)

+ b return y

deffit(self, x_train, y_train)

: is_wrong =

false

while

not is_wrong:

wrong_count =

0for d in

range

(len

(x_train)):

x = x_train[d]

y = y_train[d]

if y * self.sign(x, self.w, self.b)

<=0:

self.w = self.w + self.rate * np.dot(y,x)

self.b = self.b + self.rate * y

wrong_count +=

1if wrong_count ==0:

is_wrong =

true

return

"success"

結果:

perceptron = model(

)perceptron.fit(x, y)

x = np.linspace(4,

7,10)

y =-

(perceptron.w[0]

* x + perceptron.b)

/ perceptron.w[1]

plt.plot(x,y)

plt.plot(data[:50

,0],data[:50

,1],

'bo'

, color=

"blue"

, label=

"0")

plt.plot(data[50:

100,0]

,data[50:

100,1]

,'bo'

,color=

"red"

, label=

"1")

plt.xlabel(

"sepal length"

)plt.ylabel(

"sepal width"

)plt.legend(

)

dataframe

iloc

**參考自

Python 機器學習 鳶尾花分類

python 機器學習 鳶尾花分類 匯入類庫 from pandas import read csv from pandas.plotting import scatter matrix from matplotlib import pyplot from sklearn.model selecti...

感知機algorithm實現鳶尾花資料集分類

感知機是乙個非常基礎的二分類的演算法,是演算法小白入門機器學習的必學內容,是神經網路和svm的基礎。好了,不蝦扯蛋了,上 感知機實現鳶尾花資料集的分類 import pandas as pd import numpy as np from sklearn.datasets import load i...

鳶尾花分類 機器學習 鳶尾花資料集 貝葉斯分類

step1 庫函式匯入 import warnings warnings.filterwarnings ignore import numpy as np 載入鶯尾花資料集 from sklearn import datasets 匯入高斯樸素貝葉斯分類器 from sklearn.bayes im...