机器学习入门
当前位置:首页 > 机器学习
机器学习入门

2022/7/21 12:52:55

机器学习入门

从战胜人类围棋高手的AlphaGo,到历史上首个获得公民身份的机器人Sophia,计算机的发展给人们的生产和生活带来了巨大的变化,尤其是具有强大算力的计算机和大量的数据集在多种算法的应用下,对各行各业的发展产生了巨大的影响,甚至很多领域都已经过通过机器代替人类工作了。在信息数据爆炸式增长的大数据时代,谁掌握了机器学习技术,谁就站在了时代的前列。

其实在很多人眼里机器学期是一个望而生畏、可望而不可即的领域。那么在这里你可以从零开始,当然前提你得会python以及数据处理,这也是为什么把这一章放在本书的最后一部分。如果你是一个机器学习的小白,那么以下建议对你有用。

你不需要什么都懂。 你可以只听过机器学习这个概念,不必知道更多的概念名词,如信息熵,特征工程等。你的目标就是完整的跟着案例操作一遍,然后看看结果。刚开始你不必什么都懂。学会机器学习中使用的各种算函数。

你不需要明白算法的原理。对于初学者,你可以对算法原理不用过多的去的去深究,以后可以循序渐进的去了解,重点关注函数调用和赋值。当然,知道机器学习算法的局限性和配置方式很重要,对算法原理的学习可以放在后头。

你也不用是个机器学习专家。你可以在本章学完后再去深入地学习每种算法的优点和局限性,而且这方面有很多资料。

本文并没有涉及机器学习项目的全部步骤,毕竟本章是带领大家入门,把机器学习的重要步骤掌握了,也就算达到了本书的目的。本书归纳的机器学习步骤如下:

?  导入数据

?  数据处理

?  训练模型

?  评估算法

?  做出预测

机器学习分类:分为监督学习,无监督学习、半监督学习、强化学习等。深度学习是机器学习的一个分支。



机器学习的一个重要库:Scikit-learnSklearn

Sklearn的基本回归方法有线性、决策树、SVMKNN,集成方法有随机森林,AdaboostGBRT

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的基本回归方法有线性、决策树、SVMKNN,集成方法有随机森林,AdaboostGBRT

余本国

海南医学院

2020年38

"""

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()

"""  

#训练和测试的x1x2数据

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()




其他的算法如线性、SVMKNN以及随机森林、AdaboostGBRT,只需替换以上代码中的导入相应的模块和实例化模型两部分即可。替换内容对应如下表:

导入模块

实例化模型

如线性

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)
#
这里使用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

吉公网安备 22020402000437号

备案号:吉ICP备2020005062号-2

关注QQ群

了解Python

实时动态