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小时内删除。
python特征工程插件_python特征工程相关推荐
- python窗体设计插件_Python 界面生成器 wxFormBuilder 的入门使用(wxPython的界面设计工具的初学笔记)...
环境,Win10,python3.7.3,wxPython 4.0.4,wxFormBuilder 3.9 1.准备一个窗体. 点击wxformbuilder上方的标签"forms" ...
- python有哪些插件_Python和它高大上的插件们
原文来自:https://my.oschina.net/iuranus/blog/356605 Python操作Excel: Python操作Excel主要依赖两个库: xlrd(用于读Excel): ...
- python调用chrome插件_Python使用Chrome插件实现爬虫过程图解
做电商时,消费者对商品的评论是很重要的,但是不会写代码怎么办?这里有个Chrome插件可以做到简单的数据爬取,一句代码都不用写.下面给大家展示部分抓取后的数据: 可以看到,抓取的地址,评论人,评论内容 ...
- python excel模板 插件_python脚本——自动推送txt,EXCEL等文件模板
#!/usr/bin/python # -*- coding: utf-8 -*- #此处支持中文字符一定要放在前两行,置后的话不生效,脚本报错 #!/usr/bin/env python impor ...
- ai python 代码提示插件_Python 还能实现哪些 AI 游戏?附上代码一起来一把!
人工智能作为当前热门在我们生活中得到了广泛应用,尤其是在智能游戏方面,有的已经达到了可以和职业选手匹敌的效果. 而DQN算法作为智能游戏的经典选择算法,其主要是通过奖励惩罚机制来迭代模型,来达到更接近 ...
- python利器app插件_python利器app
Python利器是一款专门为想自学Python的朋友而打造的学习软件,Python是一种较难学的编程语言,有了Python利器app的帮助就能减少很大的学习压力,需要的朋友快来下载体验吧! Pytho ...
- python开发ps插件_python +ps 三方面库整理
-------------------------------------------端口进程相关------------------------------------------------ cp ...
- python开发ps插件_Python实现PS滤镜中的USM锐化效果
本文用 Python 实现 PS 滤镜中的 USM 锐化效果 import matplotlib.pyplot as plt from skimage import io from skimage.f ...
- python开发ps插件_Python实现PS滤镜中马赛克效果示例
Python实现PS滤镜中马赛克效果示例 发布时间:2020-08-29 06:02:24 来源:脚本之家 阅读:93 作者:Matrix_11 本文实例讲述了Python实现PS滤镜中马赛克效果.分 ...
最新文章
- Dart Way 1
- python自学免费课堂-如何系统地自学 Python?
- 求解一个数的所有约数之积
- 记录一次postfix无法收取邮件和mysql异常不能启动
- redis在实际项目中使用实例
- 博电继保测试仪说明书_北京博电继电保护测试仪
- macbook运行移动硬盘中windows及bootcamp下载出错问题的解决
- OpenCV C++安装和配置
- 7-10 愿天下有情人都是失散多年的兄妹 (25分)
- Windbg命令学习4(d和e)
- 将简体字转换成繁体字
- Vizard基础操作
- pion:rtc-to-webrtc示例
- HTTP协议与HTTPS协议详解(含常见面试题)
- 文件及文件夹 压缩 下载
- 数字组合(算法竞赛进阶指南)
- 如何使用cocos2dx 制作一个多向滚屏坦克类射击游戏-第二部分
- PilotEdit v9.7
- java毕业设计游戏交易平台Mybatis+系统+数据库+调试部署
- 基于java的校园二手网站的设计与实现