您现在的位置是:主页 > news > 沈阳德泰诺网站建设公司怎么样/nba新闻最新消息
沈阳德泰诺网站建设公司怎么样/nba新闻最新消息
admin2025/6/28 13:38:25【news】
简介沈阳德泰诺网站建设公司怎么样,nba新闻最新消息,do_action wordpress,泰州模板建站代理特征工程_1 概念 1、特征工程:是一项工程活动,目的是最大限度的从数据中提取出主要特征的算法和模型使用 2、特征工程可以理解成就是数据挖掘,从海量的数据中获取主要特征,进行建模;对于一个算法,特征数据…
特征工程_1
概念
1、特征工程:是一项工程活动,目的是最大限度的从数据中提取出主要特征的算法和模型使用
2、特征工程可以理解成就是数据挖掘,从海量的数据中获取主要特征,进行建模;对于一个算法,特征数据很多(因变量),机器学习的时间就会变得很长。
3、缺失值处理:如果缺失值超过1/3,直接剔除这一个特征列。
4、字符编码:主要处理字符类型的特征数据,因为在算法中,字符类型的数据没有办法参与匀速昂–亚编码(独热编码)
用亚编码处理过的特征数据列会增多,需要过滤一遍,筛选出对我们有用的主要特征(方差过滤)
5、归一处理:解决特征数据值相差太大的问题
最值归一:有范围的数据,有头有尾,确定的上下限数据
均值方差归一:均值为0,方差为1的数据,数据是没有明显边界的,类似工资
特征工程方法
1、机器学习过程
2、特征工程
是最大限度地从原始数据中提取特征以供算法和模型使用
数据和特征决定了机器学习的上线,而模型和算法只是逼近这个上线
3、特征工程方法
数据预处理
缺失值处理(均值,众数,中位数)
字符编码数据处理-亚编码(独热编码)
归一化处理
介绍:归一化处理
例如:分数,像素点值。工资收入
模型准确率提升–模型聚合
Bagging:Bootstrap aggregating 又称装袋算法
基本思想:
Bagging使用
from sklearn.ensemble import BaggingClassifier # 分类
from sklearn.ensemble import BaggingRegressor # 回归
clf = BaggingClassifier(base_estimator=none,n_estimators=500,max_samples=1.0,max_features=1.0,bootstrap=True,bootstrap_features=False,n_jobs=1,random_state=1)
代码处理流程
"""
特征工程处理 20210728
Zgc
numpy 1.19.5
pandas 1.2.4
scipy 1.6.3
sklearn 0.0
seaborn 0.11.1
matplotlib 3.4.2
"""
import numpy as np
import pandas as pd# 1、读取数据
from scipy.stats import pearsonr
from sklearn.feature_selection import VarianceThreshold
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoderpdata = pd.read_csv("train.csv")
print("初始数据:", pdata.shape)
# 2、空值处理
shuzhi_count = 0 # 统计缺失值是数值类型的数据
count = 0 # 统计缺失值总数
char_list = []
char_name = []
for i in pdata:# 如果缺失值大于0if pdata[i].isnull().sum() > 0: # 有缺失值# 缺失值大于1/3就删掉if pdata[i].isnull().sum() > pdata.shape[0] // 3:# 超过1/3的缺失的剔除,axis = 1 表示水平方向,inplace表示原矩阵上进行操作pdata.drop(columns=i, axis=1, inplace=True)continue# 如果数据类型不符合,就考虑下面数据类型if pdata[i].dtypes == 'float64' or pdata[i].dtypes == 'int64': # 说明类型是数值类型# 有缺失值的,剩下的没有超过1/3的数据,进行一个缺失值的填充,--数值类型限制 -- 均值填充pdata[i].fillna(pdata[i].mean(), inplace=True)shuzhi_count += 1# 字符类型的数据缺失,利用众数填充elif pdata[i].dtypes == 'object': # 11列字符型数据有缺失值# 采用众数填充,先获取一下有哪一些列对应的数据,是需要进行众数填充char_list.append(pdata[i].values.reshape(-1, 1)) # 这一列的数据,转变形状,转变到列对应的数据char_name.append(pdata[i].name)count += 1print("数据处理:", pdata.shape)# 字符类型的用众数填充,将前面记录下来有缺失值的数据(字符类型)进行众数填充
for i in range(len(char_list)):# 实例化这个众数填充的算法in_most = SimpleImputer(strategy='most_frequent')# 填充,返回的是填充后的数据data = in_most.fit_transform(char_list[i])# 把原来的数据中的这一列用填充后的数据替换,修改后的数据进行替换pdata.loc[:, char_name[i]] = data# 3、字符类型数据的读热编码 -- 亚编码
# 找字符类型的列,得到列名和对应的数据 读热编码 替换
object_name = pdata.select_dtypes(include=['object']).columns.tolist()
# print(object_name, len(object_name)) # 38
# 获取对应的数据
object_data = pdata.loc[:, object_name]
# print(object_data.head(3))
# 读热编码
Hotencoder = OneHotEncoder(categories='auto')
# 处理完之后存入到我们的数组当中 -- 会新增一些列
res = Hotencoder.fit_transform(object_data).toarray()
# 获取读热编码处理完之后的特征有哪些
hotnames = Hotencoder.get_feature_names().tolist()
# 数据进行格式转换 DataFrame
onehot_df = pd.DataFrame(res, columns=hotnames)
# 怎么处理,先删除原来矩阵中的没有处理之前的38个列
pdata.drop(columns=object_name, inplace=True, axis=1)
# 合并上读热编码后的234个类
hb_df = pd.concat([onehot_df, pdata], axis=1)
# print(hb_df.shape)# 4、过滤数据,过滤对我们来说没有用的特征数据 -- 方差均值过滤
var_index = VarianceThreshold(threshold=0.1) # 过滤方差为0.1的
# 过滤方差小于0.1
var_data = var_index.fit_transform(hb_df)
# print(var_data.shape) # 剩余84列# 5、数据提纯,根据权重筛选特征:皮尔逊相关系数过滤,提取最主要的特征
# 获取剩余的84个列的索引
index = var_index.get_support(True).tolist()
# 从大矩阵中获取对应的数据
data_df = hb_df.iloc[:, index]
# 获取剩余的列名
features = data_df.columns.tolist()
feature_name = []
pear_num = [] # 保存皮尔逊相关系数的值
# 皮尔逊相关系数过滤,提取最主要的特征
for i in range(0, len(features) - 1):if abs(pearsonr(data_df[features[i]], data_df[features[-1]])[0]) > 0.5:feature_name.append(features[i]) # 保存系数大于0.5的特征名称pear_num.append(pearsonr(data_df[features[i]], data_df[features[-1]])[0])# 得到了最后的十三个主要的特征数据
# 获取最终的特征数据
res_df = data_df[feature_name]# 6、热力图显示一下剩余的主要特征之间的关系
import matplotlib.pyplot as plt
import seaborn as snpear_dict = {'features': feature_name, 'pearData': pear_num}
pear_data = pd.DataFrame(pear_dict)
# ascending=False ,排序ascending默认是从小到大
pear_data.sort_values(by=['pearData'], inplace=True, ascending=False)
pear_data.reset_index(drop=True, inplace=True)corr = np.corrcoef(data_df[feature_name].values.T)
# 热力图的准备
plt.figure(figsize=(12, 12))
sn.heatmap(corr, cbar=True, square=True, xticklabels=feature_name,yticklabels=feature_name, fmt='.2f', annot=True)
plt.show()
# 保存热力图
plt.savefig("hotreg_M.png")
数据:
热力图: