用 numpy 和 matplotlib 绘制一个log函数曲线图,要求符合: (1) x、y 的数据点数量为 100; (2) 曲线图为散点图,即每个数据组合(x,y)显示为一个圆点。
时间: 2024-05-06 08:20:06 浏览: 123
以下是代码实现:
```python
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0.1, 10, 100)
y = np.log(x)
plt.scatter(x, y)
plt.show()
```
解释:
首先使用 numpy 的 linspace 函数生成从 0.1 到 10 的 100 个等间距数据点,然后使用 numpy 的 log 函数计算对数值,最后使用 matplotlib 的 scatter 函数绘制散点图。最后调用 show 函数展示图像。
相关问题
matplotlib绘制对数函数
在Python中,`matplotlib`是一个非常流行的用于数据可视化的库。要使用`matplotlib`绘制对数函数,首先你需要安装这个库(如果你还没有安装的话),可以通过pip命令安装:
```bash
pip install matplotlib
```
然后,你可以使用`pyplot`模块中的`semilogy()`函数来绘制对数y轴的线图,`semilogx()`函数则用来绘制对数x轴的线图。这里有一个简单的例子,展示如何绘制正弦函数作为对数函数的例子:
```python
import numpy as np
import matplotlib.pyplot as plt
# 创建等差数列,范围从1到100
x = np.logspace(0, 2, 100) # 对数空间
# 计算对应于x的对数函数值(例如,对数正弦函数 y = log(sin(x)))
y = np.log(np.sin(x))
# 创建一个新的图形窗口
plt.figure()
# 使用semilogy()函数绘制对数y轴曲线
plt.semilogy(x, y, label='Logarithmic Sine')
# 添加标题和标签
plt.title('Plot of Logarithmic Sine Function')
plt.xlabel('Logarithmic Scale (X)')
plt.ylabel('Logarithmic Scale (Y)')
# 显示图例并显示图像
plt.legend()
plt.grid(True) # 添加网格
plt.show()
```
在这个例子中,`semilogy()`函数将y轴设置为对数坐标,而x轴保持常规线性坐标。执行上述代码后,你应该会看到一个对数正弦函数的可视化图表。
用python+numpy编程实现逻辑回归模型,在给定数据集上,绘制损失函数曲线图。使用混淆矩阵、错误率、精度、查全率、查准率、F1指标评估逻辑回归模型性能表现,初始权值w为0,写出代码
好的,我可以回答你的问题。以下是实现逻辑回归模型的 Python 代码示例,包括绘制损失函数曲线图和评估模型性能表现的指标:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义sigmoid函数
def sigmoid(z):
return 1 / (1 + np.exp(-z))
# 定义损失函数
def loss(y_hat, y):
return (-y * np.log(y_hat) - (1 - y) * np.log(1 - y_hat)).mean()
# 定义逻辑回归模型和梯度下降算法
def logistic_regression(X, y, lr=0.01, num_iters=1000):
m, n = X.shape
w = np.zeros((n, 1))
b = 0
cost_list = []
for i in range(num_iters):
# 计算预测值和损失函数
y_hat = sigmoid(np.dot(X, w) + b)
J = loss(y_hat, y)
cost_list.append(J)
# 计算梯度并更新参数
dw = np.dot(X.T, (y_hat - y)) / m
db = np.mean(y_hat - y)
w -= lr * dw
b -= lr * db
return w, b, cost_list
# 生成一个样本数据集
np.random.seed(0)
m = 100
X = np.random.randn(m, 2)
w_true = np.array([[1], [2]])
b_true = 3
y_true = sigmoid(np.dot(X, w_true) + b_true) > 0.5
y_true = y_true.astype(int)
# 初始化模型参数并进行训练
w_init = np.zeros((2, 1))
b_init = 0
w_trained, b_trained, cost_list = logistic_regression(X, y_true, lr=0.1, num_iters=1000)
# 绘制损失函数曲线图
plt.plot(cost_list)
plt.xlabel('Iteration')
plt.ylabel('Cost')
plt.show()
# 评估模型性能表现
y_pred = sigmoid(np.dot(X, w_trained) + b_trained) > 0.5
y_pred = y_pred.astype(int)
TP = np.sum((y_pred == 1) & (y_true == 1))
FP = np.sum((y_pred == 1) & (y_true == 0))
TN = np.sum((y_pred == 0) & (y_true == 0))
FN = np.sum((y_pred == 0) & (y_true == 1))
accuracy = (TP + TN) / (TP + FP + TN + FN)
error_rate = (FP + FN) / (TP + FP + TN + FN)
precision = TP / (TP + FP)
recall = TP / (TP + FN)
F1 = 2 * precision * recall / (precision + recall)
print('Accuracy: {:.2f}'.format(accuracy))
print('Error rate: {:.2f}'.format(error_rate))
print('Precision: {:.2f}'.format(precision))
print('Recall: {:.2f}'.format(recall))
print('F1 score: {:.2f}'.format(F1))
```
阅读全文