亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

高斯核解決分類問題

2024-11-25 09:28:30
3
0
import numpy as np
import matplotlib.pyplot as plt

# 構建樣本數據,x值從-4到5,每個數間隔為1
x = np.arange(-4, 5, 1)
# 結果 array([-4, -3, -2, -1, 0, 1, 2, 3, 4])

# y構建為0,1 向量,且是線性不可分的
y = np.array((x >= -2) & (x <= 2), dtype='int')
# 結果 array([0, 0, 1, 1, 1, 1, 1, 0, 0])

# 繪制樣本數據
print(y == 0) # [ True True False False False False False True True]
print(x[y == 0]) # [-4 -3 3 4]
print(x[y == 1]) # [-2 -1 0 1 2]
plt.scatter(x[y == 0], [0] * len(x[y == 0]))
plt.scatter(x[y == 1], [0] * len(x[y == 1]))
plt.show()


def f0():
X_new = np.copy(x)
Y_new = np.copy(x)
for i, data in enumerate(Y_new):
Y_new[i] = Y_new[i] * Y_new[i]

# 繪制新的樣本點
plt.scatter(X_new[y == 0], Y_new[y == 0])
plt.scatter(X_new[y == 1], Y_new[y == 1])
plt.show()


"""
1. 在 NumPy 中,X[y == 1] 是一種索引操作,用于從數組 X 中選擇那些在數組 y 中對應位置的值為 1 的元素。這種操作通常用于根據某個條件篩選數據。
2. 如果你多次調用 plt.scatter 而不指定顏色,matplotlib 會使用默認的顏色循環來為每個散點圖分配不同的顏色。默認的顏色循環是 ['C0', 'C1', 'C2', ...],其中 C0 通常對應于藍色,C1 對應于橙色,依此類推。
"""
f0()


def f1():
def gaussian(x, l):
# 這一節對gamma先不做探討,先定為1
gamma = 1.0
# 這里x-l是一個數,不是向量,所以不需要取模
return np.exp(-gamma * (x - l) ** 2)

# 將每一個x值通過高斯核函數和l1,l2地標轉換為2個值,構建成新的樣本數據
l1, l2 = -1, 1
X_new = np.empty((len(x), 2))
for i, data in enumerate(x):
X_new[i, 0] = gaussian(data, l1)
X_new[i, 1] = gaussian(data, l2)

# 繪制新的樣本點
# X_new 有9條數據,但只把 y=0的 4 條繪制出來
plt.scatter(X_new[y == 0, 0], X_new[y == 0, 1])
# X_new 有9條數據,但只把 y=1的 5 條繪制出來
plt.scatter(X_new[y == 1, 0], X_new[y == 1, 1])
plt.show()


# 調用f1
f1()


def f2():
# pip install scikit-learn
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets

X, y = datasets.make_moons(noise=0.15, random_state=666)

plt.scatter(X[y == 0, 0], X[y == 0, 1])
plt.scatter(X[y == 1, 0], X[y == 1, 1])
plt.show()

from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline

def RBFKernelSVC(gamma=1.0):
return Pipeline([("std_scaler", StandardScaler()), ("svc", SVC(kernel="rbf", gamma=gamma))])

# 將gamma取1
rbf_svc = RBFKernelSVC(gamma=1)
rbf_svc.fit(X, y)

def plot_decision_boundary(model, axis):
# meshgrid函數用兩個坐標軸上的點在平面上畫格,返回坐標矩陣
X0, X1 = np.meshgrid(
# 隨機兩組數,起始值和密度由坐標軸的起始值決定
np.linspace(axis[0], axis[1], int((axis[1] - axis[0]) * 100)).reshape(-1, 1),
np.linspace(axis[2], axis[3], int((axis[3] - axis[2]) * 100)).reshape(-1, 1),
)
# ravel()方法將高維數組降為一維數組,c_[]將兩個數組以列的形式拼接起來,形成矩陣
X_grid_matrix = np.c_[X0.ravel(), X1.ravel()]

# 通過訓練好的邏輯回歸模型,預測平面上這些點的分類
y_predict = model.predict(X_grid_matrix)
y_predict_matrix = y_predict.reshape(X0.shape)

# 設置色彩表
from matplotlib.colors import ListedColormap
my_colormap = ListedColormap(['#0000CD', '#40E0D0', '#FFFF00'])

# 繪制等高線,并且填充等高區域的顏色
plt.contourf(X0, X1, y_predict_matrix, linewidth=5, cmap=my_colormap)

plot_decision_boundary(rbf_svc, axis=[-1.5, 2.5, -1.0, 1.5])
plt.scatter(X[y == 0, 0], X[y == 0, 1])
plt.scatter(X[y == 1, 0], X[y == 1, 1])
plt.show()

# 將gamma取100
rbf_svc100 = RBFKernelSVC(gamma=100)
rbf_svc100.fit(X, y)

plot_decision_boundary(rbf_svc100, axis=[-1.5, 2.5, -1.0, 1.5])
plt.scatter(X[y == 0, 0], X[y == 0, 1])
plt.scatter(X[y == 1, 0], X[y == 1, 1])
plt.show()

# 將gamma取0.1
rbf_svc01 = RBFKernelSVC(gamma=0.1)
rbf_svc01.fit(X, y)

plot_decision_boundary(rbf_svc01, axis=[-1.5, 2.5, -1.0, 1.5])
plt.scatter(X[y == 0, 0], X[y == 0, 1])
plt.scatter(X[y == 1, 0], X[y == 1, 1])
plt.show()


# 調用f2
f2()
0條評論
作者已關閉評論
Top123
32文章數
3粉絲數
Top123
32 文章 | 3 粉絲
Top123
32文章數
3粉絲數
Top123
32 文章 | 3 粉絲
原創

高斯核解決分類問題

2024-11-25 09:28:30
3
0
import numpy as np
import matplotlib.pyplot as plt

# 構建樣本數據,x值從-4到5,每個數間隔為1
x = np.arange(-4, 5, 1)
# 結果 array([-4, -3, -2, -1, 0, 1, 2, 3, 4])

# y構建為0,1 向量,且是線性不可分的
y = np.array((x >= -2) & (x <= 2), dtype='int')
# 結果 array([0, 0, 1, 1, 1, 1, 1, 0, 0])

# 繪制樣本數據
print(y == 0) # [ True True False False False False False True True]
print(x[y == 0]) # [-4 -3 3 4]
print(x[y == 1]) # [-2 -1 0 1 2]
plt.scatter(x[y == 0], [0] * len(x[y == 0]))
plt.scatter(x[y == 1], [0] * len(x[y == 1]))
plt.show()


def f0():
X_new = np.copy(x)
Y_new = np.copy(x)
for i, data in enumerate(Y_new):
Y_new[i] = Y_new[i] * Y_new[i]

# 繪制新的樣本點
plt.scatter(X_new[y == 0], Y_new[y == 0])
plt.scatter(X_new[y == 1], Y_new[y == 1])
plt.show()


"""
1. 在 NumPy 中,X[y == 1] 是一種索引操作,用于從數組 X 中選擇那些在數組 y 中對應位置的值為 1 的元素。這種操作通常用于根據某個條件篩選數據。
2. 如果你多次調用 plt.scatter 而不指定顏色,matplotlib 會使用默認的顏色循環來為每個散點圖分配不同的顏色。默認的顏色循環是 ['C0', 'C1', 'C2', ...],其中 C0 通常對應于藍色,C1 對應于橙色,依此類推。
"""
f0()


def f1():
def gaussian(x, l):
# 這一節對gamma先不做探討,先定為1
gamma = 1.0
# 這里x-l是一個數,不是向量,所以不需要取模
return np.exp(-gamma * (x - l) ** 2)

# 將每一個x值通過高斯核函數和l1,l2地標轉換為2個值,構建成新的樣本數據
l1, l2 = -1, 1
X_new = np.empty((len(x), 2))
for i, data in enumerate(x):
X_new[i, 0] = gaussian(data, l1)
X_new[i, 1] = gaussian(data, l2)

# 繪制新的樣本點
# X_new 有9條數據,但只把 y=0的 4 條繪制出來
plt.scatter(X_new[y == 0, 0], X_new[y == 0, 1])
# X_new 有9條數據,但只把 y=1的 5 條繪制出來
plt.scatter(X_new[y == 1, 0], X_new[y == 1, 1])
plt.show()


# 調用f1
f1()


def f2():
# pip install scikit-learn
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets

X, y = datasets.make_moons(noise=0.15, random_state=666)

plt.scatter(X[y == 0, 0], X[y == 0, 1])
plt.scatter(X[y == 1, 0], X[y == 1, 1])
plt.show()

from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline

def RBFKernelSVC(gamma=1.0):
return Pipeline([("std_scaler", StandardScaler()), ("svc", SVC(kernel="rbf", gamma=gamma))])

# 將gamma取1
rbf_svc = RBFKernelSVC(gamma=1)
rbf_svc.fit(X, y)

def plot_decision_boundary(model, axis):
# meshgrid函數用兩個坐標軸上的點在平面上畫格,返回坐標矩陣
X0, X1 = np.meshgrid(
# 隨機兩組數,起始值和密度由坐標軸的起始值決定
np.linspace(axis[0], axis[1], int((axis[1] - axis[0]) * 100)).reshape(-1, 1),
np.linspace(axis[2], axis[3], int((axis[3] - axis[2]) * 100)).reshape(-1, 1),
)
# ravel()方法將高維數組降為一維數組,c_[]將兩個數組以列的形式拼接起來,形成矩陣
X_grid_matrix = np.c_[X0.ravel(), X1.ravel()]

# 通過訓練好的邏輯回歸模型,預測平面上這些點的分類
y_predict = model.predict(X_grid_matrix)
y_predict_matrix = y_predict.reshape(X0.shape)

# 設置色彩表
from matplotlib.colors import ListedColormap
my_colormap = ListedColormap(['#0000CD', '#40E0D0', '#FFFF00'])

# 繪制等高線,并且填充等高區域的顏色
plt.contourf(X0, X1, y_predict_matrix, linewidth=5, cmap=my_colormap)

plot_decision_boundary(rbf_svc, axis=[-1.5, 2.5, -1.0, 1.5])
plt.scatter(X[y == 0, 0], X[y == 0, 1])
plt.scatter(X[y == 1, 0], X[y == 1, 1])
plt.show()

# 將gamma取100
rbf_svc100 = RBFKernelSVC(gamma=100)
rbf_svc100.fit(X, y)

plot_decision_boundary(rbf_svc100, axis=[-1.5, 2.5, -1.0, 1.5])
plt.scatter(X[y == 0, 0], X[y == 0, 1])
plt.scatter(X[y == 1, 0], X[y == 1, 1])
plt.show()

# 將gamma取0.1
rbf_svc01 = RBFKernelSVC(gamma=0.1)
rbf_svc01.fit(X, y)

plot_decision_boundary(rbf_svc01, axis=[-1.5, 2.5, -1.0, 1.5])
plt.scatter(X[y == 0, 0], X[y == 0, 1])
plt.scatter(X[y == 1, 0], X[y == 1, 1])
plt.show()


# 調用f2
f2()
文章來自個人專欄
文章 | 訂閱
0條評論
作者已關閉評論
作者已關閉評論
0
0