我的主业是互联网运营,业余的python爱好者,学习python已经快两年,主攻网络爬虫与数据分析,爬虫能使用代理ip、打码平台、OCR识别、基本的js逆向处理反爬;数据分析主要使用pandas与pyecharts进行可视化,我的部分案例:
但数据存在的终极意义也许并非在最后的可视化,而在于利用大数据进行预测,为运营决策提供帮助,因此萌生学习机器学习的念头,我会在此记录我学习sklearn的整个过程,用自己的理解与思路进行记录,希望能帮到和我一样的小白,也给自己做个备忘录。我会在公众号:新青年TALKS,同步更新。
机器学习简介[1]
机器学习是人工智能的一个分支。人工智能的研究历史有着一条从以“推理”为重点,到以“知识”为重点,再到以“学习”为重点的自然、清晰的脉络。显然,机器学习是实现人工智能的一个途径,即以机器学习为手段解决人工智能中的问题。机器学习在近30多年已发展为一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。很多推论问题属于无程序可循难度,所以部分的机器学习研究是开发容易处理的近似算法。
sklearn简介
scikit-learn 是基于 Python 语言的机器学习工具[2]
- 简单高效的数据挖掘和数据分析工具
- 可供大家在各种环境中重复使用
- 建立在 NumPy ,SciPy 和 matplotlib 上
- 开源,可商业使用 - BSD许可证
学习理论
- 监督学习
- 就是给机器一堆数据,并告诉它这堆数据对应的准确结果,让它学会自己分辨。
- 比如:一堆猫和狗的照片给机器,告诉它哪些是猫,哪些是狗,下次有新的图片时就能自己分辨出来。
- 就是给机器一堆数据,并告诉它这堆数据对应的准确结果,让它学会自己分辨。
- 非监督学习
- 只给数据,不给结果
- 比如:一堆猫和狗的照片给机器,不告诉他哪些是猫,哪些是狗,但它自己会分为A类和B类,下次有新照片会自动分类。
- 只给数据,不给结果
安装sklearn
pip install -U scikit-learn
sklearn官方案例(鸢尾花)
官方提供了初学者使用的鸢尾花数据,先看数据长什么样
from sklearn import datasets # 引入数据print(datasets.load_iris())# 查看数据集
主要分为两个部分,data和target,都是ndarray类型,data是特征变量,target是目标值。简单来说,data是不同鸢尾花类型的特征(花瓣长度宽度啥的),target是类型的分类,0是一类,1是一类,2是一类。所以这个案例是给机器一堆特征值,告诉它对应的目标值,然后测试学习结果。这是一种监督学习。
下面需要在整个数据集里分出训练集和测试集,sklearn有自己的方法(下面默认已经执行上面的步骤)
from sklearn.model_selection import train_test_split #将数据分为测试集和训练集
iris = datasets.load_iris() #引入iris鸢尾花数据
iris_x = iris.data #特征变量
iris_y = iris.target #目标值
x_train,x_test,y_train,y_test=train_test_split(iris_x,iris_y,test_size=0.3) #利用train_test_split进行将训练集和测试集进行分开,test_size占30%
随后建议你自己分别打印x_train(特征变量训练数据),x_test(特征变量测试数据),y_train(目标值训练数据),y_test(目标值测试数据)看下结果。
下面将训练集数据交给机器
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier() #引入训练方法,这是种分类学习方法,称为k近邻分类
knn.fit(x_train,y_train) #进行填充测试数据进行训练
因为是个入门案例,我只需要知道KNeighborsClassifier这个东西是一种训练模型,能进行分类训练,fit方法是将特征值和其对于的目标值放一起训练。其他模型或原理也许后面会学到。
经过以上步骤机器已经学会分类,下面进行测试
print(knn.predict(x_test))
查看真实目标值
print(y_test)
会发现只有一处不同。
据说弄懂这个案例就是机器学习入门了,说实话,我觉得我行了。
我已经开始学习特征工程(就是将能够影响结果的因素进行特征化,因为机器只认识数字不认识文字),特征工程是影响机器学习最终预测结果的重要因素,根据费曼学习法,我会在自认为学的差不多时再更新,找到自己的不足。
参考
- ^https://zh.wikipedia.org/wiki/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0
- ^http://scikitlearn.com.cn/