感知機二分類模型:?(?)=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...