机器学习—特征工程篇

数据预处理

最近开始学习用机器学习进行建模,顺便在这里记录一下自己的学习过程。
首先说一下自己的工作进度,目前已经对手里的数据清洗完毕,接下来就是找一些机器学习的模型。
任何事都要一步一步来,下面开始机器学习的第一步,做特征工程
(这里主要分享一下常用的,比较方便的代码,具体的可以根据个人的需求去数据集上使用)

1、先瞅瞅数据长啥样

train.shape   # 用来查看数据的大小,几行几列
train.info()   # 粗略看数据的基本特征(多少条记录,多少列,有哪些数据类型)
train.describe()    # 这个可以查看数据的情况(对每一列数据的数量,均值,方差等)
pd.isnull(train).values.any()  # 查看数据是否存在缺失值

一个数据里肯定有多种类型的数据,与其打开数据自己肉眼一个一个看哪一列是哪种类型,有没有更方便点的呢。
看看下面这几行代码,应该可以方便解决了

# 打印类别特征
cat_features = list(train.select_dtypes(include=['object']).columns)
print "Categorical: {} features".format(len(cat_features))

# 打印连续特征-------(这里id和label一般不会进入模型,所以打印时会排除一下)
cont_features = [cont for cont in list(train.select_dtypes(
                 include=['float64', 'int64']).columns) if cont not in ['label', 'id']]           
print "Continuous: {} features".format(len(cont_features))

2、类别特征编码

比如一列特征有多个类别,那么可以先自动的进行字典匹配,如下:

townstreets = train['街道']
townstreets_mapping = {lab: idx for idx, lab in enumerate(set(townstreets.dropna()))}
print(townstreets_mapping)

out:
{'南桥镇': 0, '半淞园街道': 1, '朱泾镇': 2, '龙华街道': 3, '车墩镇': 4, '塘外社区': 5, 
'万里街道': 6, '殷行街道': 7, '田林街道': 8, '平安社区': 9, '华阳街道': 10}

下面就可以进行map(),,,对特征进行编码

townstreets_mapping = {'南桥镇': 0, '半淞园街道': 1, '朱泾镇': 2, '龙华街道': 3, '车墩镇': 4, '塘外社区': 5, 
'万里街道': 6, '殷行街道': 7, '田林街道': 8, '平安社区': 9, '华阳街道': 10}
train['所属乡镇街道'] = train['所属乡镇街道'].map(townstreets_mapping)
train['所属乡镇街道'].unique()

out:
array([ 1,  0,  2,  3,  4,  5, 12,  6,  7,  8,  9, 10], dtype=int64)
### 关于机器学习特征工程的相关资源 在机器学习领域,特征工程是一个至关重要的环节,它直接影响到模型性能的好坏。通过精心设计和处理数据中的特征,可以显著提升模型的表现[^1]。 #### 特征工程的核心概念 特征工程涉及多个方面的工作,包括但不限于特征提取、特征选择以及特征转换等操作。这些过程通常依赖于具体的应用场景和技术背景来实现最佳效果。例如,在排序学习实践中提到的方法可以帮助理解如何构建有效的特征体系。 #### 推荐的学术论文 以下是几经典的关于特征工程技术方面的研究文章链接供下载参考: 1. **Feature Engineering for Machine Learning**: 这文章全面介绍了什么是好的特性应该具备哪些属性,并讨论了一些通用的技术手段来进行特性的创造与优化。(假设存在这样的PDF文件可供访问) 2. **A Survey on Feature Selection Methods**: 提供了一个详尽综述各种用于挑选重要变量策略的文章集合,对于希望深入了解不同方法论之间差异的研究者来说非常有价值。(同样假设有公开获取途径) 3. `Automated Feature Engineering` 的相关资料也可以作为探索自动创建新维度方向上的入门指南之一;现代工具如TPOT 或 H2O.ai 都实现了部分自动化流程从而降低了手动干预需求程度. 请注意上述文档可能需要特定平台账户权限才能完全阅览或者付费订阅服务支持下完成全文阅读体验。 ```python import requests from bs4 import BeautifulSoup def fetch_paper(url): response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') # Example of extracting a link to download the paper (this is hypothetical code) pdf_link = soup.find('a', {'class': 'download-pdf'}) if pdf_link: return pdf_link['href'] else: raise Exception("No downloadable PDF found.") # Hypothetical URL for demonstration purposes only. paper_url = "https://example.com/machine-learning-feature-engineering" try: print(fetch_paper(paper_url)) except Exception as e: print(e) ``` 此脚本片段展示了一种简单方式去尝试抓取网络上某页面内的pdf连接地址,实际应用时需调整解析逻辑适配目标网站结构特点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值