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小时内删除。

python特征工程插件_python特征工程相关推荐

  1. python窗体设计插件_Python 界面生成器 wxFormBuilder 的入门使用(wxPython的界面设计工具的初学笔记)...

    环境,Win10,python3.7.3,wxPython 4.0.4,wxFormBuilder 3.9 1.准备一个窗体. 点击wxformbuilder上方的标签"forms" ...

  2. python有哪些插件_Python和它高大上的插件们

    原文来自:https://my.oschina.net/iuranus/blog/356605 Python操作Excel: Python操作Excel主要依赖两个库: xlrd(用于读Excel): ...

  3. python调用chrome插件_Python使用Chrome插件实现爬虫过程图解

    做电商时,消费者对商品的评论是很重要的,但是不会写代码怎么办?这里有个Chrome插件可以做到简单的数据爬取,一句代码都不用写.下面给大家展示部分抓取后的数据: 可以看到,抓取的地址,评论人,评论内容 ...

  4. python excel模板 插件_python脚本——自动推送txt,EXCEL等文件模板

    #!/usr/bin/python # -*- coding: utf-8 -*- #此处支持中文字符一定要放在前两行,置后的话不生效,脚本报错 #!/usr/bin/env python impor ...

  5. ai python 代码提示插件_Python 还能实现哪些 AI 游戏?附上代码一起来一把!

    人工智能作为当前热门在我们生活中得到了广泛应用,尤其是在智能游戏方面,有的已经达到了可以和职业选手匹敌的效果. 而DQN算法作为智能游戏的经典选择算法,其主要是通过奖励惩罚机制来迭代模型,来达到更接近 ...

  6. python利器app插件_python利器app

    Python利器是一款专门为想自学Python的朋友而打造的学习软件,Python是一种较难学的编程语言,有了Python利器app的帮助就能减少很大的学习压力,需要的朋友快来下载体验吧! Pytho ...

  7. python开发ps插件_python +ps 三方面库整理

    -------------------------------------------端口进程相关------------------------------------------------ cp ...

  8. python开发ps插件_Python实现PS滤镜中的USM锐化效果

    本文用 Python 实现 PS 滤镜中的 USM 锐化效果 import matplotlib.pyplot as plt from skimage import io from skimage.f ...

  9. python开发ps插件_Python实现PS滤镜中马赛克效果示例

    Python实现PS滤镜中马赛克效果示例 发布时间:2020-08-29 06:02:24 来源:脚本之家 阅读:93 作者:Matrix_11 本文实例讲述了Python实现PS滤镜中马赛克效果.分 ...

最新文章

  1. Dart Way 1
  2. python自学免费课堂-如何系统地自学 Python?
  3. 求解一个数的所有约数之积
  4. 记录一次postfix无法收取邮件和mysql异常不能启动
  5. redis在实际项目中使用实例
  6. 博电继保测试仪说明书_北京博电继电保护测试仪
  7. macbook运行移动硬盘中windows及bootcamp下载出错问题的解决
  8. OpenCV C++安装和配置
  9. 7-10 愿天下有情人都是失散多年的兄妹 (25分)
  10. Windbg命令学习4(d和e)
  11. 将简体字转换成繁体字
  12. Vizard基础操作
  13. pion:rtc-to-webrtc示例
  14. HTTP协议与HTTPS协议详解(含常见面试题)
  15. 文件及文件夹 压缩 下载
  16. 数字组合(算法竞赛进阶指南)
  17. 如何使用cocos2dx 制作一个多向滚屏坦克类射击游戏-第二部分
  18. PilotEdit v9.7
  19. java毕业设计游戏交易平台Mybatis+系统+数据库+调试部署
  20. 基于java的校园二手网站的设计与实现

热门文章

  1. 网络编程之如何通过URL获取网页代码
  2. OpenTSDB 开发指南之 Api操作数据
  3. 殷浩详解DDD:领域层设计规范
  4. 那些年,我在阿里当数据开发
  5. 阿里巴巴HRSSC:用宜搭实现业务管理模式创新
  6. 云端研发新基建:Serverless与持续架构服务落地实践
  7. Iceberg 在基于 Flink 的流式数据入库场景中的应用
  8. 是什么样的骚操作让应用上线节省90%的时间 1
  9. 打破行业壁垒!阿里云OpenSearch开启个性化搜索里程碑
  10. 一张图看懂阿里云网络产品[十一]云托付