小白带你学习机器学习基础

小白带你学习机器学习基础

机器学习的主要任务 

  • 分类:
  • 回归

大多数监督学习是通过训练和预测2个步骤,训练是需要使用训练样本,每个训练样本包含一组特征和标注,然后使用特定方式生成一个模型。预测解决,模型根据输入的特征输出一个对应的值,根据模型输出类型差异可以将监督学习分为分类和回归。

分类是机器学习中4经典的问题,

贝叶斯模型是简单的学习模型。最朴素的分类模型和最容易理解的模型是决策树模型,如一个人根据天气、温度、风况气压是否决定去钓鱼就是钓鱼的决策树。决策树比较好理解。

 定义LogisticClassfier,基于Logistic回归分类器

from numpy import *
import pickle
class LogisticClassfier:
    def __init__(self):
        weights=1.0
    #train
    def train(self):
        pass
    def predict(self,x):
        y=sum(x *  self.weights)
        prob= LogisticClassfier.sigmoid(y)
        if prob > 0.5:
            return 1.0
        return 0.0
    def dump(self,modelFileName):
        params=dict()
        params['weights']=self.weights
    #save
        model={
            'params':params,
        }
        modelFile=open(modelFileName,'wb')
        pickle.dump(model, modelFile,2)
        modelFile.close()

    def load(self,modelFileName):
        modelFile=open(modelFileName,'rb')
        model=pickle.load(modelFile)
        params=model['params']
        self.weights=params['weights']
        modelFile.close()

    @staticmethod
    def sigmoid(inX):
        return 1.0/(1+exp(-inX))

if __name__ == '__main__':
    classfier=LogisticClassfier()
    classfier.load('horse.model')
    #read
    frTest=open('data/horseColicTest.txt')
    #init
    errorCount=0
    numTestVector=0.0
    for line in frTest.readlines():
        numTestVector+=1.0
        currLine=line.strip().split('\t')
        #
        lineArr=[]
        for i in range(21):
            lineArr.append(float(currLine[i]))
        #pre
        predictResult=classfier.predict(array(lineArr))
        isHorselable=currLine[21]
        #
        if int(predictResult)!=int(isHorselable):
            errorCount+=1

    errorRate=errorCount / numTestVector
    print("错误率:%f",(float(errorRate)))

特征向量和模型的权重参数向量点乘,然后求和,计算输入线性回归函数,接着调用sigmoid函数计算激活值,如果激活概率>0.5,表示激活,返回1,如果激活概率小于等于0.5 返回0,未激活。

人工神经网络

概念:人工神经网络 (Artificial  Neural Network ANN) 是一种模仿生物神经网络的结构和功能的数学模型或者计算模型。

典型的人工神经网络的3个部分组成

1)结构

指定网络变量和他们的拓扑关系

2)激励函数

大部分神经网络模型具有一个短时间的动力学规则,来定义神经元如何根据其他神经元的活动来改变自己的激励值。

3)学习规则

学习规则指定了网络中的权重如何随着时间推进而调整。

 

猜你喜欢

转载自blog.csdn.net/keny88888/article/details/106635070