零基础学机器学习(基于PythonScikit-learn)
机器学习
第⼀章——数据
⽬录
前⾔
随着⼈⼯智能的不断发展,机器学习这门技术也越来越重要,很多⼈都开启了学习机器学习,本⽂就介绍了机器学习的基础内容。
⼀、机器学习介绍
1.1什么是机器学习?
机器学习是⼈⼯智能的⼀个分⽀。⼈⼯智能的研究是从以“推理”为重点到以“知识”为重点,再到以“学习”为重点,⼀条⾃然、清晰的脉络。机器学习是实现⼈⼯智能的⼀个途径,即以机器学习为⼿段解决⼈⼯智能中的问题。机器学习算法是⼀类从数据中⾃动分析获得规律(模型),并利⽤规律对未知数据进⾏预测的算法。
21世纪机器学习⼜⼀次被⼈们关注,⽽这些关注的背后是因为整个环境的改变,我们的数据量越来越多,硬件越来越强悍。急需要解放⼈的⽣产⼒,⾃动去寻数据的规律。解决更多专业领域的问题。机器学习已⼴泛应⽤于数据挖掘、计算机视觉、⾃然语⾔处理、⽣物特征识别、搜索引擎、医学诊断、检测信⽤卡欺诈、证券市场分析、DNA序列测序、语⾳和⼿写识别、战略游戏和机器⼈等领域。
1.2开发机器学习应⽤程序的步骤
(1)收集数据
我们可以使⽤很多⽅法收集样本护具,如:制作⽹络爬⾍从⽹站上抽取数据、从RSS反馈或者API中得到信息、设备发送过来的实测数据。
(2)准备输⼊数据
得到数据之后,还必须确保数据格式符合要求。
(3)分析输⼊数据
这⼀步的主要作⽤是确保数据集中没有垃圾数据。如果是使⽤信任的数据来源,那么可以直接跳过这个步骤
(4)训练算法
机器学习算法从这⼀步才真正开始学习。如果使⽤⽆监督学习算法,由于不存在⽬标变量值,故⽽也不需要训练算法,所有与算法相关的内容在第(5)步
(5)测试算法
这⼀步将实际使⽤第(4)步机器学习得到的知识信息。当然在这也需要评估结果的准确率,然后根据需要重新训练你的算法
(6)使⽤算法
转化为应⽤程序,执⾏实际任务。以检验上述步骤是否可以在实际环境中正常⼯作。如果碰到新的数据问题,同样需要重复执⾏上述的步骤。
⼆、特征⼯程和⽂本特征提取
2.1数据的特征⼯程
2.1.1数据集的组成
可⽤数据集:
1. Kaggle:⼤数据竞赛平台,80万科学家,真实数据,数据量巨⼤
Kaggle ⽹址:
2. UCI:收录了360个数据集,涵盖科学、⽣活、经济等专业领域,数据量⼏⼗万
UCI⽹址:
3. scikit-learn:数据量较⼩,⽅便学习
scikit-learn⽹址:
常⽤数据集数据结构组成:
结构:特征值+⽬标值
房⼦⾯积房⼦楼层房⼦位置房⼦朝向⽬标值
数据18093080房⼦⾯积房⼦楼层房⼦位置房⼦朝向⽬标值数据2100951120
数据3801030100
注:有些数据集可以没有⽬标值
2.1.2特征⼯程的定义
从数据中抽取出来的对预测结果有⽤的信息,通过专业的技巧进⾏数据处理,使得特征能在机器学习算法中发挥更好的作⽤。优质的特征往往描述了数据的固有结构。 最初的原始特征数据集可能太⼤,或者信息冗余,因此在机器学习的应⽤中,⼀个初始步骤就是选择特征的⼦集,或构建⼀套新的特征集,减少功能来促进算法的学习,提⾼泛化能⼒和可解释性。
2.2数据的特征抽取
现实世界中多数特征都不是连续变量,⽐如分类、⽂字、图像等,为了对⾮连续变量做特征表述,需要对这些特征做数学化表述,即特征值化,因此就⽤到了特征提取. sklearn特征抽取API为sklearn.feature_extraction,提供了特征提取的很多⽅法。
2.2.1字典特征数据抽取
例⼦:将城市和环境作为字典数据,来进⾏特征的提取。
DictVectorizer.fit_transform(X)
X:字典或者包含字典的迭代器
返回值:返回sparse矩阵
DictVectorizer.inverse_transform(X)
X:array数组或者sparse矩阵
返回值:转换之前数据格式
<_feature_names()
返回类别名称
按照原先的标准转换
代码:
from sklearn.feature_extraction import DictVectorizer
def dictvec():
"""
字典数据抽取
"""
# 实例化
dict= DictVectorizer(sparse=False)
# 调⽤fit_transform
零基础自学什么好data =dict.fit_transform([{'city':'北京','temperature':100},{'city':'上海','temperature':60},{'city':'深圳','temperature':30}])
_feature_names())
print(dict.inverse_transform(data))
print(data)
return None
if __name__ =="__main__":
dictvec()
结果:
['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.]]
one-hot编码:
2.2.2⽂本特征提取以及中⽂问题
作⽤:对⽂本数据进⾏特征值化
类:sklearn.CountVectorizer
CountVectorizer(max_df=1.0,min_df=1,…)
返回词频矩阵
CountVectorizer.fit_transform(X,y)
X:⽂本或者包含⽂本字符串的可迭代对象
返回值:返回sparse矩阵
CountVectorizer.inverse_transform(X)
X:array数组或者sparse矩阵
返回值:转换之前数据格式
<_feature_names()
返回值:单词列表
代码:
from sklearn. import CountVectorizer
def countvec():
"""
对⽂本进⾏特征值化
:return: None
"""
cv = CountVectorizer()
data = cv.fit_transform(["life is short,i like python","life is too long,i dislike python"])
_feature_names())
array())
return None
if __name__ =="__main__":
countvec()
结果:
['dislike','is','life','like','long','python','short','too']
[[01110110]
[11101101]]
注:以上⽅式不⽀持单个中⽂字!需要对中⽂进⾏分词才能详细的进⾏特征值化,可以利⽤jieba库
1. 准备句⼦,利⽤jieba.cut进⾏分词
2. 实例化CountVectorizer
3. 将分词结果变成字符串当作fit_transform的输⼊值
代码:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。