python数据挖掘主要特点_python数据挖掘(从数据集中抽取特征)

大多数数据挖掘算法都依赖于数值或类别型特征,从数据集中抽取数值和类别型特征,并选出最佳特征。

特征可用于建模, 模型以机器挖掘算法能够理解的近似的方式来表示现实

特征选择的另一个优点在于:降低真实世界的复杂度,模型比现实更容易操纵

特征选择

scikit-learn中的VarianceThreshold转换器可用来删除特征值的方差达不到最低标准 的特征。

importnumpy as np

x= np.arange(30).reshape((10,3))#10个个体、3个特征的数据集

print(x)

x[:,1] = 1 #把所有第二列的数值都改为1

print(x)from sklearn.feature_selection importVarianceThreshold

vt= VarianceThreshold() #VarianceThreshold转换器,用它处理数据集

Xt =vt.fit_transform(x)print(Xt)#第二列消失

print(vt.variances_)#输出每一列的方差

结果:

[[ 01 2]

[3 4 5]

[6 7 8]

[9 10 11]

[12 13 14]

[15 16 17]

[18 19 20]

[21 22 23]

[24 25 26]

[27 28 29]]

[[ 01 2]

[3 1 5]

[6 1 8]

[9 1 11]

[12 1 14]

[15 1 17]

[18 1 20]

[21 1 23]

[24 1 26]

[27 1 29]]

[[ 02]

[3 5]

[6 8]

[9 11]

[12 14]

[15 17]

[18 20]

[21 23]

[24 26]

[27 29]]

[74.25 0. 74.25]

例子:用Adult数据集借助特征为复杂的现实世界建模,预测一个人是否年收入多于五万美元

importosimportpandas as pd

data_folder= os.path.join(os.getcwd(),‘Data‘,‘adult‘)

adult_filename= os.path.join(data_folder,‘adult.data.txt‘)

adult= pd.read_csv(adult_filename,header=None,

names=["Age", "Work-Class", "fnlwgt","Education", "Education-Num","Marital-Status", "Occupation","Relationship", "Race", "Sex","Capital-gain", "Capital-loss","Hours-per-week", "Native-Country","Earnings-Raw"])

adult.dropna(how=‘all‘, inplace=True) #我们需要删除包含无效数字的行(设置inplace参数为真,表示改动当前数据框,而不是新建一个)。#print(adult["Work-Class"].unique())#数据框的unique函数就能得到所有的工作情况

adult["LongHours"] = adult["Hours-per-week"] > 40 #通过离散化过程转换为类别型特征,把连续值转换为类别型特征

#测试单个特征在Adult数据集上的表现,

X = adult[["Age", "Education-Num", "Capital-gain", "Capital-loss","Hours-per-week"]].values

y= (adult["Earnings-Raw"] == ‘>50K‘).valuesfrom sklearn.feature_selection importSelectKBestfrom sklearn.feature_selection importchi2

transformer= SelectKBest(score_func=chi2, k=3) #使用SelectKBest转换器类,用卡方函数打分,初始化转换器

Xt_chi2 = transformer.fit_transform(X, y)#调用fit_transform方法,对相同的数据集进行预处理和转换

print(transformer.scores_)#每一列的相关性

from sklearn.tree importDecisionTreeClassifierfrom sklearn.cross_validation importcross_val_score

clf= DecisionTreeClassifier(random_state=14)

scores_chi2= cross_val_score(clf, Xt_chi2, y, scoring=‘accuracy‘)print(scores_chi2)

结果:

[ 8.60061182e+03 2.40142178e+03 8.21924671e+07 1.37214589e+06

6.47640900e+03]

[ 0.82577851 0.82992445 0.83009306] #正确率达到83%

创建特征

特征之间相关性很强,或者特征冗余,会增加算法处理难度。出于这个原因,创建特征。

from collections importdefaultdictimportosimportnumpy as npimportpandas as pd

data_folder= os.path.join(os.getcwd(), "Data")

data_filename= os.path.join(data_folder, "adult", "ad.data.txt")#前几个特征是数值,但是pandas会把它们当成字符串。要修复这个问题,我们需要编写将字符串转换为数字的函数,该函数能够把只包含数字的字符串转换为数字,把其余的转化为“NaN”

defconvert_number(x):try:returnfloat(x)exceptValueError:returnnp.nan

converters=defaultdict(convert_number)

converters[1558] = lambda x: 1 if x.strip() == "ad." else 0 #把类别这一列各个类别值由字符串转换为数值

for i in range(1558):#要这样定义才使得字典前面有定义

converters[i]=lambdax:convert_number(x)

ads= pd.read_csv(data_filename, header=None, converters=converters)#print(ads[:5])

ads.dropna(inplace=True)#删除空行#抽取用于分类算法的x矩阵和y数组

X = ads.drop(1558, axis=1).values

y= ads[1558]from sklearn.decomposition import PCA #主成分分析算法(Principal Component Analysis,PCA)的目的是找到能用较少信息描述数据集的特征组合,用PCA算法得到的数据创建模型,不仅能够近似地表示原始数据集,还能提升分类任务的正确率

pca = PCA(n_components=5)

Xd=pca.fit_transform(X)

np.set_printoptions(precision=3, suppress=True)print(pca.explained_variance_ratio_ )#每个特征的方差

from sklearn.tree importDecisionTreeClassifierfrom sklearn.cross_validation importcross_val_score

clf= DecisionTreeClassifier(random_state=14)

scores_reduced= cross_val_score(clf, Xd, y, scoring=‘accuracy‘)print(scores_reduced)#把PCA返回的前两个特征做成图形

from matplotlib importpyplot as plt

classes=set(y)

colors= [‘red‘, ‘green‘]for cur_class, color inzip(classes, colors):

mask= (y ==cur_class).values

plt.scatter(Xd[mask, 0], Xd[mask,1], marker=‘o‘, color=color,

label=int(cur_class))

plt.legend()

plt.show()

结果:

[0.854 0.145 0.0010. 0. ]

[0.944 0.924 0.925]

20180601221006026852.png

原文:https://www.cnblogs.com/master-song/p/9089268.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php_mysql注入load_file()IIS配置文件获取

php_mysql注入load_file()IIS配置文件获取先看一个注入点: http://www. .cn/news_detail.php?newsid-1unionselect1,2,3,4,5,6,concat(database(),0x5c,user(),0x5c,version()),8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27得到回显:fli…

layui 鼠标移入变为小手_游戏技术上不去?看看外设选对没!鼠标篇

古有“人靠衣服,马靠鞍,先看长相,再看穿”的说法,现在在游戏里也有“外设选的好,游戏输不了!”这种言论。虽然这种说法过于绝对,但是一款好的外设,确实可以增加我们胜利的概率。今天…

creator图片循环显示_江淮宣传车厂家价格 图片 配置

国六 江淮宣传车配置:整车型号:CLW5040XXCH6整车尺寸:5995*2190*2970【底盘配置】轴距:3365发动机:全柴120马力排量:2.0L轮胎:7.00R16其它:助力,空调,电动门窗,中控锁,ABS,气刹江淮康铃H5宣传车图片江淮宣传…

BZOJ 3479: [Usaco2014 Mar]Watering the Fields( MST )

MST...一开始没注意-1结果就WA了... ----------------------------------------------------------------------------#include<cstdio>#include<cstring>#include<vector>#include<cmath>#include<algorithm>#include<iostream>#define r…

python字符串格式化_Python3 字符串格式化

字符串的格式化方法分为两种&#xff0c;分别为占位符(%)和format方式。占位符方式在Python2.x中用的比较广泛&#xff0c;随着Python3.x的使用越来越广&#xff0c;format方式使用的更加广泛。 一 占位符(%)%d 实例(Python3.0)&#xff1a; age 29 print("my age is %d&…

垂直串联六关节机器人调试手册_不止下棋能赢你!新型协作机器人样样精通

重庆网络广播电视台记者 余韬2019中国国际智能产业博览会上&#xff0c;各具特色的智能制造装备和机器人纷纷亮相。其中一款能和人下象棋的机器人吸引了大批观众的目光&#xff0c;大家都抢着要跟机器人“一决高下”。“机械手上有视觉辨识系统&#xff0c;识别出放象棋的位置之…

c int转char数组_C语言 指向数组和字符串的指针

实例1我们在pointer_test.c的文件中写一个test2()函数&#xff0c;我们定义一个有3个元素的字符数组初始化值分别为&#xff0c;’A’, ’B’, ’C’&#xff0c;然后定义一个字符指针pc&#xff0c;把数组ca的首地址复制给字符指针pc,然后通过访问指针变量pc,来读取指针变量pc…

python代码画小狗_程序员教你用代码手绘一只可爱的小狗,正好拿去送给女朋友给她个惊喜...

最近经常在抖音上刷到会画画的大神给小姐姐手绘各种可爱的小动物&#xff0c;非常的哇塞哦~ 作为程序员的我那是羡慕不已啊&#xff01;我要是学会这招是不是可以尝试给我心仪很久的女神告白了&#xff1f;女神没准会很开心&#xff01;&#xff08;好吧&#xff0c;我承认我是…

如何修改emcp的sn号_百家号领域选择错误怎么办?百家号怎么更改领域?

我之前就强调过&#xff0c;做自媒体运营&#xff0c;正式开始之前&#xff0c;先做好定位&#xff0c;选好自己擅长的或者感兴趣的细分领域&#xff0c;这样才能保证以后能长期做&#xff0c;保证内容的输出量。很很多新人听说自媒体能赚钱&#xff0c;就直接进来了&#xff0…

apache根据ip分发_腾讯广告进入“IP新融点”时代

文 | 若谷广告业务增长放缓&#xff0c;会员数量持增&#xff0c;爆款内容产品难遇&#xff0c;品牌方需求升级&#xff0c;在这样现实情境下&#xff0c;传统营销模式亟待升级&#xff0c;腾讯广告就此进行了一次综合性的变革&#xff0c;以IP新融点方式进行应对这一现实挑战。…

eclipse下创建Maven项目

1.选择创建Maven项目&#xff0c;选择不适用骨架形式&#xff08;Creat a simple project&#xff09; 如图&#xff1a; 2.packing选择war的形式 如图&#xff1a; 由于packing是war形式&#xff0c;那么下面就出现了webapp的目录 3.由于我们要用eclipse把项目发布到tomcat…

git add remote_最全的git常用命令(建议收藏)

一、 Git 常用命令速查git branch 查看本地所有分支git status 查看当前状态git commit 提交git branch -a 查看所有的分支git branch -r 查看远程所有分支git commit -am "init" 提交并且加注释git remote add origin git192.168.1.119:ndshowgit push origin maste…

stm32l0的停止模式怎么唤醒_Mac外接显示器的显示模式怎么设置

不少人在使用Mac笔记本的时候都会想要为电脑外接一个大一点的显示器呢&#xff01;要知道在外接显示器中可是有着四种显示模式呢&#xff01;你知道Mac外接显示器的显示模式怎么设置吗&#xff1f;想要了解有关显示模式的各种问题么&#xff1f;快来阅读下面的这篇文章来寻找答…

Guava源码分析——Immutable Collections(4)

Immutable的集合体系&#xff0c;还有中很重要的集合没有介绍&#xff0c;就是ImmutableMap&#xff0c;通过UML图&#xff0c;可以看出ImmutableMap的结构体系。 首先来看一下ImmutableBiMap&#xff0c;因为普通ImmutableMap的实现依赖于它。ImmutableBiMap在ImmutableMap的基…

建筑电气工程设计常用图形和文字符号_怎么看懂建筑电气工程图?用最直白方式,教你基础识图!超级详细...

​如何看懂建筑电气工程图&#xff1f;我们可能知道AutoCAD&#xff0c;也可能知道在迅捷CAD图库下载建筑电气工程图纸&#xff0c;还可能会使用CAD绘制简单的图形对象。但是&#xff0c;当我们需要进行建筑识图的时候&#xff0c;你也可能连里面的经典图纸符号都不认识。如何看…

Android仿探探卡片拖拽,Vue 仿探探拖拽卡片的效果

原标题&#xff1a;Vue 仿探探拖拽卡片的效果已更新Vue3版&#xff0c;请给前端大全发送关键字vue3仿探探获取Vue3版类似 Tinder 和 探探 的卡片效果的组件&#xff0c;社区中已经非常多了。我这一版除了可以实现和他们一样的效果外。还增加了 飞卡 的效果&#xff0c;就是类似…

Codeforce 水题报告(2)

又水了一发Codeforce &#xff0c;这次继续发发题解顺便给自己PKUSC攒攒人品吧 CodeForces 438C&#xff1a;The Child and Polygon: 描述&#xff1a;给出一个多边形&#xff0c;求三角剖分的方案数&#xff08;n<200&#xff09;。 首先很明显可能是区间dp&#xff0c;我们…

textureview 旋转90度后平铺_C++初级编程NOIP题:11H1537: 图像旋转

时间限制: 1 Sec 内存限制: 128 MB题目描述输入一个n行m列的黑白图像&#xff0c;将它顺时针旋转90度后输出。输入第一行包含两个整数n和m&#xff0c;表示图像包含像素点的行数和列数。1 < n < 100&#xff0c;1 < m < 100。接下来n行&#xff0c;每行m个整数&…

qt中的qwidget如何实现自定义部件_2.3信号和槽(中)

2.3.1 在ui中编辑信号槽这一小节我们来看一下如何在ui中编辑信号槽。我们想要在ui中实现点击按钮&#xff0c;能够控制进度条的显隐。新建GUI项目SignalsAndSlots2&#xff0c;类名SignalsAndSlots2&#xff0c;基类选择QWidget。打开ui文件。在编辑界面中拖入一个Progress Bar…

html中 一条样式规则,css规则的基本格式是什么?

CSS(Cascading Styel Sheet)是控制 Web 页面外观的一系列格式设置规则,是网页设计必不可少的工具之一。下面我们就开始学习css的基本语法格式。css规则的基本格式是什么&#xff1f;层叠样式表是一个完全的纯文本文件&#xff0c;通常以“css”为扩展名作为单独的文件来使用…