numpy.meshgrid(),ravel(),contourf(),scater()理解

本文介绍了numpy库中的meshgrid()函数用于生成网格点坐标矩阵,ravel()进行扁平化操作,以及matplotlib.pyplot中的contourf()用于绘制等高线图,scatter()用于创建散点图。文章详细讲解了这些函数的用法和参数,并给出了实例示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

numpy.meshgrid()

作用:生成网格点坐标矩阵。
可以生成多维坐标矩阵。
例如:

xx, yy = np.meshgrid(np.arange(x_min,x_max,h),np.arange(y_min,y_max,h))

生成两个三维网格坐标矩阵。坐标参数:x_min,x_max,h。

ravel()

作用:扁平化操作。
例如:

from numpy import *

a = arange(12).reshape(3,4)
print(a)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]
print(a.ravel())
 # [ 0  1  2  3  4  5  6  7  8  9 10 11]

如果用flatten()结果也是一样的。

print(a.flatten())
# [ 0  1  2  3  4  5  6  7  8  9 10 11]

ravel()和flatten()区别

可以看到这两个函数实现的功能一样,但平时使用的时候flatten()更为合适。在使用过程中flatten()分配了新的内存,但ravel()返回的是一个数组的视图

from numpy import *

a = arange(12).reshape(3,4)
print(a)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

# 创建一个和a相同内容的数组b
b =
好的,您的问题是如何在模型中分别加入'l1'和'l2'正则项,观察决策边界的变化情况,以及训练集和测试集分数,体会两种正则项对模型的作用。 可以通过LogisticRegression模型的参数penalty来设置正则项类型,'l1'代表L1正则化,'l2'代表L2正则化。我们可以分别创建两个LogisticRegression模型,一个使用L1正则化,另一个使用L2正则化。具体代码如下: ```python # 使用L1正则化训练LogisticRegression模型 clf_l1 = LogisticRegression(penalty='l1') clf_l1.fit(X_poly, y) score_l1 = clf_l1.score(X_poly, y) # 使用L2正则化训练LogisticRegression模型 clf_l2 = LogisticRegression(penalty='l2') clf_l2.fit(X_poly, y) score_l2 = clf_l2.score(X_poly, y) ``` 我们还可以绘制两种正则化的决策边界,以及训练集和测试集的分数。具体代码如下: ```python # 绘制L1正则化的决策边界 Z_l1 = clf_l1.predict(poly.transform(np.c_[xx.ravel(), yy.ravel()])) Z_l1 = Z_l1.reshape(xx.shape) plt.contourf(xx, yy, Z_l1, cmap=plt.cm.Spectral, alpha=0.8) plt.scatter(X[:,0], X[:,1], c=y, cmap=plt.cm.Spectral) plt.title('L1 regularization (Train Score: {:.2f})'.format(score_l1)) plt.show() # 绘制L2正则化的决策边界 Z_l2 = clf_l2.predict(poly.transform(np.c_[xx.ravel(), yy.ravel()])) Z_l2 = Z_l2.reshape(xx.shape) plt.contourf(xx, yy, Z_l2, cmap=plt.cm.Spectral, alpha=0.8) plt.scatter(X[:,0], X[:,1], c=y, cmap=plt.cm.Spectral) plt.title('L2 regularization (Train Score: {:.2f})'.format(score_l2)) plt.show() ``` 通过观察决策边界及训练集和测试集分数可以发现,L1正则化可以使得模型更加稀疏,即某些特征系数会被压缩到0,从而减少模型的复杂度,避免过拟合;而L2正则化可以使得模型的系数更加平滑,避免出现过大的系数,同样也可以避免过拟合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值