机器学习概述、数据特征抽取、数据特征处理
机器学习概述
机器学习的定义
机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测
机器学习的应用场景
- 自然语言处理
- 计算机视觉
- 智能驾驶
- 系统推荐
…
机器学习常用库
- scikit-learn:1)数据量较小;2)方便学习
- Kaggle:1)大数据竞赛平台;2)80万科学家;3)真实数据;4)数据量巨大
- UCI:1)收录了360个数据集;2)覆盖科学、生活、经济等领域;3)数据量几十万
数据的特征工程
数据集数据的结构组成
结构:特征值+目标值
注:有些数据集可以没有目标值
特征工程的定义
特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的模型准确性
特征工程的意义
影响模型的预测结果
数据的特征抽取
- 特征抽取针对非连续型数据
- 特征值化是为了计算机更好的去理解数据
字典的特征抽取
- API:sklearn.feature_extraction.DictVectorizer
- 类:DictVectorizer(sparse=True,…)
- 方法:
- DictVectorizer.fit_transform(X)
X:字典或者包含字典的迭代器
返回值:返回sparse矩阵 - DictVectorizer.inverse_transform(X)
X:array数组或者sparse矩阵
返回值:转换之前数据格式 - DictVectorizer.get_feature_names()
返回类别名称
DictVectorizer.transform(X)
按照原先的标准转换
def dictvec():
"""
字典数据抽取
:return: None
"""
# 实例化
dict = DictVectorizer(sparse=False)
# 调用fit_transform
data = dict.fit_transform([{
'city': '北京','temperature': 100}, {
'city': '上海','temperature':60}, {
'city': '深圳','temperature': 30}])
print(dict.get_feature_names())
print(dict.inverse_transform(data))
print(data)
return None
输出结果:
['city=上海', 'city=北京', 'city=深圳', 'temperature']
[{
'city=北京': 1.0, 'temperature': 100.0}, {
'city=上海': 1.0, 'temperature': 60.0}, {
'city=深圳': 1.0, 'temperature': 30.0}]
[[ 0. 1. 0. 100.]
[ 1. 0. 0. 60.]
[ 0. 0. 1. 30.]]
从get_feature_names的结果中可以看出,对于文本类特征,每一种特征的字符串对应了一个类
文本特征抽取
英文文本
- API:sklearn.feature_extraction.text.CountVectorizer
- 类:CountVectorizer(max_df=1.0,min_df=1,…)
返回词频矩阵 - 方法:
- CountVectorizer.fit_transform(X,y)
X:文本或者包含文本字符串的可迭代对象
返回值:返回sparse矩阵 - CountVectorizer.inverse_transform(X)
X:array数组或者sparse矩阵
返回值:转换之前数据格式 - CountVectorizer.get_feature_names()
返回值:单词列表
def countvec():
"""
对文本进行特征值化
:return: None
"""
cv = CountVectorizer()
data = cv.fit_transform(["人生 苦短,我 喜欢 python", "人生漫长,不用 python"])
print(cv.get_feature_names())
print(data.toarray())
return None
输出结果:
['is', 'life', 'like', 'long', 'love', 'python', 'short',