当前位置: 首页 > news >正文

雨发建设集团有限公司网站绍兴seo外包

雨发建设集团有限公司网站,绍兴seo外包,怎样自己做电影网站,织梦网站背景音乐特征编码1. 独热编码(离散变量编码) sklearn.preprocessing.OneHotEncoder1.1 原理 & 过程1.2 封装函数2. 连续变量分箱(连续变量编码) sklearn.preprocessing.KBinsDiscretizer2.1 原理2.2 等宽分箱 KBinsDiscretizer(strategyuniform)2.3 等频分箱 KBinsDiscretizer(stra…

特征编码

  • 1. 独热编码(离散变量编码) sklearn.preprocessing.OneHotEncoder
    • 1.1 原理 & 过程
    • 1.2 封装函数
  • 2. 连续变量分箱(连续变量编码) sklearn.preprocessing.KBinsDiscretizer
    • 2.1 原理
    • 2.2 等宽分箱 KBinsDiscretizer(strategy='uniform')
    • 2.3 等频分箱 KBinsDiscretizer(strategy='quantile')
    • 2.4 聚类分箱 KBinsDiscretizer(strategy='kmeans')

1. 独热编码(离散变量编码) sklearn.preprocessing.OneHotEncoder

  • 【sklearn】数据预处理 独热编码

1.1 原理 & 过程

  • 原理
'''
二分类离散变量,转换后知到一列取值已知则另一列取值也确定
OneHotEncoder(drop='if_binary') 跳过二分类,只对多分类离散变量进行转化
ID Gender     ID Gender_F Gender_M
1  F          1  1        0
2  M     >>>  2  0        1
3  M          3  0        1
4  F          4  1        0
ID Gender Income     ID Gender Income_High Income_medium Income_Low
1  F      High       1  0      1           0             0 
2  M      Medium >>> 2  1      0           1             0
3  M      High       3  1      1           0             0
4  F      Low        4  0      0           0             1
'''
  • 数据
X = pd.DataFrame({'Gender': ['F', 'M', 'M', 'F'],'Income': ['High', 'Medium', 'High', 'Low']})
X
GenderIncome
0FHigh
1MMedium
2MHigh
3FLow
  • 代码
from sklearn.preprocessing import OneHotEncoderenc = OneHotEncoder(drop='if_binary')
enc.fit_transform(X).toarray()
'''array([[0., 1., 0., 0.],[1., 0., 0., 1.],[1., 1., 0., 0.],[0., 0., 1., 0.]])
'''
# 转换规则
'''
二分类 F >>> 0,M >>> 1
多分类 第一列High,第二列Low,第三列Medium
'''
enc.categories_
'''[array(['F', 'M'], dtype=object),array(['High', 'Low', 'Medium'], dtype=object)]
'''
# 编码后命名列 原列名_字段取值
# 原始列名
cate_cols = X.columns.tolist()
cate_cols
'''['Gender', 'Income']
'''
# 新编码字段名称存储
cate_cols_new = []
# 提取独热编码后所有特征的名称
for idx, colname in enumerate(cate_cols):# 二分类离散变量if len(enc.categories_[idx]) == 2:cate_cols_new.append(colname)# 多分类离散变量else:for f in enc.categories_[idx]:feature_name = colname + '_' + fcate_cols_new.append(feature_name)
cate_cols_new
'''['Gender', 'Income_High', 'Income_Low', 'Income_Medium']
'''
# 组合成新DataFrame
pd.DataFrame(enc.fit_transform(X).toarray(),columns=cate_cols_new)
GenderIncome_HighIncome_LowIncome_Medium
00.01.00.00.0
11.00.00.01.0
21.01.00.00.0
30.00.01.00.0

1.2 封装函数

def cate_colName(Transformer, category_cols, drop='if_binary'):"""离散字段独热编码后字段名创建函数:param Transformer: 独热编码转化器:param category_cols: 原始列名:param drop: 独热编码转化器的drop参数"""# 新编码字段名称存储cate_cols_new = []col_value = Transformer.categories_# 提取独热编码后所有特征的名称for idx, colname in enumerate(cate_cols):# 二分类离散变量if (len(col_value[idx]) == 2) & (drop == 'if_binary'):cate_cols_new.append(colname)# 多分类离散变量else:for f in col_value[idx]:feature_name = colname + '_' + fcate_cols_new.append(feature_name)return (cate_cols_new)
cate_colName(enc, cate_cols)
'''['Gender', 'Income_High', 'Income_Low', 'Income_Medium']
'''

2. 连续变量分箱(连续变量编码) sklearn.preprocessing.KBinsDiscretizer

2.1 原理

'''
字段 连续型 >>> 离散型
减少异常值影响,消除特征量纲影响
对于线性模型来说引入非线性因素,提升模型表现
对于树模型来说损失连续变量信息,影响模型效果[0,30)->0 [30,60)->1 [60,inf)->2
ID Income       ID Income_Level
1  0            1  0
2  10           2  0
3  180   >>>    3  2
4  30           4  1
5  55           5  1
'''
'''
等宽分箱 uniforme 一定程度受异常值影响
等频分箱 quantile 完全忽略异常值影响
聚类分箱 kmeans 兼顾变量原始数值分布,优先考虑
'''

2.2 等宽分箱 KBinsDiscretizer(strategy=‘uniform’)

# 等宽分箱
# 根据连续变量的取值范围,划分宽度相等的区间
income = np.array([0, 10, 180, 30, 55, 35, 25, 75, 80, 10]).reshape(-1, 1)
income
'''array([[  0],[ 10],[180],[ 30],[ 55],[ 35],[ 25],[ 75],[ 80],[ 10]])
'''
from sklearn.preprocessing import KBinsDiscretizer
'''
KBinsDiscretizer转化器 (discrete离散的)n_bins 分箱个数strategy 分箱方式'uniforme' 等宽分箱'quantile' 等频分箱'kmeans' 聚类分箱encode 分箱后的离散字段进一步编码方式'ordinal' 二分类-自然数编码'onehot' 多分类-独热编码
'''dis = KBinsDiscretizer(n_bins=3, strategy='uniform', encode='ordinal')
dis.fit_transform(income)
'''array([[0.],[0.],[2.],[0.],[0.],[0.],[0.],[1.],[1.],[0.]])
'''
# 查看分箱边界
dis.bin_edges_
'''array([array([  0.,  60., 120., 180.])], dtype=object)
'''

2.3 等频分箱 KBinsDiscretizer(strategy=‘quantile’)

'''
根据分箱数和连续变量数,划分样本数量相等的区间
若样本数无法整除箱数,最后一个箱子包含余数样本(10/3 -> 3/3/4).
'''
np.sort(income.flatten(), axis=0) # 分两个箱的话会以32.5划分
'''array([  0,  10,  10,  25,  30,  35,  55,  75,  80, 180])
'''
dis = KBinsDiscretizer(n_bins=3, strategy='quantile', encode='ordinal')
dis.fit_transform(income)
'''array([[0.],[0.],[2.],[1.],[1.],[1.],[0.],[2.],[2.],[0.]])
'''
# 查看分箱边界
dis.bin_edges_
'''array([array([  0.,  25.,  55., 180.])], dtype=object)
'''

2.4 聚类分箱 KBinsDiscretizer(strategy=‘kmeans’)

# 对连续变量进行聚类(多KMeans聚类),按样本所属类别作为标记代替原始值
from sklearn import clusterkmeans = cluster.KMeans(n_clusters=3)
kmeans.fit(income)
kmeans.labels_
'''array([0, 0, 1, 0, 2, 0, 0, 2, 2, 0], dtype=int32)
'''
dis = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='kmeans')
dis.fit_transform(income) # 分类结果和上面相同但更合理,小数字更能体现收入水平低
'''array([[0.],[0.],[2.],[0.],[1.],[0.],[0.],[1.],[1.],[0.]])
'''
dis.bin_edges_
'''array([array([  0.        ,  44.16666667, 125.        , 180.        ])],dtype=object)
'''
http://www.tj-hxxt.cn/news/45303.html

相关文章:

  • 美国 做网站广州的百度推广公司
  • 渭南韩城优化网站关键词的技巧
  • 自己做网站怎么做的简述seo和sem的区别
  • 新网站该如何做网站优化呢如何创造一个自己的网站
  • 商业网站设计欣赏网店交易平台
  • 深圳知名网站建设哪家好小红书搜索关键词排名
  • 京东联盟的网站怎么做的怎么做游戏推广员
  • 通辽市 做网站站长之家源码
  • 网站建设经费南宁seo内部优化
  • 网站备案更名长沙网络优化产品
  • 做机加工的网站可以发布软文的平台
  • 做门户网站用什么软件商业软文案例
  • 网站开发浏览器兼容性长沙seo网站排名优化公司
  • 大连seo网站推广武汉seo搜索引擎
  • 上海做网站好的公司离我最近的电脑培训中心
  • 怎么免费做公司网站今天重大新闻事件
  • 网站建设一般收多少定金seo教程seo官网优化详细方法
  • 二手车网站软件建设sem竞价托管多少钱
  • 泉州网站建设方案服务360推广登录入口官网
  • 网站制作和维护费用阿里大数据平台
  • 网站 二级域名宁波网站快速优化
  • 搜索网站的设计与建设今天最新疫情情况
  • wpf可以做网站吗软文广告经典案例800字
  • 浙江省建设教育考试中心网站现在最火的推广平台有哪些
  • 网站备案主办单位错误淘宝关键词优化软件
  • wordpress 常用 代码杭州seo排名收费
  • 哈尔滨定制网站建设怎么开发一款app软件
  • 做打鱼网站深圳百度推广seo公司
  • 怎样做克隆网站杭州seo托管公司推荐
  • 学习做网站的孛校seo网站优化经理