机器学习测试笔记(26)——自动特征选择(下)

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 机器学习测试笔记(26)——自动特征选择(下)

2基于模型特征选择(SelectFromModel)


基于模型特征选择,使用sklearn.feature_selection.SelectFromModel类。我们用随机森林模型进行特征选择。

from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import RandomForestRegressor
Def selectFromModel():
stock =pd.read_csv('stock.csv',encoding='GBK')
y = stock['涨跌幅’]
features = stock.loc[:,'价格':'流通市值']
X = features.values
X_train, X_test, y_train,y_test = train_test_split(X, y, random_state=62)
    #预处理
scaler = StandardScaler()
scaler.fit(X_train)
X_train_scaled =scaler.transform(X_train)
X_test_scaled =scaler.transform(X_test)
sfm = SelectFromModel(estimator=RandomForestRegressor(n_estimators=100,random_state=38),threshold='median')
sfm.fit(X_train_scaled,y_train)
X_train_sfm =sfm.transform(X_train_scaled)                   
print('经过随机森林模型特征选择后的的数据形态:{}'.format(X_train_sfm.shape))
mask = sfm.get_support()
print(mask)


输出

经过随机森林模型进行特征后的的数据形态:(306, 8)
[FalseTrue False False False False True False False True True False True True True True]

image.png


27101113141516(涨跌幅、最高、成交额、换手、委比、振幅、市盈率、流通市值)数据被保留,1456781113(价格、5分钟涨跌额、今开、昨收、最高、最低、换手、委比)被抛弃。(由于threshold='median',所以也保留了50%的特征项)


#使用随机森林特征选择后数据集训练神经网络
       X_test_sfm =sfm.transform(X_test_scaled)
       mlp_sfm =MLPRegressor(random_state=62,hidden_layer_sizes=[100,200,100],alpha=0.1)
       mlp_sfm.fit(X_train_sfm,y_train)
print('经过随机森林模型特征选择后训练集得分:{:.2%}'.format(mlp_sfm.score(X_train_sfm,y_train)))
print('经过随机森林模型特征选择后测试集得分:{:.2%}'.format(mlp_sfm.score(X_test_sfm,y_test)))


输出

经过随机森林模型特征选择后训练集得分:96.75%
经过随机森林模型特征选择后测试集得分:97.31%


3迭代特征选择(RFE


特征项选择,使用sklearn.feature_selection.RFE类。

from sklearn.feature_selection import RFE
def elimination():
    stock =pd.read_csv('stock.csv',encoding='GBK')
    y = stock['涨跌幅']
    features = stock.loc[:,'价格':'流通市值']
    X = features.values
    X_train, X_test, y_train,y_test = train_test_split(X, y, random_state=62)
#预处理
    scaler = StandardScaler()
    scaler.fit(X_train)
    X_train_scaled =scaler.transform(X_train)
    X_test_scaled =scaler.transform(X_test)
    rfe = RFE(RandomForestRegressor(n_estimators=100,random_state=38),n_features_to_select=8)
   rfe.fit(X_train_scaled,y_train)
    X_train_rfe =rfe.transform(X_train_scaled)
print('经过随机森林模型进行迭代特征选择后的的数据形态:{}'.format(X_train_rfe.shape))
mask = rfe.get_support()
print(mask)
print(mask)
#用图像表示特征选择结果
  plt.matshow(mask.reshape(1,-1),cmap=plt.cm.cool)
  plt.xlabel(u"特征选择")
  plt.rcParams['font.sans-serif']=['SimHei’]
  plt.rcParams['axes.unicode_minus']=False
plt.show()


输出

经过随机森林模型进行迭代特征选择后的的数据形态:(306, 8)
[FalseTrue True False False False False False False True True True True True TrueFalse]

image.png


23101112131415(涨跌幅、涨跌额、成交额、换手、量比、委比、振幅、市盈率)数据被保留,145678916(价格、5分钟涨跌额、今开、昨收、最高、最低、成交量、流通市值)被抛弃。(由于n_features_to_select=8,所以也保留了8个的特征项)


 使用随机森林迭代特征选择后数据集训练随机森林
       X_test_rfe =rfe.transform(X_test_scaled)
       mlp_rfe =MLPRegressor(random_state=62,hidden_layer_sizes=[100,200,100],alpha=0.1)
       mlp_rfe.fit(X_train_rfe,y_train)
print('经过随机森林迭代特征选择后训练集得分:{:.2%}'.format(mlp_rfe.score(X_train_rfe,y_train)))
print('经过随机森林迭代特征选择后测试集得分:{:.2%}'.format(mlp_rfe.score(X_test_rfe,y_test)))


输出

经过随机森林迭代特征选择后训练集得分:96.64%
经过随机森林迭代特征选择后测试集得分:96.66%


4 综合


最后我们来比较一下三个特征选择的保留与舍弃项。

1价格

2涨跌幅

3涨跌额

4 5分钟涨跌额

5今开

6昨收

7最高

8最低

9成交量

10成交额

11换手

12量比

13委比

14振幅

15市盈率

16流通市值


单一变量

1

2

3

4

6

6

7

8

9

10

11

12

13

14

15

16

基于模型

1

2

3

4

6

6

7

8

9

10

11

12

13

14

15

16

迭代特征

1

2

3

4

6

6

7

8

9

10

11

12

13

14

15

16

综合

1

2

3

4

6

6

7

8

9

10

11

12

13

14

15

16


def summary():
stock =pd.read_csv('stock.csv',encoding='GBK')
y = stock['涨跌幅']
features = stock.loc[:,'价格':'流通市值']
X = features.values
clf_sp =SelectPercentile(percentile=50)
clf_sp.fit(X,y)
sp_masks =clf_sp.get_support()
clf_sfm =SelectFromModel(estimator=RandomForestRegressor(n_estimators=100,random_state=38),threshold='median')
clf_sfm.fit(X,y)
sfm_masks =clf_sfm.get_support()
clf_rfe =RFE(RandomForestRegressor(n_estimators=100,random_state=38),n_features_to_select=8)
clf_rfe.fit(X,y)
rfe_masks =clf_rfe.get_support()
merage_masks =[]
for sp_mask,sfm_mask,rfe_maskin zip(sp_masks,sfm_masks,rfe_masks):
merage = sp_maskand sfm_mask and rfe_mask
merage_masks.append(merage)    
i = 0
New_X =np.empty([X.shape[0],1])
for merage_mask in(merage_masks):
if merage_mask:
New_X = np.column_stack((X[:,i],New_X))
i = i+1
New_X=np.delete(New_X,0,1)
X_train, X_test,y_train, y_test = train_test_split(New_X, y, random_state=88)
scaler =StandardScaler()
scaler.fit(X_train)
X_train_scaled =scaler.transform(X_train)
X_test_scaled =scaler.transform(X_test)
mlp_merage =MLPRegressor(random_state=62,hidden_layer_sizes=[100,200,100],alpha=0.1)
mlp_merage.fit(X_train,y_train)
print('训练集得分:{:.2%}'.format(mlp_merage.score(X_train,y_train)))
print('测试集得分:{:.2%}'.format(mlp_merage.score(X_test,y_test)))


输出

训练集得分:36.97%
测试集得分:51.17%


合并以后结果并不理想


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


软件安全测试

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月前
|
机器学习/深度学习 计算机视觉 Python
模型预测笔记(三):通过交叉验证网格搜索机器学习的最优参数
本文介绍了网格搜索(Grid Search)在机器学习中用于优化模型超参数的方法,包括定义超参数范围、创建参数网格、选择评估指标、构建模型和交叉验证策略、执行网格搜索、选择最佳超参数组合,并使用这些参数重新训练模型。文中还讨论了GridSearchCV的参数和不同机器学习问题适用的评分指标。最后提供了使用决策树分类器进行网格搜索的Python代码示例。
107 1
|
2月前
|
机器学习/深度学习 人工智能 安全
自动化测试的未来:AI与机器学习的结合
随着技术的发展,软件测试领域正迎来一场革命。自动化测试,一度被认为是提高效率和准确性的黄金标准,如今正在被人工智能(AI)和机器学习(ML)的浪潮所推动。本文将探讨AI和ML如何改变自动化测试的面貌,提供代码示例,并展望这一趋势如何塑造软件测试的未来。我们将从基础概念出发,逐步深入到实际应用,揭示这一技术融合如何为测试工程师带来新的挑战和机遇。
70 3
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的未来:AI与机器学习的融合
【9月更文挑战第29天】在软件测试领域,自动化测试一直是提高测试效率和质量的关键。随着人工智能(AI)和机器学习(ML)技术的飞速发展,它们正逐步渗透到自动化测试中,预示着一场测试革命的来临。本文将探讨AI和ML如何重塑自动化测试的未来,通过具体案例展示这些技术如何优化测试流程,提高测试覆盖率和准确性,以及它们对测试工程师角色的影响。
96 7
|
3月前
|
机器学习/深度学习 人工智能 数据挖掘
探索自动化测试的未来:AI与机器学习的融合
【9月更文挑战第29天】在软件测试领域,自动化测试一直是提高效率和准确性的关键。但随着技术的发展,特别是人工智能(AI)和机器学习(ML)的兴起,我们见证了一个新时代的到来——自动化测试的未来正逐渐被重新定义。本文将探讨AI和ML如何改变自动化测试的面貌,从智能测试脚本的生成到测试结果的深度分析,我们将一探究竟这些前沿技术是如何使测试流程更加智能化、高效化,并预测它们将如何塑造软件测试的未来趋势。
|
3月前
|
机器学习/深度学习 人工智能 测试技术
自动化测试的未来:AI与机器学习的融合之路
【9月更文挑战第15天】在软件测试领域,自动化一直被视为提高效率和精确度的关键。随着人工智能(AI)和机器学习(ML)技术的不断进步,它们已经开始改变自动化测试的面貌。本文将探讨AI和ML如何赋能自动化测试,提升测试用例的智能生成、优化测试流程,并预测未来趋势。我们将通过实际代码示例来揭示这些技术如何被集成到现有的测试框架中,以及开发人员如何利用它们来提高软件质量。
84 15
|
3月前
|
机器学习/深度学习 Python
训练集、测试集与验证集:机器学习模型评估的基石
在机器学习中,数据集通常被划分为训练集、验证集和测试集,以评估模型性能并调整参数。训练集用于拟合模型,验证集用于调整超参数和防止过拟合,测试集则用于评估最终模型性能。本文详细介绍了这三个集合的作用,并通过代码示例展示了如何进行数据集的划分。合理的划分有助于提升模型的泛化能力。
|
4月前
|
机器学习/深度学习 人工智能 运维
自动化测试的未来:AI与机器学习的融合
【8月更文挑战第29天】随着技术的快速发展,自动化测试正在经历一场革命。本文将探讨AI和机器学习如何改变软件测试领域,提供代码示例,并讨论未来趋势。
|
24天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
68 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
2月前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)