机器学习测试笔记(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进行规格选择与性能压测。
目录
相关文章
|
5天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
27 11
|
7天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
37 10
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
38 6
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
31 1
|
2月前
|
机器学习/深度学习 数据采集 人工智能
自动化测试的未来:AI与机器学习的融合之路
【10月更文挑战第41天】随着技术的快速发展,软件测试领域正经历一场由人工智能和机器学习驱动的革命。本文将探讨这一趋势如何改变测试流程、提高测试效率以及未来可能带来的挑战和机遇。我们将通过具体案例分析,揭示AI和ML在自动化测试中的应用现状及其潜力。
50 0
|
3月前
|
存储 测试技术 数据库
数据驱动测试和关键词驱动测试的区别
数据驱动测试 数据驱动测试或 DDT 也被称为参数化测试。
40 1
|
3月前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
144 1
|
2月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
119 4
|
16天前
|
算法
PAI下面的gbdt、xgboost、ps-smart 算法如何优化?
设置gbdt 、xgboost等算法的样本和特征的采样率
40 2
|
2月前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
52 1