python特征工程插件_python特征工程

python特征工程

代码星球阅读(149)2020-04-04收藏0次评论

#特征工程

#1-1sklearn中进行特征选择

#筛选法-方差筛选过滤

import numpy as np

import array

from sklearn.feature_selection import VarianceThreshold

x=[[0,0,1],[0,1,0],[1,0,0],[0,1,1],[0,1,0],[0,1,1]]

sel=VarianceThreshold(threshold=(.8*(1-.8))) #第一列0的比例超过了80%,在结果里剔除这一个特征

print(sel.fit_transform(x))

#卡方检验s筛选2个最好的特征

from sklearn.datasets import load_iris

from sklearn.feature_selection import SelectKBest

from sklearn.feature_selection import chi2

from scipy.stats import pearsonr

iris=load_iris()

x,y=iris.data,iris.target

print(x.shape)

x_new=SelectKBest(chi2,k=2).fit_transform(x,y)

print(x_new.shape)

print(np.hstack([x,x_new]))

'''

#使用相关系数的方法进行特征选择

#x_new=SelectKBest(lambda X, Y: array(map(lambda x: pearsonr(x, Y),X.T)).T, k=2).fit_transform(x,y)

#print(x_new.shape)

#print(np.hstack([x,x_new]))

#基于互信息法来进行相关性的判断

from sklearn.feature_selection import SelectKBest

from minepy import MINE

# 由于MINE的设计不是函数式的,定义mic方法将其为函数式的,返回一个二元组,二元组的第2项设置成固定的P值0.5

def mic(x, y):

m = MINE()

m.compute_score(x, y)

return (m.mic(), 0.5)

# 选择K个最好的特征,返回特征选择后的数据

SelectKBest(lambda X, Y: array(map(lambda x: mic(x, Y), X.T)).T, k=2).fit_transform(iris.data, iris.target)

'''

#包装法-根据模型选择特征-递归特性消除法

#选定一些算法,根据算法在数量上的表现来进行特征集合,一般选择用的算法包括随机森林,支持向量机和k近邻算法

import matplotlib.pyplot as plt

from sklearn.svm import SVC

from sklearn.model_selection import StratifiedKFold

from sklearn.feature_selection import RFECV

from sklearn.datasets import make_classification

#创建一个虚拟分类数据集1000个样本,8个分类结果,25个特征

x,y=make_classification(n_samples=1000,n_features=25,n_informative=3,n_redundant=2,

n_repeated=0,n_classes=8,n_clusters_per_class=1,random_state=0)

svc=SVC(kernel="linear")

rfec=RFECV(estimator=svc,step=1,cv=StratifiedKFold(2),scoring="accuracy")

rfec.fit(x,y)

print("Optimal number of features: %d" % rfec.n_features_)

print(rfec.ranking_) #输出各个特征重要性序号,选择的特征是1,其他依次排序

print(rfec.support_)

plt.figure()

plt.xlabel("number of features selected")

plt.ylabel("Cross validation score(nb of correct classificaions)")

plt.plot(range(1,len(rfec.grid_scores_)+1),rfec.grid_scores_)

plt.ylim([0,1])

plt.show()

#嵌入法-基于惩罚项的特征选择方法-很少用这个方法

from sklearn.svm import LinearSVC

from sklearn.datasets import load_iris

from sklearn.feature_selection import SelectFromModel

iris=load_iris()

x,y=iris.data,iris.target

print("原来数据的特征维度为:",x.shape)

lsvc=LinearSVC(C=0.01,penalty="l1",dual=False)

lsvc.fit(x,y)

model=SelectFromModel(lsvc,prefit=True)

x_new=model.transform(x)

print("l1惩罚项处理之后的数据维度为:",x_new.shape)

#嵌入法之基于树模型的特征选择法

from sklearn.ensemble import ExtraTreesClassifier

from sklearn.datasets import load_iris

x,y=iris.data,iris.target

print("原来数据的特征维度为:",x.shape)

clf=ExtraTreesClassifier()

clf.fit(x,y)

print(clf.feature_importances_)

model=SelectFromModel(clf,prefit=True)

x_new=model.transform(x)

print("新数据维度为:",x_new.shape)

#1-2特征变换与特征提取

#ong-hot的两种方法

from sklearn.preprocessing import OneHotEncoder

from sklearn.datasets import load_iris

iris=load_iris()

print(OneHotEncoder().fit_transform(iris.target.reshape(-1,1)).toarray())

#pandas中的one-hot方法

import pandas as pd

print(pd.get_dummies(iris.target))

#特征组合和降维:主要是从业务的层面进行考虑,在单特征不能取得进一步效果时,需要对于各个原生的单特征进行进行计算组合出新的特征,特别需要业务考量,而不是随意组合

#2 招聘数据的特征工程探索

import warnings

warnings.filterwarnings("ignore")

import numpy as np

import pandas as pd

#导入数据

la=pd.read_csv("D:Byrbt2018Studypython机器学习全流程项目实战精讲配套课件第六讲 特征工程lagou_data5.csv",encoding="gbk")

print(la.head())

#advantage和label这两个特征作用不大,可以在最后剔除掉

#分类变量one-hot处理

#pandas ona-hot方法

print(pd.get_dummies(la["city"].head()))

'''

#sklearn方法

#先将文本信息进行分列编码

from sklearn.preprocessing import OneHotEncoder

from sklearn.preprocessing import LabelEncoder

la1=LabelEncoder()

la1.fit(list(la["city"].values))

la["city"]=la1.transform(list(la["city"].values))

print(la["city"].head())

#再由硬编码转变为one-hot编码

df=OneHotEncoder().fit_transform(la["city"].values.reshape(-1,1)).toarray()

print(df[:5])

'''

#对于招聘数据特征分类变量进行逐个的one-hot处理

f=["city","industry","education","position_name","size","stage","work_year"]

for i in f:

temp=pd.get_dummies(la[i])

la=pd.concat([la,temp],axis=1) #将转换的列合并

la=la.drop([i],axis=1) #删掉之前的变量

print(la.shape)

#删掉原来的特征即可

pd.options.display.max_columns=99

la=la.drop(["advantage","label","position_detail","salary"],axis=1)

print(la.shape)

print(la.head())

la1=la

#文本类信息的特征提取方法Python-Java-Excel-SQL-R等特征有误分类列

la=pd.read_csv("D:Byrbt2018StudyPython机器学习全流程项目实战精讲配套课件第六讲 特征工程lagou_data5.csv",encoding="gbk")

la=la[["position_detail","salary"]]

#提取python信息的特征列

for i,j in enumerate(la["position_detail"]):

if "python" in j:

la["position_detail"][i]=j.replace("python","Python")

la["Python"]=pd.Series()

for i, j in enumerate(la["position_detail"]):

if "Python" in j:

la["Python"][i] =1

else:

la["Python"][i] =0

print(la["Python"].head())

la["R"]=pd.Series()

for i, j in enumerate(la["position_detail"]):

if "R" in j:

la["R"][i] =1

else:

la["R"][i] =0

print(la["R"].value_counts())

for i,j in enumerate(la["position_detail"]):

if "sql" in j:

la["position_detail"][i]=j.replace("sql","SQL")

la["SQL"]=pd.Series()

for i, j in enumerate(la["position_detail"]):

if "SQL" in j:

la["SQL"][i] =1

else:

la["SQL"][i] =0

print(la["SQL"].value_counts())

la["Excel"]=pd.Series()

for i, j in enumerate(la["position_detail"]):

if "Excel" in j:

la["Excel"][i] =1

else:

la["Excel"][i] =0

print(la["Excel"].value_counts())

la["Java"]=pd.Series()

for i, j in enumerate(la["position_detail"]):

if "Java" in j:

la["Java"][i] =1

else:

la["Java"][i] =0

print(la["Java"].value_counts())

for i,j in enumerate(la["position_detail"]):

if "linux" in j:

la["position_detail"][i]=j.replace("linux","Linux")

la["Linux"]=pd.Series()

for i, j in enumerate(la["position_detail"]):

if "Linux" in j:

la["Linux"][i] =1

else:

la["Linux"][i] =0

print(la["Linux"].value_counts())

la["C++"]=pd.Series()

for i, j in enumerate(la["position_detail"]):

if "C++" in j:

la["C++"][i] =1

else:

la["C++"][i] =0

print(la["C++"].value_counts())

for i,j in enumerate(la["position_detail"]):

if "spark" in j:

la["position_detail"][i]=j.replace("spark","Spark")

la["Spark"]=pd.Series()

for i, j in enumerate(la["position_detail"]):

if "Spark" in j:

la["Spark"][i] =1

else:

la["Spark"][i] =0

print(la["Spark"].value_counts())

for i,j in enumerate(la["position_detail"]):

if "tensorflow" in j:

la["position_detail"][i]=j.replace("tensorflow","Tensorflow")

if "TensorFlow" in j:

la["position_detail"][i]=j.replace("TensorFlow","Tensorflow")

la["Tensorflow"]=pd.Series()

for i, j in enumerate(la["position_detail"]):

if "Tensorflow" in j:

la["Tensorflow"][i] =1

else:

la["Tensorflow"][i] =0

print(la["Tensorflow"].value_counts())

la=la.drop(["position_detail"],axis=1)

print(la.head())

la=pd.concat((la,la1),axis=1).reset_index(drop=True)

print(la.head())

print(la.shape)

以上就是python特征工程的全部内容。

原文链接: https://www.cnblogs.com/Yanjy-OnlyOne/p/12591085.html

版权说明:

转载请注明原文链接

本站声明:本文由用户自发上传,51dev.com仅提供信息存储空间服务。如发现本文有涉嫌侵权的内容,请提供相关证据,将于24小时内删除。

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

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

相关文章

机器学习算法概述:随机森林逻辑回归

摘要: 机器学习算法入门介绍:随机森林与逻辑回归! 随机森林是用于分类和回归的监督式集成学习模型。为了使整体性能更好,集成学习模型聚合了多个机器学习模型。因为每个模型单独使用时性能表现的不是很好,但如果放在一…

【终于等到你】7种策略解除云风险警报

戳蓝字“CSDN云计算”关注我们哦!作者 | Bruce Harpham转自 | INSIDER责编 | 阿秃云服务时代已经来临,且企业也正在积极的拥抱云技术。之前的云服务仅限于简单的存储或者联系人管理,而现在,像ERP这样的企业核心服务也开…

linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(oracle基础配置_04)

接上一篇:linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(安装依赖包_03) 创建用户 组 及文件夹 创建用户组:groupadd oinstall 创建用户组:groupadd dba 创建用户并添加到用户组:useradd -g oinst…

HTTPS时代已来,你做好准备了吗?

摘要: 全站HTTPS时代的到来,这也是最近越来越多的网站上HTTPS和更换证书的原因。那么究竟什么是HTTPS?它为什么会提升安全系数?CDN HTTPS又将如何做到安全性与性能同时提升?作为用户,又如何快速便捷的进行部…

lamp中php怎么连接mysql_LAMP分离安装环境下,php无法连接mysql的问题

LAMP 三台主机php5.6.11mysql 5.6.35apache2.4$link_idmysql_connect("192.168.1.144","mysql","mysql");if ($link_id){echo "mysql ok";}else{echo "failure...";}?>这行代码放在php主机上,在web执行页面出…

专访阿里视频云叔度:一场技术人的自我修行

摘要: 千年之后的2018年,“玄奘之路”BC连14位同伴在这段自我修行的路程中沿着大师昔日的足迹徒步前行,对极致的追求促使他们努力挑战生命的每个不可能。其中,最让人感动的是一个打着点滴行进的身影,他在遭遇右腿受伤、…

spring cloud gateway 网关_微服务网关Spring Cloud Gateway全搞定

一、微服务网关Spring Cloud Gateway1.1 导引文中内容包含:微服务网关限流10万QPS、跨域、过滤器、令牌桶算法。在构建微服务系统中,必不可少的技术就是网关了,从早期的Zuul,到现在的Spring Cloud Gateway,网关我们用的…

这个耳机一点不输千元级的AirPods

你如果问我:生活中你觉得必不可少的一件电子产品是什么?那么我会毫不犹豫的回答你:是耳机!出门忘带耳机是绝对不能忍听不听没关系,但是有它比较安心我觉得生活中不仅是我很多人都对耳机有一种依赖因为很多人都喜欢音乐…

linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(上传安装包并解压_05)

接上一篇:linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(oracle基础配置_04) 静默安装Oracle11GR2数据库上传数据库安装包并解压 按提示选择文件,添加确定;开始上传; 完成 创建一个目录存放安装…

mysql一些基本sql操作_MySql数据库的一些基本操作---------------SQL语法

MySql数据库是比较常用的关系型数据库,操作用的是sql语句,下面来说一说MySql的一些基本操作MySql数据库是一种C/S型的模式,即客户端/服务器端,对应到具体应用上,便是bin目录下的mysql.exe和mysqld.exe,mysq…

阿里云商品评价解析功能示例解析

近年来,电商发展的如火如荼,从以淘宝为首的网购零售平台再到垂直的生鲜类等电商,中国电商市场正持续较快地增长。据消息称,手机淘宝DAU在6月18日达到2.6亿的峰值,并且从去年开始,阿里电商平台推出促进消费者…

逻辑回归预测事件发生的概率_通过逻辑回归,对信用卡申请数据使用卡方分箱法预测违约率建模...

一、 建模步骤(1)从数据中衍生特征(2)对类别型变量和数值型变量进行补缺(3)基于卡方分箱法对变量进行分箱(4)WOE编码后的单变量分析与多变量分析(5)应用逻辑回归模型(6)尺度化(7)模型预测能力二、代码import pandas as pdimport datetimeimport collectionsimport numpy as npi…

深度学习文本分类在支付宝投诉文本模型上的应用

摘要: 小蚂蚁说: 随着深度学习的快速发展,以及在图像、语音领域取得的不错成果,基于深度学习的自然语言处理技术也日益受到人们的关注。计算机是怎么理解人类的语言的呢? 传统机器学习的应用,常常是利用上述…

linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(修改配置文件_06)

接上一篇:linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(上传安装包并解压_05) linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(修改配置文件) 一、修改内核文件: vim /etc/sysctl.conf…

【不吹不黑】详解容器技术架构、网络和生态

戳蓝字“CSDN云计算”关注我们哦!作者 | Hardy责编 | 阿秃谈起容器技术,不得不提Docker技术。Docker 是PaaS 提供商 DotCloud 开源的一个高级容器引擎,源代码托管在 Github 上,基于Go语言并遵从Apache2.0协议开源。Docker相当于物…

jeecg boot一对多新增的附表不会主键是一个string_测试开发专题:spring-boot如何使用JPA进行双向一对多配置...

本片文章我们主要介绍spring-boot如何进行JPA的配置以及如何进行实体间的一对多配置。 依赖准备 要在spring-boot使用jpa需要在项目中有进入相关的依赖&#xff0c;pom文件里加入下面内容 <dependency><groupId>org.springframework.boot</groupId><artif…

揭秘阿里机器翻译团队:拿下5项全球冠军,每天帮商家翻译7.5亿次

摘要&#xff1a; 跨境电商市场越来越大&#xff0c;商家们也遇到了新问题。以阿里巴巴国际站为例&#xff0c;七成买家以英语沟通&#xff0c;剩下三成的小语种&#xff0c;却难住了平台上近96%的卖家。 “翻译和本地化都做不好&#xff0c;说明你对海外市场根本不重视&#x…

IDC与浪潮联合发布2019数据及存储发展报告:中国迈入新数据时代元年

戳蓝字“CSDN云计算”关注我们哦&#xff01;企业数字化转型进程不断加速&#xff0c;物理世界与虚拟世界正在融合。当两个世界不断以数据的形式互相映射和影响的时候&#xff0c;时代将从量变积累到质变。新数据时代元年已经到来。10月18日&#xff0c;在IDC中国数字化转型年度…

linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(执行安装_07)

接上一篇&#xff1a;linux CentOS7最小化安装环境静默安装Oracle11GR2数据库&#xff08;修改配置文件_06&#xff09; 执行安装前的准备工作&#xff1a; 创建ORACLE实例前提&#xff0c;准备下面6项工作 序号说明链接①安装操作系统https://blog.csdn.net/weixin_40816738/…

e盾网络验证源码_Laravel [mews/captcha] 图片验证码

1 安装配置1.1 使用 composer 安装 [mews/captcha] 扩展composer require mews/captcha项目根目录 composer.json -> require 会新增一行(我的 laravel 版本是 5.6)"mews/captcha": "^3.0"1.2 config/app.php 添加相应代码providers>[ // ... …