利用MATLAB绘制原点在中间的sigmoid函数
时间: 2023-03-28 07:00:22 浏览: 118
好的,我可以回答这个问题。以下是利用MATLAB绘制原点在中间的sigmoid函数的代码:
x = -10:.1:10;
y = 1./(1+exp(-x));
plot(x,y);
axis([-10 10 -.5 1.5]);
xlabel('x');
ylabel('y');
title('Sigmoid Function');
希望这个回答能够帮到你!
相关问题
python写一段关于鸢尾花的代码,要求绘制散点图,sigmoid函数,损失函数绘制决策边界
以下是一段Python代码,用于绘制鸢尾花数据集的散点图,并使用sigmoid函数和损失函数绘制决策边界:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
# 加载数据集
iris = load_iris()
X = iris.data[:, (2, 3)] # 萼片长度和宽度
y = (iris.target == 0).astype(np.int) # 目标变量为是否为山鸢尾花
# 绘制散点图
plt.scatter(X[:, 0][y==0], X[:, 1][y==0], c='r', marker='o', label='Not Iris Setosa')
plt.scatter(X[:, 0][y==1], X[:, 1][y==1], c='b', marker='x', label='Iris Setosa')
plt.xlabel('Petal Length')
plt.ylabel('Petal Width')
plt.legend()
# sigmoid函数
def sigmoid(z):
return 1 / (1 + np.exp(-z))
# 损失函数
def loss(y_true, y_pred):
return -np.mean(y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred))
# 初始化参数
theta = np.random.randn(2, 1)
# 训练模型
epochs = 1000
lr = 0.01
for epoch in range(epochs):
z = X.dot(theta)
y_pred = sigmoid(z)
gradient = X.T.dot(y_pred - y) / len(y)
theta -= lr * gradient
if epoch % 100 == 0:
print(f'Epoch {epoch}, Loss {loss(y, y_pred)}')
# 绘制决策边界
x1 = np.linspace(0, 7, 100)
x2 = -(theta[0] + theta[1] * x1) / theta[1]
plt.plot(x1, x2, 'g-', label='Decision Boundary')
plt.legend()
plt.show()
```
该代码首先加载鸢尾花数据集,并绘制出散点图,其中红色点表示非山鸢尾花,蓝色点表示山鸢尾花。
接着,代码定义了sigmoid函数和损失函数,用于训练模型和绘制决策边界。
模型训练使用了梯度下降算法,通过不断调整模型参数theta来最小化损失函数。训练过程中,代码每100个epoch打印一次损失函数值。
最后,代码使用训练得到的模型参数theta绘制决策边界。决策边界是一个直线,它将萼片长度和宽度空间分成两个区域,分别对应山鸢尾花和非山鸢尾花。
matlab 都可以使用sigmoid函数吗
是的,Matlab可以使用sigmoid函数。sigmoid函数是一种常用的非线性激活函数,常用于神经网络的隐藏层和输出层。在Matlab里,可以使用“sigmoid”函数来实现sigmoid函数的计算。示例代码如下:
```
x = -10:0.1:10;
y = sigmoid(x);
plot(x,y);
```
其中,x为输入数据,y为对应的sigmoid输出结果。该代码将sigmoid函数的图像绘制出来。
阅读全文