从战胜人类围棋高手的AlphaGo,到历史上首个获得公民身份的机器人Sophia,计算机的发展给人们的生产和生活带来了巨大的变化,尤其是具有强大算力的计算机和大量的数据集在多种算法的应用下,对各行各业的发展产生了巨大的影响,甚至很多领域都已经过通过机器代替人类工作了。在信息数据爆炸式增长的大数据时代,谁掌握了机器学习技术,谁就站在了时代的前列。
其实在很多人眼里机器学期是一个望而生畏、可望而不可即的领域。那么在这里你可以从零开始,当然前提你得会python以及数据处理,这也是为什么把这一章放在本书的最后一部分。如果你是一个机器学习的小白,那么以下建议对你有用。
你不需要什么都懂。 你可以只听过机器学习这个概念,不必知道更多的概念名词,如信息熵,特征工程等。你的目标就是完整的跟着案例操作一遍,然后看看结果。刚开始你不必什么都懂。学会机器学习中使用的各种算函数。
你不需要明白算法的原理。对于初学者,你可以对算法原理不用过多的去的去深究,以后可以循序渐进的去了解,重点关注函数调用和赋值。当然,知道机器学习算法的局限性和配置方式很重要,对算法原理的学习可以放在后头。
你也不用是个机器学习专家。你可以在本章学完后再去深入地学习每种算法的优点和局限性,而且这方面有很多资料。
本文并没有涉及机器学习项目的全部步骤,毕竟本章是带领大家入门,把机器学习的重要步骤掌握了,也就算达到了本书的目的。本书归纳的机器学习步骤如下:
? 导入数据
? 数据处理
? 训练模型
? 评估算法
? 做出预测
机器学习分类:分为监督学习,无监督学习、半监督学习、强化学习等。深度学习是机器学习的一个分支。
机器学习的一个重要库:Scikit-learn(Sklearn)
Sklearn的基本回归方法有线性、决策树、SVM、KNN,集成方法有随机森林,Adaboost和GBRT。
Sklearn的调用非常简单,只需以下几步:
1. 实例化一个算法对象(如决策树回归算法clf =DecisionTreeRegressor())
2. 调用fit()函数就可以了(如clf.fit(train_x,train_y))
3. 使用predict()函数来预测了(result = clf.predict(test_x))
4. 使用score()函数来评估预测值和真实值的差异(score = clf.score(test_x,test_y)),函数返回一个得分.
为了方便实验,我们造好了一些训练和测试数据。现有训练数据50条,tr_x1,tr_x2,以及train_y(含有噪声);测试数据10条,te_x1,te_x2,以及对应的真值test_y。直接调用函数data()即可,输出为(train_x,train_y,test_x,test_y),调用模式:train_x,train_y,test_x,test_y= data()。
scikit-learn的调用非常简单,只需实例化一个算法对象(如决策树回归算法clf =DecisionTreeRegressor()),然后调用fit()函数就可以了(如clf.fit(train_x,train_y)),fit之后,就可以使用predict()函数来预测了(result =clf.predict(test_x)),然后可以使用score()函数来评估预测值和真实值的差异(score = clf.score(test_x,test_y)),函数返回一个得分。例如调用决策树的方法如下:
# -*- coding:utf-8 -*-
"""
Scikit-learn的基本回归方法有线性、决策树、SVM、KNN,集成方法有随机森林,Adaboost和GBRT。
余本国
海南医学院
2020年3月8日
"""
import numpy asnp
importmatplotlib.pyplot as plt
def data():
"""
造数据。
现有训练数据50条(tr_x1,tr_x2,以及train_y(含有噪声)),
测试数据10条(te_x1,te_x2,以及对应的真是test_y)
输出为: (train_x,train_y,test_x,test_y)
调用模式:train_x,train_y,test_x,test_y= data()
"""
#训练和测试的x1、x2数据
tr_x1 =np.linspace(-60,50,50)
tr_x2 =list(range(0,50))
te_x1 =np.linspace(50,60,10)
te_x2 =list(range(50,60))
#函数
y =np.sin(tr_x1)+np.exp(tr_x2)+3 #c取3
#训练数据train_y
train_x =[[x1,x2] for x1,x2 in zip(tr_x1,tr_x2)]
train_y =[y+np.random.random(1) for tr_x1,tr_x2 in zip(tr_x1,tr_x2)]
#测试数据
test_x = [[x1,x2]for x1,x2 in zip(te_x1,te_x2)]
test_y = [y forte__x1,te__x2 in zip(te_x1,te_x2)]
return(train_x,train_y,test_x,test_y)
#导入相应的模块
from sklearn.treeimport DecisionTreeRegressor
train_x,train_y,test_x,test_y=data()
#实例化模型
clf =DecisionTreeRegressor()
#训练模型
clf.fit(train_x,train_y)
result =clf.predict(test_x)
score =clf.score(test_x,test_y)
result
#根据预测值和真值来画出图像
plt.figure(figsize=(24,12))
plt.plot(np.arange(len(test_x)),test_y,'go-',label='true value')
plt.plot(np.arange(len(test_x)),result,'ro-',label='predictvalue')
plt.title('score:%f'%score)
plt.legend()
plt.show()
其他的算法如线性、SVM、KNN以及随机森林、Adaboost和GBRT,只需替换以上代码中的导入相应的模块和实例化模型两部分即可。替换内容对应如下表:
导入模块 | 实例化模型 | |
如线性 | from sklearn import linear_model | clf= linear_model.LinearRegression() |
SVM | from sklearn import svm | clf= svm.SVR() |
决策树 | from sklearn import tree | clf= tree.DecisionTreeRegressor() |
KNN | from sklearn import neighbors | clf= neighbors.KNeighborsRegressor() |
随机森林 | from sklearn import ensemble | clf= ensemble.RandomForestRegressor(n_estimators=20) |
Adaboost | from sklearn import ensemble | clf= ensemble.AdaBoostRegressor(n_estimators=50) |
GBRT | from sklearn import ensemble | clf= ensemble.GradientBoostingRegressor(n_estimators=100) |
还可以输入200个字
蝈蝈派【海南省教改项目(Hnjg2022-80)支持】 网站版权所有
Python remained the copyright of our website