机器学习测试笔记(25)——数据表达(下)

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 机器学习测试笔记(25)——数据表达(下)

3数据升维我们


在数据升维中,统计建模方式分为交互性特征(Interaction Feature)和多项式特征(Polynomial Featur)


3.1交互性特征(Interaction Feature)

array_1 = [0,1,2,3,4]
array_2 = [5,6,7,8,9]
array3 = np.hstack((array_1,array_2))
print("将数组2添加到数据1后面去得到:\n{}".format(array3))


输出

将数组2添加到数据1后面去得到:

[0 1 2 3 4 5 6 7 8 9]


可以发现,通过hstack,把两个数组合并为了一个数组。


#将原始数据和装箱数据进行堆叠
X_stack = np.hstack([X,X_in_bin])
print("X.shape:\n",X.shape)
print("X_in_bin.shape:\n",X_in_bin.shape)
print("X_stack.shape:\n",X_stack.shape)


输出

X.shape:
 (50, 1)
X_in_bin.shape:
 (50, 10)
X_stack.shape:
 (50, 11)


X_stack仍旧为50个数据,但是特征数为原始特征数1+装箱后特征数10=11。接下来我们将数据进行堆叠,用MLPRegressor进行拟合。


#将数据进行堆叠
        line_stack =np.hstack([line,onehot_line])
        mlpr_interact =MLPRegressor().fit(X_stack,y)
       plt.plot(line,mlpr_interact.predict(line_stack),label='MLP forinteraction')
        plt.ylim(-4,4)
for vline in bins:
               plt.plot([vline,vline],[-5,5],":",c='k')
        plt.legend(loc='lowerright')
       plt.plot(X,y,"o",c='g')
        plt.show()

image.png


我们发现,每一个箱子中的斜率加大了,但是由于刚才使用的是np.hstack([X,X_in_bin])进行堆叠,所以它们的斜率是一致的。现在我们使用np.hstack([X_in_bin,X*X_in_bin]) 进行堆叠。


#使用新的叠堆方式处理数据
X_multi = np.hstack([X_in_bin,X*X_in_bin])
print("X_multi.shape:\n",X_multi.shape)
print("X_multi[0]:\n",X_multi[0])


输出


X_multi.shape:
 (50, 20)
X_multi[0]:
 [0.         0.         0.         0.         0.         0.
 0.         0.         0.         1.        0.         0.
 0.         0.         0.         0.         0.         0.
 0.        4.84191851]


我们可以看见,它包含了原始数据4.84191851OneHotEncoder独热编码后的哑变量1。接下来我们用这种堆叠进行拟合。


mlpr_multi = MLPRegressor().fit(X_multi,y)
line_multi =np.hstack([onehot_line,line*onehot_line])
plt.plot(line,mlpr_multi.predict(line_multi),label='MLP for Regressor')
plt.ylim(-4,4)
for vline in bins:
       plt.plot([vline,vline],[-5,5],":",c='k')
plt.legend(loc='lowerright')
plt.plot(X,y,"o",c='g')
plt.show()

image.png


这样,每一个箱子中的斜率不为0,且每个箱子中的斜率也不一样。大家可以发现经过这样处理后原先MLP简单的线性拟合直线被分割成了10段直线,且每段直线的斜率不同,这样就可以把一个简单的模型复杂化。大家都知道,线性模型在高维数据中表现良好,而在低维数据中就变现不佳,通过数据升维可以让线性模型更好处理低维数据。


3.2多项式特征(Polynomial Featur)

ax4+bx3+cx2+dx+e是一个典型的多项式。

 rnd = np.random.RandomState(56)
  x =rnd.uniform(-5,5,size=50)
  X = x.reshape(-1,1)
  y_no_noise = (np.cos(6*x)+x)
  y = (y_no_noise +rnd.normal(size=len(x)))/2
  poly = PolynomialFeatures(degree=20,include_bias=False)
  X_poly = poly.fit_transform(X)
print(X_poly.shape)
print("原始数据第一个样本:\n {} ".format(X[0]))
print("多项式处理后第一个样本:\n{}".format(X_poly[0]))
print("PolynomialFeatures对原始数据的处理:\n{}".format(poly.get_feature_names()))


输出:

(50, 20)
原始数据第一个样本:
[4.84191851]
多项式处理后第一个样本:
[4.84191851e+00 2.34441748e+01 1.13514784e+02 5.49629333e+02
2.66126044e+03 1.28856062e+046.23910549e+04 3.02092403e+05
1.46270680e+06 7.08230711e+063.42919539e+07 1.66038846e+08
8.03946561e+08 3.89264373e+091.88478637e+10 9.12598202e+10
4.41872612e+11 2.13951118e+121.03593388e+13 5.01590740e+13]
PolynomialFeatures对原始数据的处理:
['x0','x0^2', 'x0^3', 'x0^4', 'x0^5', 'x0^6', 'x0^7', 'x0^8', 'x0^9', 'x0^10','x0^11', 'x0^12', 'x0^13', 'x0^14', 'x0^15', 'x0^16', 'x0^17', 'x0^18','x0^19', 'x0^20']


在这里:

4.84191851e+00 =4.84191851e+001

2.34441748e+01 =4.84191851e+002

1.13514784e+02 =4.84191851e+003

5.49629333e+02 =4.84191851e+004

5.01590740e+13 =4.84191851e+0020


我们用多项式处理后的数据用LinearRegression进行拟合后图形化显示。

line = np.linspace(-5,5,1000,endpoint=False).reshape(-1,1)
LNR_poly = LinearRegression().fit(X_poly,y)
line_poly =poly.transform(line)
plt.plot(line,LNR_poly.predict(line_poly),label='Line Regressor')
plt.xlim(np.min(X)-0.5,np.max(X)+0.5)
plt.ylim(np.min(y)-0.5,np.max(y)+0.5)
plt.plot(X,y,"o",c='g')
plt.legend(loc='lowerright')
plt.show()

image.png

—————————————————————————————————


软件安全测试

https://study.163.com/course/courseMain.htm?courseId=1209779852&share=2&shareId=480000002205486

接口自动化测试

https://study.163.com/course/courseMain.htm?courseId=1209794815&share=2&shareId=480000002205486

DevOps 和Jenkins之DevOps

https://study.163.com/course/courseMain.htm?courseId=1209817844&share=2&shareId=480000002205486

DevOps与Jenkins 2.0之Jenkins

https://study.163.com/course/courseMain.htm?courseId=1209819843&share=2&shareId=480000002205486

Selenium自动化测试

https://study.163.com/course/courseMain.htm?courseId=1209835807&share=2&shareId=480000002205486

性能测试第1季:性能测试基础知识

https://study.163.com/course/courseMain.htm?courseId=1209852815&share=2&shareId=480000002205486

性能测试第2季:LoadRunner12使用

https://study.163.com/course/courseMain.htm?courseId=1209980013&share=2&shareId=480000002205486

性能测试第3季:JMeter工具使用

https://study.163.com/course/courseMain.htm?courseId=1209903814&share=2&shareId=480000002205486

性能测试第4季:监控与调优

https://study.163.com/course/courseMain.htm?courseId=1209959801&share=2&shareId=480000002205486

Django入门

https://study.163.com/course/courseMain.htm?courseId=1210020806&share=2&shareId=480000002205486

啄木鸟顾老师漫谈软件测试

https://study.163.com/course/courseMain.htm?courseId=1209958326&share=2&shareId=480000002205486

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
2天前
|
机器学习/深度学习 数据采集 数据处理
谷歌提出视觉记忆方法,让大模型训练数据更灵活
谷歌研究人员提出了一种名为“视觉记忆”的方法,结合了深度神经网络的表示能力和数据库的灵活性。该方法将图像分类任务分为图像相似性和搜索两部分,支持灵活添加和删除数据、可解释的决策机制以及大规模数据处理能力。实验结果显示,该方法在多个数据集上取得了优异的性能,如在ImageNet上实现88.5%的top-1准确率。尽管有依赖预训练模型等限制,但视觉记忆为深度学习提供了新的思路。
9 2
|
28天前
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
256 2
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
28天前
|
测试技术
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
本文是关于自动化测试项目实战笔记,主要介绍了如何测试用户注册功能,包括验证码错误、注册成功以及弹框处理的测试步骤和代码实现。
79 2
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
|
28天前
|
Java 关系型数据库 MySQL
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
这篇文章是关于自动化测试项目实战笔记,涵盖了JDK、Tomcat、MySQL、Jpress环境的安装和搭建过程,以及测试用例和常见问题总结。
46 1
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
|
24天前
|
机器学习/深度学习 存储 人工智能
揭秘机器学习背后的神秘力量:如何高效收集数据,让AI更懂你?
【10月更文挑战第12天】在数据驱动的时代,机器学习广泛应用,从智能推荐到自动驾驶。本文以电商平台个性化推荐系统为例,探讨数据收集方法,包括明确数据需求、选择数据来源、编写代码自动化收集、数据清洗与预处理及特征工程,最终完成数据的训练集和测试集划分,为模型训练奠定基础。
37 3
|
24天前
|
存储 测试技术 数据库
数据驱动测试和关键词驱动测试的区别
数据驱动测试 数据驱动测试或 DDT 也被称为参数化测试。
|
24天前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
|
25天前
|
机器学习/深度学习 算法 Python
“探秘机器学习的幕后英雄:梯度下降——如何在数据的海洋中寻找那枚失落的钥匙?”
【10月更文挑战第11天】梯度下降是机器学习和深度学习中的核心优化算法,用于最小化损失函数,找到最优参数。通过计算损失函数的梯度,算法沿着负梯度方向更新参数,逐步逼近最小值。常见的变种包括批量梯度下降、随机梯度下降和小批量梯度下降,各有优缺点。示例代码展示了如何用Python和NumPy实现简单的线性回归模型训练。掌握梯度下降有助于深入理解模型优化机制。
27 2
|
28天前
|
计算机视觉
目标检测笔记(二):测试YOLOv5各模块的推理速度
这篇文章是关于如何测试YOLOv5中不同模块(如SPP和SPPF)的推理速度,并通过代码示例展示了如何进行性能分析。
73 3
|
28天前
|
人工智能 算法 测试技术
自动化测试项目实战笔记(二):解决验证码识别问题
这篇文章介绍了三种自动化测试中验证码识别的方法:使用Python的pytesseract和PIL模块、利用第三方API如万维易源,以及使用开源的ddddocr库,还提到了一些注意事项,比如如何获取验证码区域的截图。
64 2
下一篇
无影云桌面